IIndexableConcept::GetAt メソッド (dbgmodel.h)
GetAt メソッドは、インデックス付きオブジェクト内から特定の N 次元インデックスの値を取得します。 N 次元のインデクサー (N は GetDimensionality から返される値) をサポートする必要があります。 オブジェクトは、異なる型によって異なるドメインでインデックスを作成できる場合があることに注意してください (序数と文字列の両方を使用してインデックスを作成できます)。 インデックスが範囲外 (またはアクセスできなかった) 場合、メソッドはエラーを返します。ただし、このような場合でも、出力オブジェクトはエラー オブジェクトに設定される可能性があります。
構文
HRESULT GetAt(
IModelObject *contextObject,
ULONG64 indexerCount,
IModelObject **indexers,
_COM_Errorptr_ IModelObject **object,
IKeyStore **metadata
);
パラメーター
contextObject
インデックスが作成されているインスタンス オブジェクト (このポインター) がここで渡されます。
indexerCount
オブジェクトがインデックスを作成するディメンションの数。
indexers
インスタンス オブジェクト内のアクセス先を示すインデックスの配列 (indexerCount に従ってサイズ設定されます)。
object
指定したインデックスにある 要素の値がここで返されます。 メソッドが失敗した場合は、ここで拡張エラー情報がエラー オブジェクトとして返される可能性があります。
metadata
インデックス付き要素に関する省略可能なメタデータは、ここで返される場合があります。
戻り値
このメソッドは、成功または失敗を示す HRESULT を返します。
注釈
実装例:
// Consider that we are pairing this with the same MyObjectIterator class
// shown in the example snippet for IModelIterator::GetNext.
IFACEMETHOD(GetAt)(_In_ IModelObject *pContextObject,
_In_ ULONG64 indexerCount,
_In_reads_(indexerCount) IModelObject **ppIndexers,
_COM_Errorptr_ **ppValue,
_COM_Outptr_opt_result_maybenull_ IKeyStore **ppMetadata)
{
HRESULT hr = S_OK;
*ppValue = nullptr;
if (ppMetadata != nullptr)
{
*ppMetadata = nullptr;
}
if (indexerCount != 1)
{
return E_INVALIDARG;
}
ComPtr<IModelObject> spValue;
ULONG64 numElements;
ComPtr<IModelObject> spNumElements;
hr = pContextObject->GetKeyValue(L"NumElements", &spNumElements, nullptr));
if (SUCCEEDED(hr))
{
VARIANT vtNumElements;
hr = spNumElements->GetIntrinsicValueAs(VT_UI8, &vtNumElements));
if (SUCCEEDED(hr))
{
VARIANT vtIdx;
hr = ppIndexers[0]->GetIntrinsicValueAs(VT_UI8, &vtIdx));
if (SUCCEEDED(hr))
{
if (vtIdx.ullVal >= vtNumElements.ullVal)
{
return E_BOUNDS;
}
VARIANT vtValue;
vtValue.vt = VT_UI8;
vtValue.ullVal = vtIdx.ullVal + 10;
hr = GetManager()->CreateIntrinsicObject(ObjectIntrinsic,
&vtValue,
&spValue);
}
}
}
if (SUCCEEDED(hr))
{
*ppValue = spValue.Detach();
}
return hr;
}
要件
要件 | 値 |
---|---|
Header | dbgmodel.h |