IDebugExpressionEvaluator3:: Parse2
Converte una stringa dell'espressione in un'espressione analizzata al provider del simbolo e l'indirizzo del frame di valutazione.
HRESULT Parse2 (
LPCOLESTR upstrExpression,
PARSEFLAGS dwFlags,
UINT nRadix,
IDebugSymbolProvider* pSymbolProvider,
IDebugAddress* pAddress,
BSTR* pbstrError,
UINT* pichError,
IDebugParsedExpression** ppParsedExpression
);
HRESULT Parse2 (
string upstrExpression,
enum_PARSEFLAGS dwFlags,
uint nRadix,
IDebugSymbolProvider pSymbolProvider,
IDebugAddress pAddress,
out string pbstrError,
out uint pichError,
out IDebugParsedExpression ppParsedExpression
);
Parametri
upstrExpression
[in] La stringa di un'espressione da analizzare.dwFlags
[in] Una raccolta PARSEFLAGS di costanti che determinano quali l'espressione deve essere analizzata.nRadix
[in] Base da utilizzare per interpretare le informazioni numerica.pSymbolProvider
[in] Interfaccia provider del simbolo.pAddress
[in] L'indirizzo del frame di valutazione.pbstrError
[out] restituisce l'errore come testo leggibile.pichError
[out] Restituisce la posizione del carattere dell'inizio dell'errore nella stringa dell'espressione.ppParsedExpression
[out] restituisce l'espressione analizzata IDebugParsedExpression in un oggetto.
Valore restituito
Se l'operazione riesce, restituisce S_OK; in caso contrario, restituisce un codice di errore.
Note
Questo metodo produce un'espressione analizzata, non un valore effettivo. Un'espressione analizzata è pronta per essere valutato, ovvero, viene convertito in un valore.
Esempio
Nell'esempio seguente viene illustrato come implementare questo metodo per un oggetto di ad che espone IDebugExpressionEvaluator3 l'interfaccia.
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);
}