シンボル プロバイダーおよび評価フレームのアドレスを指定して、式の文字列を解析済みの式に変換します。
構文
HRESULT Parse2 (
string upstrExpression,
enum_PARSEFLAGS dwFlags,
uint nRadix,
IDebugSymbolProvider pSymbolProvider,
IDebugAddress pAddress,
out string pbstrError,
out uint pichError,
out IDebugParsedExpression ppParsedExpression
);
パラメーター
upstrExpression
[入力] 解析する式の文字列。
dwFlags
[入力] 式の解析方法を決定する PARSEFLAGS 定数のコレクション。
nRadix
[入力] 数値情報を解釈するために使用される基数。
pSymbolProvider
[入力] シンボル プロバイダーのインターフェイス。
pAddress
[入力] 評価フレームのアドレス。
pbstrError
[出力] エラーを人間が判読できるテキストとして返します。
pichError
[出力] 式の文字列内のエラーの先頭の文字位置を返します。
ppParsedExpression
[出力] 解析された式を IDebugParsedExpression オブジェクトで返します。
戻り値
成功した場合は、S_OK
を返します。それ以外の場合は、エラー コードを返します。
解説
このメソッドでは、実際の値ではなく、解析された式が生成されます。 解析された式を評価する (つまり、値に変換する) 準備ができました。
例
次の例は、IDebugExpressionEvaluator3 インターフェイスを公開する CEE オブジェクトに対してこのメソッドを実装する方法を示しています。
HRESULT CEE::Parse2 ( LPCOLESTR in_szExprText,
PARSEFLAGS in_FLAGS,
UINT in_RADIX,
IDebugSymbolProvider *pSymbolProvider,
IDebugAddress *pAddress,
BSTR* out_pbstrError,
UINT* inout_pichError,
IDebugParsedExpression** out_ppParsedExpression )
{
// precondition
REQUIRE( NULL != in_szExprText );
//REQUIRE( NULL != out_pbstrError );
REQUIRE( NULL != inout_pichError );
REQUIRE( NULL != out_ppParsedExpression );
if (NULL == in_szExprText)
return E_INVALIDARG;
if (NULL == inout_pichError)
return E_POINTER;
if (NULL == out_ppParsedExpression)
return E_POINTER;
if (out_pbstrError)
*out_pbstrError = NULL;
*out_ppParsedExpression = NULL;
INVARIANT( this );
if (!this->ClassInvariant())
return E_UNEXPECTED;
// function body
EEDomain::fParseExpression DomainVal =
{
this, // CEE*
in_szExprText, // LPCOLESTR
in_FLAGS, // EVALFLAGS
in_RADIX, // RADIX
out_pbstrError, // BSTR*
inout_pichError, // UINT*
pSymbolProvider,
out_ppParsedExpression // Output
};
return (*m_LanguageSpecificUseCases.pfParseExpression)(DomainVal);
}