ISpGrammarBuilder::ClearRule

Microsoft Speech SDK

The Microsoft.com Speech website Microsoft Speech SDK SAPI 5.1

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.


    HRESULT hr = S_OK;

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

    // ClearRule using hInitState
    hr = pGrammarBuilder->CreateNewState(hInit, &hState);
    hr = pGrammarBuilder->AddWordTransition(hInit, hState, L"word", NULL, SPWT_LEXICAL, 1, NULL);
    hr = pGrammarBuilder->ClearRule(hInit);
    // Check hr

    hr = pGrammarBuilder->AddWordTransition(hInit, hState, L"word", NULL, SPWT_LEXICAL, 1, NULL);
    // E_INVALIDARG because hState in no longer valid

    // ClearRule using hState != hInit
    hr = pGrammarBuilder->CreateNewState(hInit, &hState);
    hr = pGrammarBuilder->AddWordTransition(hInit, hState, L"word", NULL, SPWT_LEXICAL, 1, NULL);
    hr = pGrammarBuilder->ClearRule(hState);
    // Check hr
	
    hr = pGrammarBuilder->AddWordTransition(hInit, hState, L"word", NULL, SPWT_LEXICAL, 1, NULL);
    // E_INVALIDARG because hState in no longer valid