ISpGrammarBuilder::ClearRule (Microsoft Speech Platform)

Microsoft Speech Platform SDK 11

Microsoft Speech Platform

ISpGrammarBuilder::ClearRule

ISpGrammarBuilder::ClearRule removes all of the grammar rule information except for the rule's initial state handle.

HRESULT ClearRule(
   SPSTATEHANDLE   hState
);

Parameters

hState
[in] Handle to the any of the states in the grammar rule to be cleared. Only the rule's initial state handle is still valid.

Return values

Value Description
S_OK Function completed successfully.
E_INVALIDARG Value specified in hState is not valid.

Example

The following code snippet illustrates the use of ClearRule.


// Declare local identifiers:
HRESULT                       hr = S_OK;
CComPtr<ISpGrammarBuilder>    cpGrammarBuilder;
SPSTATEHANDLE                 hInit;
SPSTATEHANDLE                 hState;

hr = cpGrammarBuilder->GetRule(L"rule1", 1, 0, TRUE, &hInit;);

if (SUCCEEDED (hr))
{
  hr = cpGrammarBuilder->CreateNewState(hInit, &hState;);
}

if (SUCCEEDED (hr))
{
   hr = cpGrammarBuilder->AddWordTransition(hInit, hState, L"word", NULL, SPWT_LEXICAL, 1, NULL);
}

if (SUCCEEDED (hr))
{
   // Call ClearRule using initial state.
   hr = cpGrammarBuilder->ClearRule(hInit);
}

if (SUCCEEDED (hr))
{
   hr = cpGrammarBuilder->AddWordTransition(hInit, hState, L"word", NULL, SPWT_LEXICAL, 1, NULL);
}

if (FAILED (hr)) {}
{
   // Because hState is no longer valid.
   _ASSERT(hr == E_INVALIDARG);

   // Call ClearRule using hState != hInit.
   hr = cpGrammarBuilder->CreateNewState(hInit, &hState;);
}

if (SUCCEEDED (hr))
{
   hr = cpGrammarBuilder->AddWordTransition(hInit, hState, L"word", NULL, SPWT_LEXICAL, 1, NULL);
}

if (SUCCEEDED (hr))
{
   hr = cpGrammarBuilder->ClearRule(hState);
}

if (SUCCEEDED (hr))
{
   hr = cpGrammarBuilder->AddWordTransition(hInit, hState, L"word", NULL, SPWT_LEXICAL, 1, NULL);
}

if (FAILED (hr))
{
   // Because hState is no longer valid.
   _ASSERT(hr == E_INVALIDARG);
}