コード例 #1
0
// Clone
HRESULT COpcEnumString::Clone(IEnumString** ppEnum)
{
    // check for invalid arguments.
    if (ppEnum == NULL)
    {
        return E_INVALIDARG;
    }

    // allocate enumerator.
    COpcEnumString* pEnum = new COpcEnumString();
 
    // copy strings.
    pEnum->m_pStrings = OpcArrayAlloc(LPWSTR, m_uCount);

    for (UINT ii = 0; ii < m_uCount; ii++)
    {
        pEnum->m_pStrings[ii] = OpcArrayAlloc(WCHAR, wcslen(m_pStrings[ii])+1);
        wcscpy(pEnum->m_pStrings[ii], m_pStrings[ii]);
    }

    // set index.
    pEnum->m_uIndex = m_uIndex;
    pEnum->m_uCount = m_uCount;

    HRESULT hResult = pEnum->QueryInterface(IID_IEnumString, (void**)ppEnum);

    // release local reference.
    pEnum->Release();

    return hResult;
}
コード例 #2
0
// CopyData
void COpcText::CopyData(LPCWSTR szData, UINT uLength)
{
    m_cData.Empty();

    if (uLength > 0 && szData != NULL)
    {
        LPWSTR wszData = OpcArrayAlloc(WCHAR, uLength+1);
        wcsncpy(wszData, szData, uLength);
        wszData[uLength] = L'\0';
        
        m_cData = wszData;
        OpcFree(wszData);
    }
}
コード例 #3
0
ファイル: OpcUtils.cpp プロジェクト: AnBesp/UA-.NET
WCHAR* OpcStrDup(LPCWSTR szValue)
{
    WCHAR* pCopy = NULL;

    if (szValue != NULL)
    {
        pCopy = OpcArrayAlloc(WCHAR, wcslen(szValue)+1);

		if (pCopy == NULL)
		{
			return NULL;
		}

        wcscpy(pCopy, szValue);
    }

    return pCopy;
}
コード例 #4
0
ファイル: OpcUtils.cpp プロジェクト: AnBesp/UA-.NET
CHAR* OpcStrDup(LPCSTR szValue)
{
    CHAR* pCopy = NULL;

    if (szValue != NULL)
    {
        pCopy = OpcArrayAlloc(CHAR, strlen(szValue)+1);

		if (pCopy == NULL)
		{
			return NULL;
		}

        strcpy(pCopy, szValue);
    }

    return pCopy;
}