# Auto generated by createConstFile.tcl based on the type library
# of "System32/Speech/Common/sapi.dll".
#
# Copyright: 2020-2021 Paul Obermeier (obermeier@poSoft.de)
# Distributed under BSD license.

namespace eval Sapi {

    namespace ensemble create

    # Enumeration _SPAUDIOSTATE
    variable SPAS_CLOSED 0
    variable SPAS_PAUSE 2
    variable SPAS_RUN 3
    variable SPAS_STOP 1

    # Enumeration DISPID_SpeechAudio
    variable DISPID_SABufferInfo 201
    variable DISPID_SABufferNotifySize 204
    variable DISPID_SADefaultFormat 202
    variable DISPID_SAEventHandle 205
    variable DISPID_SASetState 206
    variable DISPID_SAStatus 200
    variable DISPID_SAVolume 203

    # Enumeration DISPID_SpeechAudioBufferInfo
    variable DISPID_SABIBufferSize 2
    variable DISPID_SABIEventBias 3
    variable DISPID_SABIMinNotification 1

    # Enumeration DISPID_SpeechAudioFormat
    variable DISPID_SAFGetWaveFormatEx 3
    variable DISPID_SAFGuid 2
    variable DISPID_SAFSetWaveFormatEx 4
    variable DISPID_SAFType 1

    # Enumeration DISPID_SpeechAudioStatus
    variable DISPID_SASCurrentDevicePosition 5
    variable DISPID_SASCurrentSeekPosition 4
    variable DISPID_SASFreeBufferSpace 1
    variable DISPID_SASNonBlockingIO 2
    variable DISPID_SASState 3

    # Enumeration DISPID_SpeechBaseStream
    variable DISPID_SBSFormat 1
    variable DISPID_SBSRead 2
    variable DISPID_SBSSeek 4
    variable DISPID_SBSWrite 3

    # Enumeration DISPID_SpeechCustomStream
    variable DISPID_SCSBaseStream 100

    # Enumeration DISPID_SpeechDataKey
    variable DISPID_SDKCreateKey 8
    variable DISPID_SDKDeleteKey 9
    variable DISPID_SDKDeleteValue 10
    variable DISPID_SDKEnumKeys 11
    variable DISPID_SDKEnumValues 12
    variable DISPID_SDKGetBinaryValue 2
    variable DISPID_SDKGetlongValue 6
    variable DISPID_SDKGetStringValue 4
    variable DISPID_SDKOpenKey 7
    variable DISPID_SDKSetBinaryValue 1
    variable DISPID_SDKSetLongValue 5
    variable DISPID_SDKSetStringValue 3

    # Enumeration DISPID_SpeechFileStream
    variable DISPID_SFSClose 101
    variable DISPID_SFSOpen 100

    # Enumeration DISPID_SpeechGrammarRule
    variable DISPID_SGRAddResource 6
    variable DISPID_SGRAddState 7
    variable DISPID_SGRAttributes 1
    variable DISPID_SGRClear 5
    variable DISPID_SGRId 4
    variable DISPID_SGRInitialState 2
    variable DISPID_SGRName 3

    # Enumeration DISPID_SpeechGrammarRules
    variable DISPID_SGRs_NewEnum -4
    variable DISPID_SGRsAdd 3
    variable DISPID_SGRsCommit 4
    variable DISPID_SGRsCommitAndSave 5
    variable DISPID_SGRsCount 1
    variable DISPID_SGRsDynamic 2
    variable DISPID_SGRsFindRule 6
    variable DISPID_SGRsItem 0

    # Enumeration DISPID_SpeechGrammarRuleState
    variable DISPID_SGRSAddRuleTransition 4
    variable DISPID_SGRSAddSpecialTransition 5
    variable DISPID_SGRSAddWordTransition 3
    variable DISPID_SGRSRule 1
    variable DISPID_SGRSTransitions 2

    # Enumeration DISPID_SpeechGrammarRuleStateTransition
    variable DISPID_SGRSTNextState 8
    variable DISPID_SGRSTPropertyId 6
    variable DISPID_SGRSTPropertyName 5
    variable DISPID_SGRSTPropertyValue 7
    variable DISPID_SGRSTRule 3
    variable DISPID_SGRSTText 2
    variable DISPID_SGRSTType 1
    variable DISPID_SGRSTWeight 4

    # Enumeration DISPID_SpeechGrammarRuleStateTransitions
    variable DISPID_SGRSTs_NewEnum -4
    variable DISPID_SGRSTsCount 1
    variable DISPID_SGRSTsItem 0

    # Enumeration DISPID_SpeechLexicon
    variable DISPID_SLAddPronunciation 3
    variable DISPID_SLAddPronunciationByPhoneIds 4
    variable DISPID_SLGenerationId 1
    variable DISPID_SLGetGenerationChange 8
    variable DISPID_SLGetPronunciations 7
    variable DISPID_SLGetWords 2
    variable DISPID_SLRemovePronunciation 5
    variable DISPID_SLRemovePronunciationByPhoneIds 6

    # Enumeration DISPID_SpeechLexiconProns
    variable DISPID_SLPs_NewEnum -4
    variable DISPID_SLPsCount 1
    variable DISPID_SLPsItem 0

    # Enumeration DISPID_SpeechLexiconPronunciation
    variable DISPID_SLPLangId 2
    variable DISPID_SLPPartOfSpeech 3
    variable DISPID_SLPPhoneIds 4
    variable DISPID_SLPSymbolic 5
    variable DISPID_SLPType 1

    # Enumeration DISPID_SpeechLexiconWord
    variable DISPID_SLWLangId 1
    variable DISPID_SLWPronunciations 4
    variable DISPID_SLWType 2
    variable DISPID_SLWWord 3

    # Enumeration DISPID_SpeechLexiconWords
    variable DISPID_SLWs_NewEnum -4
    variable DISPID_SLWsCount 1
    variable DISPID_SLWsItem 0

    # Enumeration DISPID_SpeechMemoryStream
    variable DISPID_SMSGetData 101
    variable DISPID_SMSSetData 100

    # Enumeration DISPID_SpeechMMSysAudio
    variable DISPID_SMSADeviceId 300
    variable DISPID_SMSALineId 301
    variable DISPID_SMSAMMHandle 302

    # Enumeration DISPID_SpeechObjectToken
    variable DISPID_SOTCategory 3
    variable DISPID_SOTCreateInstance 7
    variable DISPID_SOTDataKey 2
    variable DISPID_SOTDisplayUI 12
    variable DISPID_SOTGetAttribute 6
    variable DISPID_SOTGetDescription 4
    variable DISPID_SOTGetStorageFileName 9
    variable DISPID_SOTId 1
    variable DISPID_SOTIsUISupported 11
    variable DISPID_SOTMatchesAttributes 13
    variable DISPID_SOTRemove 8
    variable DISPID_SOTRemoveStorageFileName 10
    variable DISPID_SOTSetId 5

    # Enumeration DISPID_SpeechObjectTokenCategory
    variable DISPID_SOTCDefault 2
    variable DISPID_SOTCEnumerateTokens 5
    variable DISPID_SOTCGetDataKey 4
    variable DISPID_SOTCId 1
    variable DISPID_SOTCSetId 3

    # Enumeration DISPID_SpeechObjectTokens
    variable DISPID_SOTs_NewEnum -4
    variable DISPID_SOTsCount 1
    variable DISPID_SOTsItem 0

    # Enumeration DISPID_SpeechPhoneConverter
    variable DISPID_SPCIdToPhone 3
    variable DISPID_SPCLangId 1
    variable DISPID_SPCPhoneToId 2

    # Enumeration DISPID_SpeechPhraseAlternate
    variable DISPID_SPACommit 5
    variable DISPID_SPANumberOfElementsInResult 3
    variable DISPID_SPAPhraseInfo 4
    variable DISPID_SPARecoResult 1
    variable DISPID_SPAStartElementInResult 2

    # Enumeration DISPID_SpeechPhraseAlternates
    variable DISPID_SPAs_NewEnum -4
    variable DISPID_SPAsCount 1
    variable DISPID_SPAsItem 0

    # Enumeration DISPID_SpeechPhraseBuilder
    variable DISPID_SPPBRestorePhraseFromMemory 1

    # Enumeration DISPID_SpeechPhraseElement
    variable DISPID_SPEActualConfidence 12
    variable DISPID_SPEAudioSizeBytes 4
    variable DISPID_SPEAudioSizeTime 2
    variable DISPID_SPEAudioStreamOffset 3
    variable DISPID_SPEAudioTimeOffset 1
    variable DISPID_SPEDisplayAttributes 10
    variable DISPID_SPEDisplayText 7
    variable DISPID_SPEEngineConfidence 13
    variable DISPID_SPELexicalForm 8
    variable DISPID_SPEPronunciation 9
    variable DISPID_SPERequiredConfidence 11
    variable DISPID_SPERetainedSizeBytes 6
    variable DISPID_SPERetainedStreamOffset 5

    # Enumeration DISPID_SpeechPhraseElements
    variable DISPID_SPEs_NewEnum -4
    variable DISPID_SPEsCount 1
    variable DISPID_SPEsItem 0

    # Enumeration DISPID_SpeechPhraseInfo
    variable DISPID_SPIAudioSizeBytes 5
    variable DISPID_SPIAudioSizeTime 7
    variable DISPID_SPIAudioStreamPosition 4
    variable DISPID_SPIElements 10
    variable DISPID_SPIEngineId 12
    variable DISPID_SPIEnginePrivateData 13
    variable DISPID_SPIGetDisplayAttributes 16
    variable DISPID_SPIGetText 15
    variable DISPID_SPIGrammarId 2
    variable DISPID_SPILanguageId 1
    variable DISPID_SPIProperties 9
    variable DISPID_SPIReplacements 11
    variable DISPID_SPIRetainedSizeBytes 6
    variable DISPID_SPIRule 8
    variable DISPID_SPISaveToMemory 14
    variable DISPID_SPIStartTime 3

    # Enumeration DISPID_SpeechPhraseProperties
    variable DISPID_SPPs_NewEnum -4
    variable DISPID_SPPsCount 1
    variable DISPID_SPPsItem 0

    # Enumeration DISPID_SpeechPhraseProperty
    variable DISPID_SPPChildren 9
    variable DISPID_SPPConfidence 7
    variable DISPID_SPPEngineConfidence 6
    variable DISPID_SPPFirstElement 4
    variable DISPID_SPPId 2
    variable DISPID_SPPName 1
    variable DISPID_SPPNumberOfElements 5
    variable DISPID_SPPParent 8
    variable DISPID_SPPValue 3

    # Enumeration DISPID_SpeechPhraseReplacement
    variable DISPID_SPRDisplayAttributes 1
    variable DISPID_SPRFirstElement 3
    variable DISPID_SPRNumberOfElements 4
    variable DISPID_SPRText 2

    # Enumeration DISPID_SpeechPhraseReplacements
    variable DISPID_SPRs_NewEnum -4
    variable DISPID_SPRsCount 1
    variable DISPID_SPRsItem 0

    # Enumeration DISPID_SpeechPhraseRule
    variable DISPID_SPRuleChildren 6
    variable DISPID_SPRuleConfidence 7
    variable DISPID_SPRuleEngineConfidence 8
    variable DISPID_SPRuleFirstElement 3
    variable DISPID_SPRuleId 2
    variable DISPID_SPRuleName 1
    variable DISPID_SPRuleNumberOfElements 4
    variable DISPID_SPRuleParent 5

    # Enumeration DISPID_SpeechPhraseRules
    variable DISPID_SPRules_NewEnum -4
    variable DISPID_SPRulesCount 1
    variable DISPID_SPRulesItem 0

    # Enumeration DISPID_SpeechRecoContext
    variable DISPID_SRAllowVoiceFormatMatchingOnNextSet 5
    variable DISPID_SRCAudioInInterferenceStatus 2
    variable DISPID_SRCBookmark 16
    variable DISPID_SRCCmdMaxAlternates 8
    variable DISPID_SRCCreateGrammar 14
    variable DISPID_SRCCreateResultFromMemory 15
    variable DISPID_SRCEventInterests 7
    variable DISPID_SRCPause 12
    variable DISPID_SRCRecognizer 1
    variable DISPID_SRCRequestedUIType 3
    variable DISPID_SRCResume 13
    variable DISPID_SRCRetainedAudio 10
    variable DISPID_SRCRetainedAudioFormat 11
    variable DISPID_SRCSetAdaptationData 17
    variable DISPID_SRCState 9
    variable DISPID_SRCVoice 4
    variable DISPID_SRCVoicePurgeEvent 6

    # Enumeration DISPID_SpeechRecoContextEvents
    variable DISPID_SRCEAdaptation 15
    variable DISPID_SRCEAudioLevel 17
    variable DISPID_SRCEBookmark 3
    variable DISPID_SRCEEndStream 2
    variable DISPID_SRCEEnginePrivate 18
    variable DISPID_SRCEFalseRecognition 11
    variable DISPID_SRCEHypothesis 8
    variable DISPID_SRCEInterference 12
    variable DISPID_SRCEPhraseStart 6
    variable DISPID_SRCEPropertyNumberChange 9
    variable DISPID_SRCEPropertyStringChange 10
    variable DISPID_SRCERecognition 7
    variable DISPID_SRCERecognitionForOtherContext 16
    variable DISPID_SRCERecognizerStateChange 14
    variable DISPID_SRCERequestUI 13
    variable DISPID_SRCESoundEnd 5
    variable DISPID_SRCESoundStart 4
    variable DISPID_SRCEStartStream 1

    # Enumeration DISPID_SpeechRecognizer
    variable DISPID_SRAllowAudioInputFormatChangesOnNextSet 2
    variable DISPID_SRAudioInput 3
    variable DISPID_SRAudioInputStream 4
    variable DISPID_SRCreateRecoContext 10
    variable DISPID_SRDisplayUI 17
    variable DISPID_SREmulateRecognition 9
    variable DISPID_SRGetFormat 11
    variable DISPID_SRGetPropertyNumber 13
    variable DISPID_SRGetPropertyString 15
    variable DISPID_SRGetRecognizers 18
    variable DISPID_SRIsShared 5
    variable DISPID_SRIsUISupported 16
    variable DISPID_SRProfile 8
    variable DISPID_SRRecognizer 1
    variable DISPID_SRSetPropertyNumber 12
    variable DISPID_SRSetPropertyString 14
    variable DISPID_SRState 6
    variable DISPID_SRStatus 7
    variable DISPID_SVGetAudioInputs 19
    variable DISPID_SVGetProfiles 20

    # Enumeration DISPID_SpeechRecognizerStatus
    variable DISPID_SRSAudioStatus 1
    variable DISPID_SRSClsidEngine 5
    variable DISPID_SRSCurrentStreamNumber 3
    variable DISPID_SRSCurrentStreamPosition 2
    variable DISPID_SRSNumberOfActiveRules 4
    variable DISPID_SRSSupportedLanguages 6

    # Enumeration DISPID_SpeechRecoResult
    variable DISPID_SRRAlternates 5
    variable DISPID_SRRAudio 6
    variable DISPID_SRRAudioFormat 3
    variable DISPID_SRRDiscardResultInfo 9
    variable DISPID_SRRPhraseInfo 4
    variable DISPID_SRRRecoContext 1
    variable DISPID_SRRSaveToMemory 8
    variable DISPID_SRRSpeakAudio 7
    variable DISPID_SRRTimes 2

    # Enumeration DISPID_SpeechRecoResult2
    variable DISPID_SRRSetTextFeedback 12

    # Enumeration DISPID_SpeechRecoResultTimes
    variable DISPID_SRRTLength 2
    variable DISPID_SRRTOffsetFromStart 4
    variable DISPID_SRRTStreamTime 1
    variable DISPID_SRRTTickCount 3

    # Enumeration DISPID_SpeechVoice
    variable DISPID_SVAlertBoundary 10
    variable DISPID_SVAllowAudioOuputFormatChangesOnNextSet 7
    variable DISPID_SVAudioOutput 3
    variable DISPID_SVAudioOutputStream 4
    variable DISPID_SVDisplayUI 22
    variable DISPID_SVEventInterests 8
    variable DISPID_SVGetAudioOutputs 18
    variable DISPID_SVGetVoices 17
    variable DISPID_SVIsUISupported 21
    variable DISPID_SVPause 14
    variable DISPID_SVPriority 9
    variable DISPID_SVRate 5
    variable DISPID_SVResume 15
    variable DISPID_SVSkip 16
    variable DISPID_SVSpeak 12
    variable DISPID_SVSpeakCompleteEvent 20
    variable DISPID_SVSpeakStream 13
    variable DISPID_SVStatus 1
    variable DISPID_SVSyncronousSpeakTimeout 11
    variable DISPID_SVVoice 2
    variable DISPID_SVVolume 6
    variable DISPID_SVWaitUntilDone 19

    # Enumeration DISPID_SpeechVoiceEvent
    variable DISPID_SVEAudioLevel 9
    variable DISPID_SVEBookmark 4
    variable DISPID_SVEEnginePrivate 10
    variable DISPID_SVEPhoneme 6
    variable DISPID_SVESentenceBoundary 7
    variable DISPID_SVEStreamEnd 2
    variable DISPID_SVEStreamStart 1
    variable DISPID_SVEViseme 8
    variable DISPID_SVEVoiceChange 3
    variable DISPID_SVEWord 5

    # Enumeration DISPID_SpeechVoiceStatus
    variable DISPID_SVSCurrentStreamNumber 1
    variable DISPID_SVSInputSentenceLength 8
    variable DISPID_SVSInputSentencePosition 7
    variable DISPID_SVSInputWordLength 6
    variable DISPID_SVSInputWordPosition 5
    variable DISPID_SVSLastBookmark 9
    variable DISPID_SVSLastBookmarkId 10
    variable DISPID_SVSLastResult 3
    variable DISPID_SVSLastStreamNumberQueued 2
    variable DISPID_SVSPhonemeId 11
    variable DISPID_SVSRunningState 4
    variable DISPID_SVSVisemeId 12

    # Enumeration DISPID_SpeechWaveFormatEx
    variable DISPID_SWFEAvgBytesPerSec 4
    variable DISPID_SWFEBitsPerSample 6
    variable DISPID_SWFEBlockAlign 5
    variable DISPID_SWFEChannels 2
    variable DISPID_SWFEExtraData 7
    variable DISPID_SWFEFormatTag 1
    variable DISPID_SWFESamplesPerSec 3

    # Enumeration DISPID_SpeechXMLRecoResult
    variable DISPID_SRRGetXMLErrorInfo 11
    variable DISPID_SRRGetXMLResult 10

    # Enumeration DISPIDSPRG
    variable DISPID_SRGCmdLoadFromFile 7
    variable DISPID_SRGCmdLoadFromMemory 10
    variable DISPID_SRGCmdLoadFromObject 8
    variable DISPID_SRGCmdLoadFromProprietaryGrammar 11
    variable DISPID_SRGCmdLoadFromResource 9
    variable DISPID_SRGCmdSetRuleIdState 13
    variable DISPID_SRGCmdSetRuleState 12
    variable DISPID_SRGCommit 6
    variable DISPID_SRGDictationLoad 14
    variable DISPID_SRGDictationSetState 16
    variable DISPID_SRGDictationUnload 15
    variable DISPID_SRGId 1
    variable DISPID_SRGIsPronounceable 19
    variable DISPID_SRGRecoContext 2
    variable DISPID_SRGReset 5
    variable DISPID_SRGRules 4
    variable DISPID_SRGSetTextSelection 18
    variable DISPID_SRGSetWordSequenceData 17
    variable DISPID_SRGState 3

    # Enumeration DISPIDSPTSI
    variable DISPIDSPTSI_ActiveLength 2
    variable DISPIDSPTSI_ActiveOffset 1
    variable DISPIDSPTSI_SelectionLength 4
    variable DISPIDSPTSI_SelectionOffset 3

    # Enumeration SPADAPTATIONRELEVANCE
    variable SPAR_High 3
    variable SPAR_Low 1
    variable SPAR_Medium 2
    variable SPAR_Unknown 0

    # Enumeration SPAUDIOOPTIONS
    variable SPAO_NONE 0
    variable SPAO_RETAIN_AUDIO 1

    # Enumeration SPBOOKMARKOPTIONS
    variable SPBO_AHEAD 2
    variable SPBO_NONE 0
    variable SPBO_PAUSE 1
    variable SPBO_TIME_UNITS 4

    # Enumeration SPCATEGORYTYPE
    variable SPCT_COMMAND 0
    variable SPCT_DICTATION 1
    variable SPCT_SLEEP 2
    variable SPCT_SUB_COMMAND 3
    variable SPCT_SUB_DICTATION 4

    # Enumeration SPCONTEXTSTATE
    variable SPCS_DISABLED 0
    variable SPCS_ENABLED 1

    # Enumeration SPDATAKEYLOCATION
    variable SPDKL_CurrentConfig 5
    variable SPDKL_CurrentUser 1
    variable SPDKL_DefaultLocation 0
    variable SPDKL_LocalMachine 2

    # Enumeration SpeechAudioFormatType
    variable SAFT8kHz8BitMono 4
    variable SAFT8kHz8BitStereo 5
    variable SAFT8kHz16BitMono 6
    variable SAFT8kHz16BitStereo 7
    variable SAFT11kHz8BitMono 8
    variable SAFT11kHz8BitStereo 9
    variable SAFT11kHz16BitMono 10
    variable SAFT11kHz16BitStereo 11
    variable SAFT12kHz8BitMono 12
    variable SAFT12kHz8BitStereo 13
    variable SAFT12kHz16BitMono 14
    variable SAFT12kHz16BitStereo 15
    variable SAFT16kHz8BitMono 16
    variable SAFT16kHz8BitStereo 17
    variable SAFT16kHz16BitMono 18
    variable SAFT16kHz16BitStereo 19
    variable SAFT22kHz8BitMono 20
    variable SAFT22kHz8BitStereo 21
    variable SAFT22kHz16BitMono 22
    variable SAFT22kHz16BitStereo 23
    variable SAFT24kHz8BitMono 24
    variable SAFT24kHz8BitStereo 25
    variable SAFT24kHz16BitMono 26
    variable SAFT24kHz16BitStereo 27
    variable SAFT32kHz8BitMono 28
    variable SAFT32kHz8BitStereo 29
    variable SAFT32kHz16BitMono 30
    variable SAFT32kHz16BitStereo 31
    variable SAFT44kHz8BitMono 32
    variable SAFT44kHz8BitStereo 33
    variable SAFT44kHz16BitMono 34
    variable SAFT44kHz16BitStereo 35
    variable SAFT48kHz8BitMono 36
    variable SAFT48kHz8BitStereo 37
    variable SAFT48kHz16BitMono 38
    variable SAFT48kHz16BitStereo 39
    variable SAFTADPCM_8kHzMono 57
    variable SAFTADPCM_8kHzStereo 58
    variable SAFTADPCM_11kHzMono 59
    variable SAFTADPCM_11kHzStereo 60
    variable SAFTADPCM_22kHzMono 61
    variable SAFTADPCM_22kHzStereo 62
    variable SAFTADPCM_44kHzMono 63
    variable SAFTADPCM_44kHzStereo 64
    variable SAFTCCITT_ALaw_8kHzMono 41
    variable SAFTCCITT_ALaw_8kHzStereo 42
    variable SAFTCCITT_ALaw_11kHzMono 43
    variable SAFTCCITT_ALaw_11kHzStereo 44
    variable SAFTCCITT_ALaw_22kHzMono 45
    variable SAFTCCITT_ALaw_22kHzStereo 46
    variable SAFTCCITT_ALaw_44kHzMono 47
    variable SAFTCCITT_ALaw_44kHzStereo 48
    variable SAFTCCITT_uLaw_8kHzMono 49
    variable SAFTCCITT_uLaw_8kHzStereo 50
    variable SAFTCCITT_uLaw_11kHzMono 51
    variable SAFTCCITT_uLaw_11kHzStereo 52
    variable SAFTCCITT_uLaw_22kHzMono 53
    variable SAFTCCITT_uLaw_22kHzStereo 54
    variable SAFTCCITT_uLaw_44kHzMono 55
    variable SAFTCCITT_uLaw_44kHzStereo 56
    variable SAFTDefault -1
    variable SAFTExtendedAudioFormat 3
    variable SAFTGSM610_8kHzMono 65
    variable SAFTGSM610_11kHzMono 66
    variable SAFTGSM610_22kHzMono 67
    variable SAFTGSM610_44kHzMono 68
    variable SAFTNoAssignedFormat 0
    variable SAFTNonStandardFormat 2
    variable SAFTText 1
    variable SAFTTrueSpeech_8kHz1BitMono 40

    # Enumeration SpeechAudioState
    variable SASClosed 0
    variable SASPause 2
    variable SASRun 3
    variable SASStop 1

    # Enumeration SpeechBookmarkOptions
    variable SBONone 0
    variable SBOPause 1

    # Enumeration SpeechDataKeyLocation
    variable SDKLCurrentConfig 5
    variable SDKLCurrentUser 1
    variable SDKLDefaultLocation 0
    variable SDKLLocalMachine 2

    # Enumeration SpeechDiscardType
    variable SDTAll 255
    variable SDTAlternates 128
    variable SDTAudio 64
    variable SDTDisplayText 8
    variable SDTLexicalForm 16
    variable SDTPronunciation 32
    variable SDTProperty 1
    variable SDTReplacement 2
    variable SDTRule 4

    # Enumeration SpeechDisplayAttributes
    variable SDA_Consume_Leading_Spaces 8
    variable SDA_No_Trailing_Space 0
    variable SDA_One_Trailing_Space 2
    variable SDA_Two_Trailing_Spaces 4

    # Enumeration SpeechEmulationCompareFlags
    variable SECFDefault 196609
    variable SECFEmulateResult 1073741824
    variable SECFIgnoreCase 1
    variable SECFIgnoreKanaType 65536
    variable SECFIgnoreWidth 131072
    variable SECFNoSpecialChars 536870912

    # Enumeration SpeechEngineConfidence
    variable SECHighConfidence 1
    variable SECLowConfidence -1
    variable SECNormalConfidence 0

    # Enumeration SpeechFormatType
    variable SFTInput 0
    variable SFTSREngine 1

    # Enumeration SpeechGrammarRuleStateTransitionType
    variable SGRSTTDictation 3
    variable SGRSTTEpsilon 0
    variable SGRSTTRule 2
    variable SGRSTTTextBuffer 5
    variable SGRSTTWildcard 4
    variable SGRSTTWord 1

    # Enumeration SpeechGrammarState
    variable SGSDisabled 0
    variable SGSEnabled 1
    variable SGSExclusive 3

    # Enumeration SpeechGrammarWordType
    variable SGDisplay 0
    variable SGLexical 1
    variable SGLexicalNoSpecialChars 3
    variable SGPronounciation 2

    # Enumeration SpeechInterference
    variable SINoise 1
    variable SINone 0
    variable SINoSignal 2
    variable SITooFast 5
    variable SITooLoud 3
    variable SITooQuiet 4
    variable SITooSlow 6

    # Enumeration SpeechLexiconType
    variable SLTApp 2
    variable SLTUser 1

    # Enumeration SpeechLoadOption
    variable SLODynamic 1
    variable SLOStatic 0

    # Enumeration SpeechPartOfSpeech
    variable SPSFunction 16384
    variable SPSInterjection 20480
    variable SPSLMA 28672
    variable SPSModifier 12288
    variable SPSNotOverriden -1
    variable SPSNoun 4096
    variable SPSSuppressWord 61440
    variable SPSUnknown 0
    variable SPSVerb 8192

    # Enumeration SpeechRecoContextState
    variable SRCS_Disabled 0
    variable SRCS_Enabled 1

    # Enumeration SpeechRecoEvents
    variable SREAdaptation 8192
    variable SREAllEvents 393215
    variable SREAudioLevel 65536
    variable SREBookmark 64
    variable SREFalseRecognition 512
    variable SREHypothesis 32
    variable SREInterference 1024
    variable SREPhraseStart 8
    variable SREPrivate 262144
    variable SREPropertyNumChange 128
    variable SREPropertyStringChange 256
    variable SRERecognition 16
    variable SRERecoOtherContext 32768
    variable SRERequestUI 2048
    variable SRESoundEnd 4
    variable SRESoundStart 2
    variable SREStateChange 4096
    variable SREStreamEnd 1
    variable SREStreamStart 16384

    # Enumeration SpeechRecognitionType
    variable SRTAutopause 1
    variable SRTEmulated 2
    variable SRTExtendableParse 8
    variable SRTReSent 16
    variable SRTSMLTimeout 4
    variable SRTStandard 0

    # Enumeration SpeechRecognizerState
    variable SRSActive 1
    variable SRSActiveAlways 2
    variable SRSInactive 0
    variable SRSInactiveWithPurge 3

    # Enumeration SpeechRetainedAudioOptions
    variable SRAONone 0
    variable SRAORetainAudio 1

    # Enumeration SpeechRuleAttributes
    variable SRADefaultToActive 2
    variable SRADynamic 32
    variable SRAExport 4
    variable SRAImport 8
    variable SRAInterpreter 16
    variable SRARoot 64
    variable SRATopLevel 1

    # Enumeration SpeechRuleState
    variable SGDSActive 1
    variable SGDSActiveUserDelimited 4
    variable SGDSActiveWithAutoPause 3
    variable SGDSInactive 0

    # Enumeration SpeechRunState
    variable SRSEDone 1
    variable SRSEIsSpeaking 2

    # Enumeration SpeechSpecialTransitionType
    variable SSTTDictation 2
    variable SSTTTextBuffer 3
    variable SSTTWildcard 1

    # Enumeration SpeechStreamFileMode
    variable SSFMCreate 2
    variable SSFMCreateForWrite 3
    variable SSFMOpenForRead 0
    variable SSFMOpenReadWrite 1

    # Enumeration SpeechStreamSeekPositionType
    variable SSSPTRelativeToCurrentPosition 1
    variable SSSPTRelativeToEnd 2
    variable SSSPTRelativeToStart 0

    # Enumeration SpeechTokenContext
    variable STCAll 23
    variable STCInprocHandler 2
    variable STCInprocServer 1
    variable STCLocalServer 4
    variable STCRemoteServer 16

    # Enumeration SpeechTokenShellFolder
    variable STSF_AppData 26
    variable STSF_CommonAppData 35
    variable STSF_FlagCreate 32768
    variable STSF_LocalAppData 28

    # Enumeration SpeechVisemeFeature
    variable SVF_Emphasis 2
    variable SVF_None 0
    variable SVF_Stressed 1

    # Enumeration SpeechVisemeType
    variable SVP_0 0
    variable SVP_1 1
    variable SVP_2 2
    variable SVP_3 3
    variable SVP_4 4
    variable SVP_5 5
    variable SVP_6 6
    variable SVP_7 7
    variable SVP_8 8
    variable SVP_9 9
    variable SVP_10 10
    variable SVP_11 11
    variable SVP_12 12
    variable SVP_13 13
    variable SVP_14 14
    variable SVP_15 15
    variable SVP_16 16
    variable SVP_17 17
    variable SVP_18 18
    variable SVP_19 19
    variable SVP_20 20
    variable SVP_21 21

    # Enumeration SpeechVoiceEvents
    variable SVEAllEvents 33790
    variable SVEAudioLevel 512
    variable SVEBookmark 16
    variable SVEEndInputStream 4
    variable SVEPhoneme 64
    variable SVEPrivate 32768
    variable SVESentenceBoundary 128
    variable SVEStartInputStream 2
    variable SVEViseme 256
    variable SVEVoiceChange 8
    variable SVEWordBoundary 32

    # Enumeration SpeechVoicePriority
    variable SVPAlert 1
    variable SVPNormal 0
    variable SVPOver 2

    # Enumeration SpeechVoiceSpeakFlags
    variable SVSFDefault 0
    variable SVSFIsFilename 4
    variable SVSFIsNotXML 16
    variable SVSFIsXML 8
    variable SVSFlagsAsync 1
    variable SVSFNLPMask 64
    variable SVSFNLPSpeakPunc 64
    variable SVSFParseAutodetect 0
    variable SVSFParseMask 384
    variable SVSFParseSapi 128
    variable SVSFParseSsml 256
    variable SVSFPersistXML 32
    variable SVSFPurgeBeforeSpeak 2
    variable SVSFUnusedFlags -512
    variable SVSFVoiceMask 511

    # Enumeration SpeechWordPronounceable
    variable SWPKnownWordPronounceable 2
    variable SWPUnknownWordPronounceable 1
    variable SWPUnknownWordUnpronounceable 0

    # Enumeration SpeechWordType
    variable SWTAdded 1
    variable SWTDeleted 2

    # Enumeration SPEVENTENUM
    variable SPEI_ACTIVE_CATEGORY_CHANGED 53
    variable SPEI_ADAPTATION 47
    variable SPEI_END_INPUT_STREAM 2
    variable SPEI_END_SR_STREAM 34
    variable SPEI_FALSE_RECOGNITION 43
    variable SPEI_HYPOTHESIS 39
    variable SPEI_INTERFERENCE 44
    variable SPEI_MAX_SR 55
    variable SPEI_MAX_TTS 15
    variable SPEI_MIN_SR 34
    variable SPEI_MIN_TTS 1
    variable SPEI_PHONEME 6
    variable SPEI_PHRASE_START 37
    variable SPEI_PROPERTY_NUM_CHANGE 41
    variable SPEI_PROPERTY_STRING_CHANGE 42
    variable SPEI_RECO_OTHER_CONTEXT 49
    variable SPEI_RECO_STATE_CHANGE 46
    variable SPEI_RECOGNITION 38
    variable SPEI_REQUEST_UI 45
    variable SPEI_RESERVED1 30
    variable SPEI_RESERVED2 33
    variable SPEI_RESERVED3 63
    variable SPEI_RESERVED5 54
    variable SPEI_RESERVED6 55
    variable SPEI_SENTENCE_BOUNDARY 7
    variable SPEI_SOUND_END 36
    variable SPEI_SOUND_START 35
    variable SPEI_SR_AUDIO_LEVEL 50
    variable SPEI_SR_BOOKMARK 40
    variable SPEI_SR_PRIVATE 52
    variable SPEI_SR_RETAINEDAUDIO 51
    variable SPEI_START_INPUT_STREAM 1
    variable SPEI_START_SR_STREAM 48
    variable SPEI_TTS_AUDIO_LEVEL 9
    variable SPEI_TTS_BOOKMARK 4
    variable SPEI_TTS_PRIVATE 15
    variable SPEI_UNDEFINED 0
    variable SPEI_VISEME 8
    variable SPEI_VOICE_CHANGE 3
    variable SPEI_WORD_BOUNDARY 5

    # Enumeration SPFILEMODE
    variable SPFM_CREATE 2
    variable SPFM_CREATE_ALWAYS 3
    variable SPFM_NUM_MODES 4
    variable SPFM_OPEN_READONLY 0
    variable SPFM_OPEN_READWRITE 1

    # Enumeration SPGRAMMARSTATE
    variable SPGS_DISABLED 0
    variable SPGS_ENABLED 1
    variable SPGS_EXCLUSIVE 3

    # Enumeration SPGRAMMARWORDTYPE
    variable SPWT_DISPLAY 0
    variable SPWT_LEXICAL 1
    variable SPWT_LEXICAL_NO_SPECIAL_CHARS 3
    variable SPWT_PRONUNCIATION 2

    # Enumeration SPINTERFERENCE
    variable SPINTERFERENCE_LATENCY_TRUNCATE_BEGIN 8
    variable SPINTERFERENCE_LATENCY_TRUNCATE_END 9
    variable SPINTERFERENCE_LATENCY_WARNING 7
    variable SPINTERFERENCE_NOISE 1
    variable SPINTERFERENCE_NONE 0
    variable SPINTERFERENCE_NOSIGNAL 2
    variable SPINTERFERENCE_TOOFAST 5
    variable SPINTERFERENCE_TOOLOUD 3
    variable SPINTERFERENCE_TOOQUIET 4
    variable SPINTERFERENCE_TOOSLOW 6

    # Enumeration SPLEXICONTYPE
    variable eLEXTYPE_APP 2
    variable eLEXTYPE_LETTERTOSOUND 8
    variable eLEXTYPE_MORPHOLOGY 16
    variable eLEXTYPE_PRIVATE1 4096
    variable eLEXTYPE_PRIVATE2 8192
    variable eLEXTYPE_PRIVATE3 16384
    variable eLEXTYPE_PRIVATE4 32768
    variable eLEXTYPE_PRIVATE5 65536
    variable eLEXTYPE_PRIVATE6 131072
    variable eLEXTYPE_PRIVATE7 262144
    variable eLEXTYPE_PRIVATE8 524288
    variable eLEXTYPE_PRIVATE9 1048576
    variable eLEXTYPE_PRIVATE10 2097152
    variable eLEXTYPE_PRIVATE11 4194304
    variable eLEXTYPE_PRIVATE12 8388608
    variable eLEXTYPE_PRIVATE13 16777216
    variable eLEXTYPE_PRIVATE14 33554432
    variable eLEXTYPE_PRIVATE15 67108864
    variable eLEXTYPE_PRIVATE16 134217728
    variable eLEXTYPE_PRIVATE17 268435456
    variable eLEXTYPE_PRIVATE18 536870912
    variable eLEXTYPE_PRIVATE19 1073741824
    variable eLEXTYPE_PRIVATE20 -2147483648
    variable eLEXTYPE_RESERVED4 32
    variable eLEXTYPE_RESERVED6 128
    variable eLEXTYPE_RESERVED7 256
    variable eLEXTYPE_RESERVED8 512
    variable eLEXTYPE_RESERVED9 1024
    variable eLEXTYPE_RESERVED10 2048
    variable eLEXTYPE_USER 1
    variable eLEXTYPE_USER_SHORTCUT 64
    variable eLEXTYPE_VENDORLEXICON 4

    # Enumeration SPLOADOPTIONS
    variable SPLO_DYNAMIC 1
    variable SPLO_STATIC 0

    # Enumeration SPPARTOFSPEECH
    variable SPPS_Function 16384
    variable SPPS_Interjection 20480
    variable SPPS_LMA 28672
    variable SPPS_Modifier 12288
    variable SPPS_Noncontent 24576
    variable SPPS_NotOverriden -1
    variable SPPS_Noun 4096
    variable SPPS_SuppressWord 61440
    variable SPPS_Unknown 0
    variable SPPS_Verb 8192

    # Enumeration SPRECOSTATE
    variable SPRST_ACTIVE 1
    variable SPRST_ACTIVE_ALWAYS 2
    variable SPRST_INACTIVE 0
    variable SPRST_INACTIVE_WITH_PURGE 3
    variable SPRST_NUM_STATES 4

    # Enumeration SPRULESTATE
    variable SPRS_ACTIVE 1
    variable SPRS_ACTIVE_USER_DELIMITED 4
    variable SPRS_ACTIVE_WITH_AUTO_PAUSE 3
    variable SPRS_INACTIVE 0

    # Enumeration SPSEMANTICFORMAT
    variable SPSMF_SAPI_PROPERTIES 0
    variable SPSMF_SRGS_SAPIPROPERTIES 2
    variable SPSMF_SRGS_SEMANTICINTERPRETATION_MS 1
    variable SPSMF_SRGS_SEMANTICINTERPRETATION_W3C 8
    variable SPSMF_UPS 4

    # Enumeration SPSHORTCUTTYPE
    variable SPPS_RESERVED1 12288
    variable SPPS_RESERVED2 16384
    variable SPPS_RESERVED3 20480
    variable SPPS_RESERVED4 61440
    variable SPSHT_EMAIL 4096
    variable SPSHT_NotOverriden -1
    variable SPSHT_OTHER 8192
    variable SPSHT_Unknown 0

    # Enumeration SPVISEMES
    variable SP_VISEME_0 0
    variable SP_VISEME_1 1
    variable SP_VISEME_2 2
    variable SP_VISEME_3 3
    variable SP_VISEME_4 4
    variable SP_VISEME_5 5
    variable SP_VISEME_6 6
    variable SP_VISEME_7 7
    variable SP_VISEME_8 8
    variable SP_VISEME_9 9
    variable SP_VISEME_10 10
    variable SP_VISEME_11 11
    variable SP_VISEME_12 12
    variable SP_VISEME_13 13
    variable SP_VISEME_14 14
    variable SP_VISEME_15 15
    variable SP_VISEME_16 16
    variable SP_VISEME_17 17
    variable SP_VISEME_18 18
    variable SP_VISEME_19 19
    variable SP_VISEME_20 20
    variable SP_VISEME_21 21

    # Enumeration SPVPRIORITY
    variable SPVPRI_ALERT 1
    variable SPVPRI_NORMAL 0
    variable SPVPRI_OVER 2

    # Enumeration SPWAVEFORMATTYPE
    variable SPWF_INPUT 0
    variable SPWF_SRENGINE 1

    # Enumeration SPWORDPRONOUNCEABLE
    variable SPWP_KNOWN_WORD_PRONOUNCEABLE 2
    variable SPWP_UNKNOWN_WORD_PRONOUNCEABLE 1
    variable SPWP_UNKNOWN_WORD_UNPRONOUNCEABLE 0

    # Enumeration SPWORDTYPE
    variable eWORDTYPE_ADDED 1
    variable eWORDTYPE_DELETED 2

    # Enumeration SPXMLRESULTOPTIONS
    variable SPXRO_Alternates_SML 1
    variable SPXRO_SML 0

    # Enumeration procedures

    namespace eval Enum {

        proc _SPAUDIOSTATE {} {
            # SPAS_CLOSED - 0
            # SPAS_PAUSE - 2
            # SPAS_RUN - 3
            # SPAS_STOP - 1
            return { SPAS_CLOSED 0 SPAS_PAUSE 2 SPAS_RUN 3 SPAS_STOP 1 }
        }

        proc DISPID_SpeechAudio {} {
            # DISPID_SABufferInfo - 201
            # DISPID_SABufferNotifySize - 204
            # DISPID_SADefaultFormat - 202
            # DISPID_SAEventHandle - 205
            # DISPID_SASetState - 206
            # DISPID_SAStatus - 200
            # DISPID_SAVolume - 203
            return { DISPID_SABufferInfo 201 DISPID_SABufferNotifySize 204 DISPID_SADefaultFormat 202 DISPID_SAEventHandle 205 DISPID_SASetState 206 DISPID_SAStatus 200 DISPID_SAVolume 203 }
        }

        proc DISPID_SpeechAudioBufferInfo {} {
            # DISPID_SABIBufferSize - 2
            # DISPID_SABIEventBias - 3
            # DISPID_SABIMinNotification - 1
            return { DISPID_SABIBufferSize 2 DISPID_SABIEventBias 3 DISPID_SABIMinNotification 1 }
        }

        proc DISPID_SpeechAudioFormat {} {
            # DISPID_SAFGetWaveFormatEx - 3
            # DISPID_SAFGuid - 2
            # DISPID_SAFSetWaveFormatEx - 4
            # DISPID_SAFType - 1
            return { DISPID_SAFGetWaveFormatEx 3 DISPID_SAFGuid 2 DISPID_SAFSetWaveFormatEx 4 DISPID_SAFType 1 }
        }

        proc DISPID_SpeechAudioStatus {} {
            # DISPID_SASCurrentDevicePosition - 5
            # DISPID_SASCurrentSeekPosition - 4
            # DISPID_SASFreeBufferSpace - 1
            # DISPID_SASNonBlockingIO - 2
            # DISPID_SASState - 3
            return { DISPID_SASCurrentDevicePosition 5 DISPID_SASCurrentSeekPosition 4 DISPID_SASFreeBufferSpace 1 DISPID_SASNonBlockingIO 2 DISPID_SASState 3 }
        }

        proc DISPID_SpeechBaseStream {} {
            # DISPID_SBSFormat - 1
            # DISPID_SBSRead - 2
            # DISPID_SBSSeek - 4
            # DISPID_SBSWrite - 3
            return { DISPID_SBSFormat 1 DISPID_SBSRead 2 DISPID_SBSSeek 4 DISPID_SBSWrite 3 }
        }

        proc DISPID_SpeechCustomStream {} {
            # DISPID_SCSBaseStream - 100
            return { DISPID_SCSBaseStream 100 }
        }

        proc DISPID_SpeechDataKey {} {
            # DISPID_SDKCreateKey - 8
            # DISPID_SDKDeleteKey - 9
            # DISPID_SDKDeleteValue - 10
            # DISPID_SDKEnumKeys - 11
            # DISPID_SDKEnumValues - 12
            # DISPID_SDKGetBinaryValue - 2
            # DISPID_SDKGetlongValue - 6
            # DISPID_SDKGetStringValue - 4
            # DISPID_SDKOpenKey - 7
            # DISPID_SDKSetBinaryValue - 1
            # DISPID_SDKSetLongValue - 5
            # DISPID_SDKSetStringValue - 3
            return { DISPID_SDKCreateKey 8 DISPID_SDKDeleteKey 9 DISPID_SDKDeleteValue 10 DISPID_SDKEnumKeys 11 DISPID_SDKEnumValues 12 DISPID_SDKGetBinaryValue 2 DISPID_SDKGetlongValue 6 DISPID_SDKGetStringValue 4 DISPID_SDKOpenKey 7 DISPID_SDKSetBinaryValue 1 DISPID_SDKSetLongValue 5 DISPID_SDKSetStringValue 3 }
        }

        proc DISPID_SpeechFileStream {} {
            # DISPID_SFSClose - 101
            # DISPID_SFSOpen - 100
            return { DISPID_SFSClose 101 DISPID_SFSOpen 100 }
        }

        proc DISPID_SpeechGrammarRule {} {
            # DISPID_SGRAddResource - 6
            # DISPID_SGRAddState - 7
            # DISPID_SGRAttributes - 1
            # DISPID_SGRClear - 5
            # DISPID_SGRId - 4
            # DISPID_SGRInitialState - 2
            # DISPID_SGRName - 3
            return { DISPID_SGRAddResource 6 DISPID_SGRAddState 7 DISPID_SGRAttributes 1 DISPID_SGRClear 5 DISPID_SGRId 4 DISPID_SGRInitialState 2 DISPID_SGRName 3 }
        }

        proc DISPID_SpeechGrammarRules {} {
            # DISPID_SGRs_NewEnum - -4
            # DISPID_SGRsAdd - 3
            # DISPID_SGRsCommit - 4
            # DISPID_SGRsCommitAndSave - 5
            # DISPID_SGRsCount - 1
            # DISPID_SGRsDynamic - 2
            # DISPID_SGRsFindRule - 6
            # DISPID_SGRsItem - 0
            return { DISPID_SGRs_NewEnum -4 DISPID_SGRsAdd 3 DISPID_SGRsCommit 4 DISPID_SGRsCommitAndSave 5 DISPID_SGRsCount 1 DISPID_SGRsDynamic 2 DISPID_SGRsFindRule 6 DISPID_SGRsItem 0 }
        }

        proc DISPID_SpeechGrammarRuleState {} {
            # DISPID_SGRSAddRuleTransition - 4
            # DISPID_SGRSAddSpecialTransition - 5
            # DISPID_SGRSAddWordTransition - 3
            # DISPID_SGRSRule - 1
            # DISPID_SGRSTransitions - 2
            return { DISPID_SGRSAddRuleTransition 4 DISPID_SGRSAddSpecialTransition 5 DISPID_SGRSAddWordTransition 3 DISPID_SGRSRule 1 DISPID_SGRSTransitions 2 }
        }

        proc DISPID_SpeechGrammarRuleStateTransition {} {
            # DISPID_SGRSTNextState - 8
            # DISPID_SGRSTPropertyId - 6
            # DISPID_SGRSTPropertyName - 5
            # DISPID_SGRSTPropertyValue - 7
            # DISPID_SGRSTRule - 3
            # DISPID_SGRSTText - 2
            # DISPID_SGRSTType - 1
            # DISPID_SGRSTWeight - 4
            return { DISPID_SGRSTNextState 8 DISPID_SGRSTPropertyId 6 DISPID_SGRSTPropertyName 5 DISPID_SGRSTPropertyValue 7 DISPID_SGRSTRule 3 DISPID_SGRSTText 2 DISPID_SGRSTType 1 DISPID_SGRSTWeight 4 }
        }

        proc DISPID_SpeechGrammarRuleStateTransitions {} {
            # DISPID_SGRSTs_NewEnum - -4
            # DISPID_SGRSTsCount - 1
            # DISPID_SGRSTsItem - 0
            return { DISPID_SGRSTs_NewEnum -4 DISPID_SGRSTsCount 1 DISPID_SGRSTsItem 0 }
        }

        proc DISPID_SpeechLexicon {} {
            # DISPID_SLAddPronunciation - 3
            # DISPID_SLAddPronunciationByPhoneIds - 4
            # DISPID_SLGenerationId - 1
            # DISPID_SLGetGenerationChange - 8
            # DISPID_SLGetPronunciations - 7
            # DISPID_SLGetWords - 2
            # DISPID_SLRemovePronunciation - 5
            # DISPID_SLRemovePronunciationByPhoneIds - 6
            return { DISPID_SLAddPronunciation 3 DISPID_SLAddPronunciationByPhoneIds 4 DISPID_SLGenerationId 1 DISPID_SLGetGenerationChange 8 DISPID_SLGetPronunciations 7 DISPID_SLGetWords 2 DISPID_SLRemovePronunciation 5 DISPID_SLRemovePronunciationByPhoneIds 6 }
        }

        proc DISPID_SpeechLexiconProns {} {
            # DISPID_SLPs_NewEnum - -4
            # DISPID_SLPsCount - 1
            # DISPID_SLPsItem - 0
            return { DISPID_SLPs_NewEnum -4 DISPID_SLPsCount 1 DISPID_SLPsItem 0 }
        }

        proc DISPID_SpeechLexiconPronunciation {} {
            # DISPID_SLPLangId - 2
            # DISPID_SLPPartOfSpeech - 3
            # DISPID_SLPPhoneIds - 4
            # DISPID_SLPSymbolic - 5
            # DISPID_SLPType - 1
            return { DISPID_SLPLangId 2 DISPID_SLPPartOfSpeech 3 DISPID_SLPPhoneIds 4 DISPID_SLPSymbolic 5 DISPID_SLPType 1 }
        }

        proc DISPID_SpeechLexiconWord {} {
            # DISPID_SLWLangId - 1
            # DISPID_SLWPronunciations - 4
            # DISPID_SLWType - 2
            # DISPID_SLWWord - 3
            return { DISPID_SLWLangId 1 DISPID_SLWPronunciations 4 DISPID_SLWType 2 DISPID_SLWWord 3 }
        }

        proc DISPID_SpeechLexiconWords {} {
            # DISPID_SLWs_NewEnum - -4
            # DISPID_SLWsCount - 1
            # DISPID_SLWsItem - 0
            return { DISPID_SLWs_NewEnum -4 DISPID_SLWsCount 1 DISPID_SLWsItem 0 }
        }

        proc DISPID_SpeechMemoryStream {} {
            # DISPID_SMSGetData - 101
            # DISPID_SMSSetData - 100
            return { DISPID_SMSGetData 101 DISPID_SMSSetData 100 }
        }

        proc DISPID_SpeechMMSysAudio {} {
            # DISPID_SMSADeviceId - 300
            # DISPID_SMSALineId - 301
            # DISPID_SMSAMMHandle - 302
            return { DISPID_SMSADeviceId 300 DISPID_SMSALineId 301 DISPID_SMSAMMHandle 302 }
        }

        proc DISPID_SpeechObjectToken {} {
            # DISPID_SOTCategory - 3
            # DISPID_SOTCreateInstance - 7
            # DISPID_SOTDataKey - 2
            # DISPID_SOTDisplayUI - 12
            # DISPID_SOTGetAttribute - 6
            # DISPID_SOTGetDescription - 4
            # DISPID_SOTGetStorageFileName - 9
            # DISPID_SOTId - 1
            # DISPID_SOTIsUISupported - 11
            # DISPID_SOTMatchesAttributes - 13
            # DISPID_SOTRemove - 8
            # DISPID_SOTRemoveStorageFileName - 10
            # DISPID_SOTSetId - 5
            return { DISPID_SOTCategory 3 DISPID_SOTCreateInstance 7 DISPID_SOTDataKey 2 DISPID_SOTDisplayUI 12 DISPID_SOTGetAttribute 6 DISPID_SOTGetDescription 4 DISPID_SOTGetStorageFileName 9 DISPID_SOTId 1 DISPID_SOTIsUISupported 11 DISPID_SOTMatchesAttributes 13 DISPID_SOTRemove 8 DISPID_SOTRemoveStorageFileName 10 DISPID_SOTSetId 5 }
        }

        proc DISPID_SpeechObjectTokenCategory {} {
            # DISPID_SOTCDefault - 2
            # DISPID_SOTCEnumerateTokens - 5
            # DISPID_SOTCGetDataKey - 4
            # DISPID_SOTCId - 1
            # DISPID_SOTCSetId - 3
            return { DISPID_SOTCDefault 2 DISPID_SOTCEnumerateTokens 5 DISPID_SOTCGetDataKey 4 DISPID_SOTCId 1 DISPID_SOTCSetId 3 }
        }

        proc DISPID_SpeechObjectTokens {} {
            # DISPID_SOTs_NewEnum - -4
            # DISPID_SOTsCount - 1
            # DISPID_SOTsItem - 0
            return { DISPID_SOTs_NewEnum -4 DISPID_SOTsCount 1 DISPID_SOTsItem 0 }
        }

        proc DISPID_SpeechPhoneConverter {} {
            # DISPID_SPCIdToPhone - 3
            # DISPID_SPCLangId - 1
            # DISPID_SPCPhoneToId - 2
            return { DISPID_SPCIdToPhone 3 DISPID_SPCLangId 1 DISPID_SPCPhoneToId 2 }
        }

        proc DISPID_SpeechPhraseAlternate {} {
            # DISPID_SPACommit - 5
            # DISPID_SPANumberOfElementsInResult - 3
            # DISPID_SPAPhraseInfo - 4
            # DISPID_SPARecoResult - 1
            # DISPID_SPAStartElementInResult - 2
            return { DISPID_SPACommit 5 DISPID_SPANumberOfElementsInResult 3 DISPID_SPAPhraseInfo 4 DISPID_SPARecoResult 1 DISPID_SPAStartElementInResult 2 }
        }

        proc DISPID_SpeechPhraseAlternates {} {
            # DISPID_SPAs_NewEnum - -4
            # DISPID_SPAsCount - 1
            # DISPID_SPAsItem - 0
            return { DISPID_SPAs_NewEnum -4 DISPID_SPAsCount 1 DISPID_SPAsItem 0 }
        }

        proc DISPID_SpeechPhraseBuilder {} {
            # DISPID_SPPBRestorePhraseFromMemory - 1
            return { DISPID_SPPBRestorePhraseFromMemory 1 }
        }

        proc DISPID_SpeechPhraseElement {} {
            # DISPID_SPEActualConfidence - 12
            # DISPID_SPEAudioSizeBytes - 4
            # DISPID_SPEAudioSizeTime - 2
            # DISPID_SPEAudioStreamOffset - 3
            # DISPID_SPEAudioTimeOffset - 1
            # DISPID_SPEDisplayAttributes - 10
            # DISPID_SPEDisplayText - 7
            # DISPID_SPEEngineConfidence - 13
            # DISPID_SPELexicalForm - 8
            # DISPID_SPEPronunciation - 9
            # DISPID_SPERequiredConfidence - 11
            # DISPID_SPERetainedSizeBytes - 6
            # DISPID_SPERetainedStreamOffset - 5
            return { DISPID_SPEActualConfidence 12 DISPID_SPEAudioSizeBytes 4 DISPID_SPEAudioSizeTime 2 DISPID_SPEAudioStreamOffset 3 DISPID_SPEAudioTimeOffset 1 DISPID_SPEDisplayAttributes 10 DISPID_SPEDisplayText 7 DISPID_SPEEngineConfidence 13 DISPID_SPELexicalForm 8 DISPID_SPEPronunciation 9 DISPID_SPERequiredConfidence 11 DISPID_SPERetainedSizeBytes 6 DISPID_SPERetainedStreamOffset 5 }
        }

        proc DISPID_SpeechPhraseElements {} {
            # DISPID_SPEs_NewEnum - -4
            # DISPID_SPEsCount - 1
            # DISPID_SPEsItem - 0
            return { DISPID_SPEs_NewEnum -4 DISPID_SPEsCount 1 DISPID_SPEsItem 0 }
        }

        proc DISPID_SpeechPhraseInfo {} {
            # DISPID_SPIAudioSizeBytes - 5
            # DISPID_SPIAudioSizeTime - 7
            # DISPID_SPIAudioStreamPosition - 4
            # DISPID_SPIElements - 10
            # DISPID_SPIEngineId - 12
            # DISPID_SPIEnginePrivateData - 13
            # DISPID_SPIGetDisplayAttributes - 16
            # DISPID_SPIGetText - 15
            # DISPID_SPIGrammarId - 2
            # DISPID_SPILanguageId - 1
            # DISPID_SPIProperties - 9
            # DISPID_SPIReplacements - 11
            # DISPID_SPIRetainedSizeBytes - 6
            # DISPID_SPIRule - 8
            # DISPID_SPISaveToMemory - 14
            # DISPID_SPIStartTime - 3
            return { DISPID_SPIAudioSizeBytes 5 DISPID_SPIAudioSizeTime 7 DISPID_SPIAudioStreamPosition 4 DISPID_SPIElements 10 DISPID_SPIEngineId 12 DISPID_SPIEnginePrivateData 13 DISPID_SPIGetDisplayAttributes 16 DISPID_SPIGetText 15 DISPID_SPIGrammarId 2 DISPID_SPILanguageId 1 DISPID_SPIProperties 9 DISPID_SPIReplacements 11 DISPID_SPIRetainedSizeBytes 6 DISPID_SPIRule 8 DISPID_SPISaveToMemory 14 DISPID_SPIStartTime 3 }
        }

        proc DISPID_SpeechPhraseProperties {} {
            # DISPID_SPPs_NewEnum - -4
            # DISPID_SPPsCount - 1
            # DISPID_SPPsItem - 0
            return { DISPID_SPPs_NewEnum -4 DISPID_SPPsCount 1 DISPID_SPPsItem 0 }
        }

        proc DISPID_SpeechPhraseProperty {} {
            # DISPID_SPPChildren - 9
            # DISPID_SPPConfidence - 7
            # DISPID_SPPEngineConfidence - 6
            # DISPID_SPPFirstElement - 4
            # DISPID_SPPId - 2
            # DISPID_SPPName - 1
            # DISPID_SPPNumberOfElements - 5
            # DISPID_SPPParent - 8
            # DISPID_SPPValue - 3
            return { DISPID_SPPChildren 9 DISPID_SPPConfidence 7 DISPID_SPPEngineConfidence 6 DISPID_SPPFirstElement 4 DISPID_SPPId 2 DISPID_SPPName 1 DISPID_SPPNumberOfElements 5 DISPID_SPPParent 8 DISPID_SPPValue 3 }
        }

        proc DISPID_SpeechPhraseReplacement {} {
            # DISPID_SPRDisplayAttributes - 1
            # DISPID_SPRFirstElement - 3
            # DISPID_SPRNumberOfElements - 4
            # DISPID_SPRText - 2
            return { DISPID_SPRDisplayAttributes 1 DISPID_SPRFirstElement 3 DISPID_SPRNumberOfElements 4 DISPID_SPRText 2 }
        }

        proc DISPID_SpeechPhraseReplacements {} {
            # DISPID_SPRs_NewEnum - -4
            # DISPID_SPRsCount - 1
            # DISPID_SPRsItem - 0
            return { DISPID_SPRs_NewEnum -4 DISPID_SPRsCount 1 DISPID_SPRsItem 0 }
        }

        proc DISPID_SpeechPhraseRule {} {
            # DISPID_SPRuleChildren - 6
            # DISPID_SPRuleConfidence - 7
            # DISPID_SPRuleEngineConfidence - 8
            # DISPID_SPRuleFirstElement - 3
            # DISPID_SPRuleId - 2
            # DISPID_SPRuleName - 1
            # DISPID_SPRuleNumberOfElements - 4
            # DISPID_SPRuleParent - 5
            return { DISPID_SPRuleChildren 6 DISPID_SPRuleConfidence 7 DISPID_SPRuleEngineConfidence 8 DISPID_SPRuleFirstElement 3 DISPID_SPRuleId 2 DISPID_SPRuleName 1 DISPID_SPRuleNumberOfElements 4 DISPID_SPRuleParent 5 }
        }

        proc DISPID_SpeechPhraseRules {} {
            # DISPID_SPRules_NewEnum - -4
            # DISPID_SPRulesCount - 1
            # DISPID_SPRulesItem - 0
            return { DISPID_SPRules_NewEnum -4 DISPID_SPRulesCount 1 DISPID_SPRulesItem 0 }
        }

        proc DISPID_SpeechRecoContext {} {
            # DISPID_SRAllowVoiceFormatMatchingOnNextSet - 5
            # DISPID_SRCAudioInInterferenceStatus - 2
            # DISPID_SRCBookmark - 16
            # DISPID_SRCCmdMaxAlternates - 8
            # DISPID_SRCCreateGrammar - 14
            # DISPID_SRCCreateResultFromMemory - 15
            # DISPID_SRCEventInterests - 7
            # DISPID_SRCPause - 12
            # DISPID_SRCRecognizer - 1
            # DISPID_SRCRequestedUIType - 3
            # DISPID_SRCResume - 13
            # DISPID_SRCRetainedAudio - 10
            # DISPID_SRCRetainedAudioFormat - 11
            # DISPID_SRCSetAdaptationData - 17
            # DISPID_SRCState - 9
            # DISPID_SRCVoice - 4
            # DISPID_SRCVoicePurgeEvent - 6
            return { DISPID_SRAllowVoiceFormatMatchingOnNextSet 5 DISPID_SRCAudioInInterferenceStatus 2 DISPID_SRCBookmark 16 DISPID_SRCCmdMaxAlternates 8 DISPID_SRCCreateGrammar 14 DISPID_SRCCreateResultFromMemory 15 DISPID_SRCEventInterests 7 DISPID_SRCPause 12 DISPID_SRCRecognizer 1 DISPID_SRCRequestedUIType 3 DISPID_SRCResume 13 DISPID_SRCRetainedAudio 10 DISPID_SRCRetainedAudioFormat 11 DISPID_SRCSetAdaptationData 17 DISPID_SRCState 9 DISPID_SRCVoice 4 DISPID_SRCVoicePurgeEvent 6 }
        }

        proc DISPID_SpeechRecoContextEvents {} {
            # DISPID_SRCEAdaptation - 15
            # DISPID_SRCEAudioLevel - 17
            # DISPID_SRCEBookmark - 3
            # DISPID_SRCEEndStream - 2
            # DISPID_SRCEEnginePrivate - 18
            # DISPID_SRCEFalseRecognition - 11
            # DISPID_SRCEHypothesis - 8
            # DISPID_SRCEInterference - 12
            # DISPID_SRCEPhraseStart - 6
            # DISPID_SRCEPropertyNumberChange - 9
            # DISPID_SRCEPropertyStringChange - 10
            # DISPID_SRCERecognition - 7
            # DISPID_SRCERecognitionForOtherContext - 16
            # DISPID_SRCERecognizerStateChange - 14
            # DISPID_SRCERequestUI - 13
            # DISPID_SRCESoundEnd - 5
            # DISPID_SRCESoundStart - 4
            # DISPID_SRCEStartStream - 1
            return { DISPID_SRCEAdaptation 15 DISPID_SRCEAudioLevel 17 DISPID_SRCEBookmark 3 DISPID_SRCEEndStream 2 DISPID_SRCEEnginePrivate 18 DISPID_SRCEFalseRecognition 11 DISPID_SRCEHypothesis 8 DISPID_SRCEInterference 12 DISPID_SRCEPhraseStart 6 DISPID_SRCEPropertyNumberChange 9 DISPID_SRCEPropertyStringChange 10 DISPID_SRCERecognition 7 DISPID_SRCERecognitionForOtherContext 16 DISPID_SRCERecognizerStateChange 14 DISPID_SRCERequestUI 13 DISPID_SRCESoundEnd 5 DISPID_SRCESoundStart 4 DISPID_SRCEStartStream 1 }
        }

        proc DISPID_SpeechRecognizer {} {
            # DISPID_SRAllowAudioInputFormatChangesOnNextSet - 2
            # DISPID_SRAudioInput - 3
            # DISPID_SRAudioInputStream - 4
            # DISPID_SRCreateRecoContext - 10
            # DISPID_SRDisplayUI - 17
            # DISPID_SREmulateRecognition - 9
            # DISPID_SRGetFormat - 11
            # DISPID_SRGetPropertyNumber - 13
            # DISPID_SRGetPropertyString - 15
            # DISPID_SRGetRecognizers - 18
            # DISPID_SRIsShared - 5
            # DISPID_SRIsUISupported - 16
            # DISPID_SRProfile - 8
            # DISPID_SRRecognizer - 1
            # DISPID_SRSetPropertyNumber - 12
            # DISPID_SRSetPropertyString - 14
            # DISPID_SRState - 6
            # DISPID_SRStatus - 7
            # DISPID_SVGetAudioInputs - 19
            # DISPID_SVGetProfiles - 20
            return { DISPID_SRAllowAudioInputFormatChangesOnNextSet 2 DISPID_SRAudioInput 3 DISPID_SRAudioInputStream 4 DISPID_SRCreateRecoContext 10 DISPID_SRDisplayUI 17 DISPID_SREmulateRecognition 9 DISPID_SRGetFormat 11 DISPID_SRGetPropertyNumber 13 DISPID_SRGetPropertyString 15 DISPID_SRGetRecognizers 18 DISPID_SRIsShared 5 DISPID_SRIsUISupported 16 DISPID_SRProfile 8 DISPID_SRRecognizer 1 DISPID_SRSetPropertyNumber 12 DISPID_SRSetPropertyString 14 DISPID_SRState 6 DISPID_SRStatus 7 DISPID_SVGetAudioInputs 19 DISPID_SVGetProfiles 20 }
        }

        proc DISPID_SpeechRecognizerStatus {} {
            # DISPID_SRSAudioStatus - 1
            # DISPID_SRSClsidEngine - 5
            # DISPID_SRSCurrentStreamNumber - 3
            # DISPID_SRSCurrentStreamPosition - 2
            # DISPID_SRSNumberOfActiveRules - 4
            # DISPID_SRSSupportedLanguages - 6
            return { DISPID_SRSAudioStatus 1 DISPID_SRSClsidEngine 5 DISPID_SRSCurrentStreamNumber 3 DISPID_SRSCurrentStreamPosition 2 DISPID_SRSNumberOfActiveRules 4 DISPID_SRSSupportedLanguages 6 }
        }

        proc DISPID_SpeechRecoResult {} {
            # DISPID_SRRAlternates - 5
            # DISPID_SRRAudio - 6
            # DISPID_SRRAudioFormat - 3
            # DISPID_SRRDiscardResultInfo - 9
            # DISPID_SRRPhraseInfo - 4
            # DISPID_SRRRecoContext - 1
            # DISPID_SRRSaveToMemory - 8
            # DISPID_SRRSpeakAudio - 7
            # DISPID_SRRTimes - 2
            return { DISPID_SRRAlternates 5 DISPID_SRRAudio 6 DISPID_SRRAudioFormat 3 DISPID_SRRDiscardResultInfo 9 DISPID_SRRPhraseInfo 4 DISPID_SRRRecoContext 1 DISPID_SRRSaveToMemory 8 DISPID_SRRSpeakAudio 7 DISPID_SRRTimes 2 }
        }

        proc DISPID_SpeechRecoResult2 {} {
            # DISPID_SRRSetTextFeedback - 12
            return { DISPID_SRRSetTextFeedback 12 }
        }

        proc DISPID_SpeechRecoResultTimes {} {
            # DISPID_SRRTLength - 2
            # DISPID_SRRTOffsetFromStart - 4
            # DISPID_SRRTStreamTime - 1
            # DISPID_SRRTTickCount - 3
            return { DISPID_SRRTLength 2 DISPID_SRRTOffsetFromStart 4 DISPID_SRRTStreamTime 1 DISPID_SRRTTickCount 3 }
        }

        proc DISPID_SpeechVoice {} {
            # DISPID_SVAlertBoundary - 10
            # DISPID_SVAllowAudioOuputFormatChangesOnNextSet - 7
            # DISPID_SVAudioOutput - 3
            # DISPID_SVAudioOutputStream - 4
            # DISPID_SVDisplayUI - 22
            # DISPID_SVEventInterests - 8
            # DISPID_SVGetAudioOutputs - 18
            # DISPID_SVGetVoices - 17
            # DISPID_SVIsUISupported - 21
            # DISPID_SVPause - 14
            # DISPID_SVPriority - 9
            # DISPID_SVRate - 5
            # DISPID_SVResume - 15
            # DISPID_SVSkip - 16
            # DISPID_SVSpeak - 12
            # DISPID_SVSpeakCompleteEvent - 20
            # DISPID_SVSpeakStream - 13
            # DISPID_SVStatus - 1
            # DISPID_SVSyncronousSpeakTimeout - 11
            # DISPID_SVVoice - 2
            # DISPID_SVVolume - 6
            # DISPID_SVWaitUntilDone - 19
            return { DISPID_SVAlertBoundary 10 DISPID_SVAllowAudioOuputFormatChangesOnNextSet 7 DISPID_SVAudioOutput 3 DISPID_SVAudioOutputStream 4 DISPID_SVDisplayUI 22 DISPID_SVEventInterests 8 DISPID_SVGetAudioOutputs 18 DISPID_SVGetVoices 17 DISPID_SVIsUISupported 21 DISPID_SVPause 14 DISPID_SVPriority 9 DISPID_SVRate 5 DISPID_SVResume 15 DISPID_SVSkip 16 DISPID_SVSpeak 12 DISPID_SVSpeakCompleteEvent 20 DISPID_SVSpeakStream 13 DISPID_SVStatus 1 DISPID_SVSyncronousSpeakTimeout 11 DISPID_SVVoice 2 DISPID_SVVolume 6 DISPID_SVWaitUntilDone 19 }
        }

        proc DISPID_SpeechVoiceEvent {} {
            # DISPID_SVEAudioLevel - 9
            # DISPID_SVEBookmark - 4
            # DISPID_SVEEnginePrivate - 10
            # DISPID_SVEPhoneme - 6
            # DISPID_SVESentenceBoundary - 7
            # DISPID_SVEStreamEnd - 2
            # DISPID_SVEStreamStart - 1
            # DISPID_SVEViseme - 8
            # DISPID_SVEVoiceChange - 3
            # DISPID_SVEWord - 5
            return { DISPID_SVEAudioLevel 9 DISPID_SVEBookmark 4 DISPID_SVEEnginePrivate 10 DISPID_SVEPhoneme 6 DISPID_SVESentenceBoundary 7 DISPID_SVEStreamEnd 2 DISPID_SVEStreamStart 1 DISPID_SVEViseme 8 DISPID_SVEVoiceChange 3 DISPID_SVEWord 5 }
        }

        proc DISPID_SpeechVoiceStatus {} {
            # DISPID_SVSCurrentStreamNumber - 1
            # DISPID_SVSInputSentenceLength - 8
            # DISPID_SVSInputSentencePosition - 7
            # DISPID_SVSInputWordLength - 6
            # DISPID_SVSInputWordPosition - 5
            # DISPID_SVSLastBookmark - 9
            # DISPID_SVSLastBookmarkId - 10
            # DISPID_SVSLastResult - 3
            # DISPID_SVSLastStreamNumberQueued - 2
            # DISPID_SVSPhonemeId - 11
            # DISPID_SVSRunningState - 4
            # DISPID_SVSVisemeId - 12
            return { DISPID_SVSCurrentStreamNumber 1 DISPID_SVSInputSentenceLength 8 DISPID_SVSInputSentencePosition 7 DISPID_SVSInputWordLength 6 DISPID_SVSInputWordPosition 5 DISPID_SVSLastBookmark 9 DISPID_SVSLastBookmarkId 10 DISPID_SVSLastResult 3 DISPID_SVSLastStreamNumberQueued 2 DISPID_SVSPhonemeId 11 DISPID_SVSRunningState 4 DISPID_SVSVisemeId 12 }
        }

        proc DISPID_SpeechWaveFormatEx {} {
            # DISPID_SWFEAvgBytesPerSec - 4
            # DISPID_SWFEBitsPerSample - 6
            # DISPID_SWFEBlockAlign - 5
            # DISPID_SWFEChannels - 2
            # DISPID_SWFEExtraData - 7
            # DISPID_SWFEFormatTag - 1
            # DISPID_SWFESamplesPerSec - 3
            return { DISPID_SWFEAvgBytesPerSec 4 DISPID_SWFEBitsPerSample 6 DISPID_SWFEBlockAlign 5 DISPID_SWFEChannels 2 DISPID_SWFEExtraData 7 DISPID_SWFEFormatTag 1 DISPID_SWFESamplesPerSec 3 }
        }

        proc DISPID_SpeechXMLRecoResult {} {
            # DISPID_SRRGetXMLErrorInfo - 11
            # DISPID_SRRGetXMLResult - 10
            return { DISPID_SRRGetXMLErrorInfo 11 DISPID_SRRGetXMLResult 10 }
        }

        proc DISPIDSPRG {} {
            # DISPID_SRGCmdLoadFromFile - 7
            # DISPID_SRGCmdLoadFromMemory - 10
            # DISPID_SRGCmdLoadFromObject - 8
            # DISPID_SRGCmdLoadFromProprietaryGrammar - 11
            # DISPID_SRGCmdLoadFromResource - 9
            # DISPID_SRGCmdSetRuleIdState - 13
            # DISPID_SRGCmdSetRuleState - 12
            # DISPID_SRGCommit - 6
            # DISPID_SRGDictationLoad - 14
            # DISPID_SRGDictationSetState - 16
            # DISPID_SRGDictationUnload - 15
            # DISPID_SRGId - 1
            # DISPID_SRGIsPronounceable - 19
            # DISPID_SRGRecoContext - 2
            # DISPID_SRGReset - 5
            # DISPID_SRGRules - 4
            # DISPID_SRGSetTextSelection - 18
            # DISPID_SRGSetWordSequenceData - 17
            # DISPID_SRGState - 3
            return { DISPID_SRGCmdLoadFromFile 7 DISPID_SRGCmdLoadFromMemory 10 DISPID_SRGCmdLoadFromObject 8 DISPID_SRGCmdLoadFromProprietaryGrammar 11 DISPID_SRGCmdLoadFromResource 9 DISPID_SRGCmdSetRuleIdState 13 DISPID_SRGCmdSetRuleState 12 DISPID_SRGCommit 6 DISPID_SRGDictationLoad 14 DISPID_SRGDictationSetState 16 DISPID_SRGDictationUnload 15 DISPID_SRGId 1 DISPID_SRGIsPronounceable 19 DISPID_SRGRecoContext 2 DISPID_SRGReset 5 DISPID_SRGRules 4 DISPID_SRGSetTextSelection 18 DISPID_SRGSetWordSequenceData 17 DISPID_SRGState 3 }
        }

        proc DISPIDSPTSI {} {
            # DISPIDSPTSI_ActiveLength - 2
            # DISPIDSPTSI_ActiveOffset - 1
            # DISPIDSPTSI_SelectionLength - 4
            # DISPIDSPTSI_SelectionOffset - 3
            return { DISPIDSPTSI_ActiveLength 2 DISPIDSPTSI_ActiveOffset 1 DISPIDSPTSI_SelectionLength 4 DISPIDSPTSI_SelectionOffset 3 }
        }

        proc SPADAPTATIONRELEVANCE {} {
            # SPAR_High - 3
            # SPAR_Low - 1
            # SPAR_Medium - 2
            # SPAR_Unknown - 0
            return { SPAR_High 3 SPAR_Low 1 SPAR_Medium 2 SPAR_Unknown 0 }
        }

        proc SPAUDIOOPTIONS {} {
            # SPAO_NONE - 0
            # SPAO_RETAIN_AUDIO - 1
            return { SPAO_NONE 0 SPAO_RETAIN_AUDIO 1 }
        }

        proc SPBOOKMARKOPTIONS {} {
            # SPBO_AHEAD - 2
            # SPBO_NONE - 0
            # SPBO_PAUSE - 1
            # SPBO_TIME_UNITS - 4
            return { SPBO_AHEAD 2 SPBO_NONE 0 SPBO_PAUSE 1 SPBO_TIME_UNITS 4 }
        }

        proc SPCATEGORYTYPE {} {
            # SPCT_COMMAND - 0
            # SPCT_DICTATION - 1
            # SPCT_SLEEP - 2
            # SPCT_SUB_COMMAND - 3
            # SPCT_SUB_DICTATION - 4
            return { SPCT_COMMAND 0 SPCT_DICTATION 1 SPCT_SLEEP 2 SPCT_SUB_COMMAND 3 SPCT_SUB_DICTATION 4 }
        }

        proc SPCONTEXTSTATE {} {
            # SPCS_DISABLED - 0
            # SPCS_ENABLED - 1
            return { SPCS_DISABLED 0 SPCS_ENABLED 1 }
        }

        proc SPDATAKEYLOCATION {} {
            # SPDKL_CurrentConfig - 5
            # SPDKL_CurrentUser - 1
            # SPDKL_DefaultLocation - 0
            # SPDKL_LocalMachine - 2
            return { SPDKL_CurrentConfig 5 SPDKL_CurrentUser 1 SPDKL_DefaultLocation 0 SPDKL_LocalMachine 2 }
        }

        proc SpeechAudioFormatType {} {
            # SAFT8kHz8BitMono - 4
            # SAFT8kHz8BitStereo - 5
            # SAFT8kHz16BitMono - 6
            # SAFT8kHz16BitStereo - 7
            # SAFT11kHz8BitMono - 8
            # SAFT11kHz8BitStereo - 9
            # SAFT11kHz16BitMono - 10
            # SAFT11kHz16BitStereo - 11
            # SAFT12kHz8BitMono - 12
            # SAFT12kHz8BitStereo - 13
            # SAFT12kHz16BitMono - 14
            # SAFT12kHz16BitStereo - 15
            # SAFT16kHz8BitMono - 16
            # SAFT16kHz8BitStereo - 17
            # SAFT16kHz16BitMono - 18
            # SAFT16kHz16BitStereo - 19
            # SAFT22kHz8BitMono - 20
            # SAFT22kHz8BitStereo - 21
            # SAFT22kHz16BitMono - 22
            # SAFT22kHz16BitStereo - 23
            # SAFT24kHz8BitMono - 24
            # SAFT24kHz8BitStereo - 25
            # SAFT24kHz16BitMono - 26
            # SAFT24kHz16BitStereo - 27
            # SAFT32kHz8BitMono - 28
            # SAFT32kHz8BitStereo - 29
            # SAFT32kHz16BitMono - 30
            # SAFT32kHz16BitStereo - 31
            # SAFT44kHz8BitMono - 32
            # SAFT44kHz8BitStereo - 33
            # SAFT44kHz16BitMono - 34
            # SAFT44kHz16BitStereo - 35
            # SAFT48kHz8BitMono - 36
            # SAFT48kHz8BitStereo - 37
            # SAFT48kHz16BitMono - 38
            # SAFT48kHz16BitStereo - 39
            # SAFTADPCM_8kHzMono - 57
            # SAFTADPCM_8kHzStereo - 58
            # SAFTADPCM_11kHzMono - 59
            # SAFTADPCM_11kHzStereo - 60
            # SAFTADPCM_22kHzMono - 61
            # SAFTADPCM_22kHzStereo - 62
            # SAFTADPCM_44kHzMono - 63
            # SAFTADPCM_44kHzStereo - 64
            # SAFTCCITT_ALaw_8kHzMono - 41
            # SAFTCCITT_ALaw_8kHzStereo - 42
            # SAFTCCITT_ALaw_11kHzMono - 43
            # SAFTCCITT_ALaw_11kHzStereo - 44
            # SAFTCCITT_ALaw_22kHzMono - 45
            # SAFTCCITT_ALaw_22kHzStereo - 46
            # SAFTCCITT_ALaw_44kHzMono - 47
            # SAFTCCITT_ALaw_44kHzStereo - 48
            # SAFTCCITT_uLaw_8kHzMono - 49
            # SAFTCCITT_uLaw_8kHzStereo - 50
            # SAFTCCITT_uLaw_11kHzMono - 51
            # SAFTCCITT_uLaw_11kHzStereo - 52
            # SAFTCCITT_uLaw_22kHzMono - 53
            # SAFTCCITT_uLaw_22kHzStereo - 54
            # SAFTCCITT_uLaw_44kHzMono - 55
            # SAFTCCITT_uLaw_44kHzStereo - 56
            # SAFTDefault - -1
            # SAFTExtendedAudioFormat - 3
            # SAFTGSM610_8kHzMono - 65
            # SAFTGSM610_11kHzMono - 66
            # SAFTGSM610_22kHzMono - 67
            # SAFTGSM610_44kHzMono - 68
            # SAFTNoAssignedFormat - 0
            # SAFTNonStandardFormat - 2
            # SAFTText - 1
            # SAFTTrueSpeech_8kHz1BitMono - 40
            return { SAFT8kHz8BitMono 4 SAFT8kHz8BitStereo 5 SAFT8kHz16BitMono 6 SAFT8kHz16BitStereo 7 SAFT11kHz8BitMono 8 SAFT11kHz8BitStereo 9 SAFT11kHz16BitMono 10 SAFT11kHz16BitStereo 11 SAFT12kHz8BitMono 12 SAFT12kHz8BitStereo 13 SAFT12kHz16BitMono 14 SAFT12kHz16BitStereo 15 SAFT16kHz8BitMono 16 SAFT16kHz8BitStereo 17 SAFT16kHz16BitMono 18 SAFT16kHz16BitStereo 19 SAFT22kHz8BitMono 20 SAFT22kHz8BitStereo 21 SAFT22kHz16BitMono 22 SAFT22kHz16BitStereo 23 SAFT24kHz8BitMono 24 SAFT24kHz8BitStereo 25 SAFT24kHz16BitMono 26 SAFT24kHz16BitStereo 27 SAFT32kHz8BitMono 28 SAFT32kHz8BitStereo 29 SAFT32kHz16BitMono 30 SAFT32kHz16BitStereo 31 SAFT44kHz8BitMono 32 SAFT44kHz8BitStereo 33 SAFT44kHz16BitMono 34 SAFT44kHz16BitStereo 35 SAFT48kHz8BitMono 36 SAFT48kHz8BitStereo 37 SAFT48kHz16BitMono 38 SAFT48kHz16BitStereo 39 SAFTADPCM_8kHzMono 57 SAFTADPCM_8kHzStereo 58 SAFTADPCM_11kHzMono 59 SAFTADPCM_11kHzStereo 60 SAFTADPCM_22kHzMono 61 SAFTADPCM_22kHzStereo 62 SAFTADPCM_44kHzMono 63 SAFTADPCM_44kHzStereo 64 SAFTCCITT_ALaw_8kHzMono 41 SAFTCCITT_ALaw_8kHzStereo 42 SAFTCCITT_ALaw_11kHzMono 43 SAFTCCITT_ALaw_11kHzStereo 44 SAFTCCITT_ALaw_22kHzMono 45 SAFTCCITT_ALaw_22kHzStereo 46 SAFTCCITT_ALaw_44kHzMono 47 SAFTCCITT_ALaw_44kHzStereo 48 SAFTCCITT_uLaw_8kHzMono 49 SAFTCCITT_uLaw_8kHzStereo 50 SAFTCCITT_uLaw_11kHzMono 51 SAFTCCITT_uLaw_11kHzStereo 52 SAFTCCITT_uLaw_22kHzMono 53 SAFTCCITT_uLaw_22kHzStereo 54 SAFTCCITT_uLaw_44kHzMono 55 SAFTCCITT_uLaw_44kHzStereo 56 SAFTDefault -1 SAFTExtendedAudioFormat 3 SAFTGSM610_8kHzMono 65 SAFTGSM610_11kHzMono 66 SAFTGSM610_22kHzMono 67 SAFTGSM610_44kHzMono 68 SAFTNoAssignedFormat 0 SAFTNonStandardFormat 2 SAFTText 1 SAFTTrueSpeech_8kHz1BitMono 40 }
        }

        proc SpeechAudioState {} {
            # SASClosed - 0
            # SASPause - 2
            # SASRun - 3
            # SASStop - 1
            return { SASClosed 0 SASPause 2 SASRun 3 SASStop 1 }
        }

        proc SpeechBookmarkOptions {} {
            # SBONone - 0
            # SBOPause - 1
            return { SBONone 0 SBOPause 1 }
        }

        proc SpeechDataKeyLocation {} {
            # SDKLCurrentConfig - 5
            # SDKLCurrentUser - 1
            # SDKLDefaultLocation - 0
            # SDKLLocalMachine - 2
            return { SDKLCurrentConfig 5 SDKLCurrentUser 1 SDKLDefaultLocation 0 SDKLLocalMachine 2 }
        }

        proc SpeechDiscardType {} {
            # SDTAll - 255
            # SDTAlternates - 128
            # SDTAudio - 64
            # SDTDisplayText - 8
            # SDTLexicalForm - 16
            # SDTPronunciation - 32
            # SDTProperty - 1
            # SDTReplacement - 2
            # SDTRule - 4
            return { SDTAll 255 SDTAlternates 128 SDTAudio 64 SDTDisplayText 8 SDTLexicalForm 16 SDTPronunciation 32 SDTProperty 1 SDTReplacement 2 SDTRule 4 }
        }

        proc SpeechDisplayAttributes {} {
            # SDA_Consume_Leading_Spaces - 8
            # SDA_No_Trailing_Space - 0
            # SDA_One_Trailing_Space - 2
            # SDA_Two_Trailing_Spaces - 4
            return { SDA_Consume_Leading_Spaces 8 SDA_No_Trailing_Space 0 SDA_One_Trailing_Space 2 SDA_Two_Trailing_Spaces 4 }
        }

        proc SpeechEmulationCompareFlags {} {
            # SECFDefault - 196609
            # SECFEmulateResult - 1073741824
            # SECFIgnoreCase - 1
            # SECFIgnoreKanaType - 65536
            # SECFIgnoreWidth - 131072
            # SECFNoSpecialChars - 536870912
            return { SECFDefault 196609 SECFEmulateResult 1073741824 SECFIgnoreCase 1 SECFIgnoreKanaType 65536 SECFIgnoreWidth 131072 SECFNoSpecialChars 536870912 }
        }

        proc SpeechEngineConfidence {} {
            # SECHighConfidence - 1
            # SECLowConfidence - -1
            # SECNormalConfidence - 0
            return { SECHighConfidence 1 SECLowConfidence -1 SECNormalConfidence 0 }
        }

        proc SpeechFormatType {} {
            # SFTInput - 0
            # SFTSREngine - 1
            return { SFTInput 0 SFTSREngine 1 }
        }

        proc SpeechGrammarRuleStateTransitionType {} {
            # SGRSTTDictation - 3
            # SGRSTTEpsilon - 0
            # SGRSTTRule - 2
            # SGRSTTTextBuffer - 5
            # SGRSTTWildcard - 4
            # SGRSTTWord - 1
            return { SGRSTTDictation 3 SGRSTTEpsilon 0 SGRSTTRule 2 SGRSTTTextBuffer 5 SGRSTTWildcard 4 SGRSTTWord 1 }
        }

        proc SpeechGrammarState {} {
            # SGSDisabled - 0
            # SGSEnabled - 1
            # SGSExclusive - 3
            return { SGSDisabled 0 SGSEnabled 1 SGSExclusive 3 }
        }

        proc SpeechGrammarWordType {} {
            # SGDisplay - 0
            # SGLexical - 1
            # SGLexicalNoSpecialChars - 3
            # SGPronounciation - 2
            return { SGDisplay 0 SGLexical 1 SGLexicalNoSpecialChars 3 SGPronounciation 2 }
        }

        proc SpeechInterference {} {
            # SINoise - 1
            # SINone - 0
            # SINoSignal - 2
            # SITooFast - 5
            # SITooLoud - 3
            # SITooQuiet - 4
            # SITooSlow - 6
            return { SINoise 1 SINone 0 SINoSignal 2 SITooFast 5 SITooLoud 3 SITooQuiet 4 SITooSlow 6 }
        }

        proc SpeechLexiconType {} {
            # SLTApp - 2
            # SLTUser - 1
            return { SLTApp 2 SLTUser 1 }
        }

        proc SpeechLoadOption {} {
            # SLODynamic - 1
            # SLOStatic - 0
            return { SLODynamic 1 SLOStatic 0 }
        }

        proc SpeechPartOfSpeech {} {
            # SPSFunction - 16384
            # SPSInterjection - 20480
            # SPSLMA - 28672
            # SPSModifier - 12288
            # SPSNotOverriden - -1
            # SPSNoun - 4096
            # SPSSuppressWord - 61440
            # SPSUnknown - 0
            # SPSVerb - 8192
            return { SPSFunction 16384 SPSInterjection 20480 SPSLMA 28672 SPSModifier 12288 SPSNotOverriden -1 SPSNoun 4096 SPSSuppressWord 61440 SPSUnknown 0 SPSVerb 8192 }
        }

        proc SpeechRecoContextState {} {
            # SRCS_Disabled - 0
            # SRCS_Enabled - 1
            return { SRCS_Disabled 0 SRCS_Enabled 1 }
        }

        proc SpeechRecoEvents {} {
            # SREAdaptation - 8192
            # SREAllEvents - 393215
            # SREAudioLevel - 65536
            # SREBookmark - 64
            # SREFalseRecognition - 512
            # SREHypothesis - 32
            # SREInterference - 1024
            # SREPhraseStart - 8
            # SREPrivate - 262144
            # SREPropertyNumChange - 128
            # SREPropertyStringChange - 256
            # SRERecognition - 16
            # SRERecoOtherContext - 32768
            # SRERequestUI - 2048
            # SRESoundEnd - 4
            # SRESoundStart - 2
            # SREStateChange - 4096
            # SREStreamEnd - 1
            # SREStreamStart - 16384
            return { SREAdaptation 8192 SREAllEvents 393215 SREAudioLevel 65536 SREBookmark 64 SREFalseRecognition 512 SREHypothesis 32 SREInterference 1024 SREPhraseStart 8 SREPrivate 262144 SREPropertyNumChange 128 SREPropertyStringChange 256 SRERecognition 16 SRERecoOtherContext 32768 SRERequestUI 2048 SRESoundEnd 4 SRESoundStart 2 SREStateChange 4096 SREStreamEnd 1 SREStreamStart 16384 }
        }

        proc SpeechRecognitionType {} {
            # SRTAutopause - 1
            # SRTEmulated - 2
            # SRTExtendableParse - 8
            # SRTReSent - 16
            # SRTSMLTimeout - 4
            # SRTStandard - 0
            return { SRTAutopause 1 SRTEmulated 2 SRTExtendableParse 8 SRTReSent 16 SRTSMLTimeout 4 SRTStandard 0 }
        }

        proc SpeechRecognizerState {} {
            # SRSActive - 1
            # SRSActiveAlways - 2
            # SRSInactive - 0
            # SRSInactiveWithPurge - 3
            return { SRSActive 1 SRSActiveAlways 2 SRSInactive 0 SRSInactiveWithPurge 3 }
        }

        proc SpeechRetainedAudioOptions {} {
            # SRAONone - 0
            # SRAORetainAudio - 1
            return { SRAONone 0 SRAORetainAudio 1 }
        }

        proc SpeechRuleAttributes {} {
            # SRADefaultToActive - 2
            # SRADynamic - 32
            # SRAExport - 4
            # SRAImport - 8
            # SRAInterpreter - 16
            # SRARoot - 64
            # SRATopLevel - 1
            return { SRADefaultToActive 2 SRADynamic 32 SRAExport 4 SRAImport 8 SRAInterpreter 16 SRARoot 64 SRATopLevel 1 }
        }

        proc SpeechRuleState {} {
            # SGDSActive - 1
            # SGDSActiveUserDelimited - 4
            # SGDSActiveWithAutoPause - 3
            # SGDSInactive - 0
            return { SGDSActive 1 SGDSActiveUserDelimited 4 SGDSActiveWithAutoPause 3 SGDSInactive 0 }
        }

        proc SpeechRunState {} {
            # SRSEDone - 1
            # SRSEIsSpeaking - 2
            return { SRSEDone 1 SRSEIsSpeaking 2 }
        }

        proc SpeechSpecialTransitionType {} {
            # SSTTDictation - 2
            # SSTTTextBuffer - 3
            # SSTTWildcard - 1
            return { SSTTDictation 2 SSTTTextBuffer 3 SSTTWildcard 1 }
        }

        proc SpeechStreamFileMode {} {
            # SSFMCreate - 2
            # SSFMCreateForWrite - 3
            # SSFMOpenForRead - 0
            # SSFMOpenReadWrite - 1
            return { SSFMCreate 2 SSFMCreateForWrite 3 SSFMOpenForRead 0 SSFMOpenReadWrite 1 }
        }

        proc SpeechStreamSeekPositionType {} {
            # SSSPTRelativeToCurrentPosition - 1
            # SSSPTRelativeToEnd - 2
            # SSSPTRelativeToStart - 0
            return { SSSPTRelativeToCurrentPosition 1 SSSPTRelativeToEnd 2 SSSPTRelativeToStart 0 }
        }

        proc SpeechTokenContext {} {
            # STCAll - 23
            # STCInprocHandler - 2
            # STCInprocServer - 1
            # STCLocalServer - 4
            # STCRemoteServer - 16
            return { STCAll 23 STCInprocHandler 2 STCInprocServer 1 STCLocalServer 4 STCRemoteServer 16 }
        }

        proc SpeechTokenShellFolder {} {
            # STSF_AppData - 26
            # STSF_CommonAppData - 35
            # STSF_FlagCreate - 32768
            # STSF_LocalAppData - 28
            return { STSF_AppData 26 STSF_CommonAppData 35 STSF_FlagCreate 32768 STSF_LocalAppData 28 }
        }

        proc SpeechVisemeFeature {} {
            # SVF_Emphasis - 2
            # SVF_None - 0
            # SVF_Stressed - 1
            return { SVF_Emphasis 2 SVF_None 0 SVF_Stressed 1 }
        }

        proc SpeechVisemeType {} {
            # SVP_0 - 0
            # SVP_1 - 1
            # SVP_2 - 2
            # SVP_3 - 3
            # SVP_4 - 4
            # SVP_5 - 5
            # SVP_6 - 6
            # SVP_7 - 7
            # SVP_8 - 8
            # SVP_9 - 9
            # SVP_10 - 10
            # SVP_11 - 11
            # SVP_12 - 12
            # SVP_13 - 13
            # SVP_14 - 14
            # SVP_15 - 15
            # SVP_16 - 16
            # SVP_17 - 17
            # SVP_18 - 18
            # SVP_19 - 19
            # SVP_20 - 20
            # SVP_21 - 21
            return { SVP_0 0 SVP_1 1 SVP_2 2 SVP_3 3 SVP_4 4 SVP_5 5 SVP_6 6 SVP_7 7 SVP_8 8 SVP_9 9 SVP_10 10 SVP_11 11 SVP_12 12 SVP_13 13 SVP_14 14 SVP_15 15 SVP_16 16 SVP_17 17 SVP_18 18 SVP_19 19 SVP_20 20 SVP_21 21 }
        }

        proc SpeechVoiceEvents {} {
            # SVEAllEvents - 33790
            # SVEAudioLevel - 512
            # SVEBookmark - 16
            # SVEEndInputStream - 4
            # SVEPhoneme - 64
            # SVEPrivate - 32768
            # SVESentenceBoundary - 128
            # SVEStartInputStream - 2
            # SVEViseme - 256
            # SVEVoiceChange - 8
            # SVEWordBoundary - 32
            return { SVEAllEvents 33790 SVEAudioLevel 512 SVEBookmark 16 SVEEndInputStream 4 SVEPhoneme 64 SVEPrivate 32768 SVESentenceBoundary 128 SVEStartInputStream 2 SVEViseme 256 SVEVoiceChange 8 SVEWordBoundary 32 }
        }

        proc SpeechVoicePriority {} {
            # SVPAlert - 1
            # SVPNormal - 0
            # SVPOver - 2
            return { SVPAlert 1 SVPNormal 0 SVPOver 2 }
        }

        proc SpeechVoiceSpeakFlags {} {
            # SVSFDefault - 0
            # SVSFIsFilename - 4
            # SVSFIsNotXML - 16
            # SVSFIsXML - 8
            # SVSFlagsAsync - 1
            # SVSFNLPMask - 64
            # SVSFNLPSpeakPunc - 64
            # SVSFParseAutodetect - 0
            # SVSFParseMask - 384
            # SVSFParseSapi - 128
            # SVSFParseSsml - 256
            # SVSFPersistXML - 32
            # SVSFPurgeBeforeSpeak - 2
            # SVSFUnusedFlags - -512
            # SVSFVoiceMask - 511
            return { SVSFDefault 0 SVSFIsFilename 4 SVSFIsNotXML 16 SVSFIsXML 8 SVSFlagsAsync 1 SVSFNLPMask 64 SVSFNLPSpeakPunc 64 SVSFParseAutodetect 0 SVSFParseMask 384 SVSFParseSapi 128 SVSFParseSsml 256 SVSFPersistXML 32 SVSFPurgeBeforeSpeak 2 SVSFUnusedFlags -512 SVSFVoiceMask 511 }
        }

        proc SpeechWordPronounceable {} {
            # SWPKnownWordPronounceable - 2
            # SWPUnknownWordPronounceable - 1
            # SWPUnknownWordUnpronounceable - 0
            return { SWPKnownWordPronounceable 2 SWPUnknownWordPronounceable 1 SWPUnknownWordUnpronounceable 0 }
        }

        proc SpeechWordType {} {
            # SWTAdded - 1
            # SWTDeleted - 2
            return { SWTAdded 1 SWTDeleted 2 }
        }

        proc SPEVENTENUM {} {
            # SPEI_ACTIVE_CATEGORY_CHANGED - 53
            # SPEI_ADAPTATION - 47
            # SPEI_END_INPUT_STREAM - 2
            # SPEI_END_SR_STREAM - 34
            # SPEI_FALSE_RECOGNITION - 43
            # SPEI_HYPOTHESIS - 39
            # SPEI_INTERFERENCE - 44
            # SPEI_MAX_SR - 55
            # SPEI_MAX_TTS - 15
            # SPEI_MIN_SR - 34
            # SPEI_MIN_TTS - 1
            # SPEI_PHONEME - 6
            # SPEI_PHRASE_START - 37
            # SPEI_PROPERTY_NUM_CHANGE - 41
            # SPEI_PROPERTY_STRING_CHANGE - 42
            # SPEI_RECO_OTHER_CONTEXT - 49
            # SPEI_RECO_STATE_CHANGE - 46
            # SPEI_RECOGNITION - 38
            # SPEI_REQUEST_UI - 45
            # SPEI_RESERVED1 - 30
            # SPEI_RESERVED2 - 33
            # SPEI_RESERVED3 - 63
            # SPEI_RESERVED5 - 54
            # SPEI_RESERVED6 - 55
            # SPEI_SENTENCE_BOUNDARY - 7
            # SPEI_SOUND_END - 36
            # SPEI_SOUND_START - 35
            # SPEI_SR_AUDIO_LEVEL - 50
            # SPEI_SR_BOOKMARK - 40
            # SPEI_SR_PRIVATE - 52
            # SPEI_SR_RETAINEDAUDIO - 51
            # SPEI_START_INPUT_STREAM - 1
            # SPEI_START_SR_STREAM - 48
            # SPEI_TTS_AUDIO_LEVEL - 9
            # SPEI_TTS_BOOKMARK - 4
            # SPEI_TTS_PRIVATE - 15
            # SPEI_UNDEFINED - 0
            # SPEI_VISEME - 8
            # SPEI_VOICE_CHANGE - 3
            # SPEI_WORD_BOUNDARY - 5
            return { SPEI_ACTIVE_CATEGORY_CHANGED 53 SPEI_ADAPTATION 47 SPEI_END_INPUT_STREAM 2 SPEI_END_SR_STREAM 34 SPEI_FALSE_RECOGNITION 43 SPEI_HYPOTHESIS 39 SPEI_INTERFERENCE 44 SPEI_MAX_SR 55 SPEI_MAX_TTS 15 SPEI_MIN_SR 34 SPEI_MIN_TTS 1 SPEI_PHONEME 6 SPEI_PHRASE_START 37 SPEI_PROPERTY_NUM_CHANGE 41 SPEI_PROPERTY_STRING_CHANGE 42 SPEI_RECO_OTHER_CONTEXT 49 SPEI_RECO_STATE_CHANGE 46 SPEI_RECOGNITION 38 SPEI_REQUEST_UI 45 SPEI_RESERVED1 30 SPEI_RESERVED2 33 SPEI_RESERVED3 63 SPEI_RESERVED5 54 SPEI_RESERVED6 55 SPEI_SENTENCE_BOUNDARY 7 SPEI_SOUND_END 36 SPEI_SOUND_START 35 SPEI_SR_AUDIO_LEVEL 50 SPEI_SR_BOOKMARK 40 SPEI_SR_PRIVATE 52 SPEI_SR_RETAINEDAUDIO 51 SPEI_START_INPUT_STREAM 1 SPEI_START_SR_STREAM 48 SPEI_TTS_AUDIO_LEVEL 9 SPEI_TTS_BOOKMARK 4 SPEI_TTS_PRIVATE 15 SPEI_UNDEFINED 0 SPEI_VISEME 8 SPEI_VOICE_CHANGE 3 SPEI_WORD_BOUNDARY 5 }
        }

        proc SPFILEMODE {} {
            # SPFM_CREATE - 2
            # SPFM_CREATE_ALWAYS - 3
            # SPFM_NUM_MODES - 4
            # SPFM_OPEN_READONLY - 0
            # SPFM_OPEN_READWRITE - 1
            return { SPFM_CREATE 2 SPFM_CREATE_ALWAYS 3 SPFM_NUM_MODES 4 SPFM_OPEN_READONLY 0 SPFM_OPEN_READWRITE 1 }
        }

        proc SPGRAMMARSTATE {} {
            # SPGS_DISABLED - 0
            # SPGS_ENABLED - 1
            # SPGS_EXCLUSIVE - 3
            return { SPGS_DISABLED 0 SPGS_ENABLED 1 SPGS_EXCLUSIVE 3 }
        }

        proc SPGRAMMARWORDTYPE {} {
            # SPWT_DISPLAY - 0
            # SPWT_LEXICAL - 1
            # SPWT_LEXICAL_NO_SPECIAL_CHARS - 3
            # SPWT_PRONUNCIATION - 2
            return { SPWT_DISPLAY 0 SPWT_LEXICAL 1 SPWT_LEXICAL_NO_SPECIAL_CHARS 3 SPWT_PRONUNCIATION 2 }
        }

        proc SPINTERFERENCE {} {
            # SPINTERFERENCE_LATENCY_TRUNCATE_BEGIN - 8
            # SPINTERFERENCE_LATENCY_TRUNCATE_END - 9
            # SPINTERFERENCE_LATENCY_WARNING - 7
            # SPINTERFERENCE_NOISE - 1
            # SPINTERFERENCE_NONE - 0
            # SPINTERFERENCE_NOSIGNAL - 2
            # SPINTERFERENCE_TOOFAST - 5
            # SPINTERFERENCE_TOOLOUD - 3
            # SPINTERFERENCE_TOOQUIET - 4
            # SPINTERFERENCE_TOOSLOW - 6
            return { SPINTERFERENCE_LATENCY_TRUNCATE_BEGIN 8 SPINTERFERENCE_LATENCY_TRUNCATE_END 9 SPINTERFERENCE_LATENCY_WARNING 7 SPINTERFERENCE_NOISE 1 SPINTERFERENCE_NONE 0 SPINTERFERENCE_NOSIGNAL 2 SPINTERFERENCE_TOOFAST 5 SPINTERFERENCE_TOOLOUD 3 SPINTERFERENCE_TOOQUIET 4 SPINTERFERENCE_TOOSLOW 6 }
        }

        proc SPLEXICONTYPE {} {
            # eLEXTYPE_APP - 2
            # eLEXTYPE_LETTERTOSOUND - 8
            # eLEXTYPE_MORPHOLOGY - 16
            # eLEXTYPE_PRIVATE1 - 4096
            # eLEXTYPE_PRIVATE2 - 8192
            # eLEXTYPE_PRIVATE3 - 16384
            # eLEXTYPE_PRIVATE4 - 32768
            # eLEXTYPE_PRIVATE5 - 65536
            # eLEXTYPE_PRIVATE6 - 131072
            # eLEXTYPE_PRIVATE7 - 262144
            # eLEXTYPE_PRIVATE8 - 524288
            # eLEXTYPE_PRIVATE9 - 1048576
            # eLEXTYPE_PRIVATE10 - 2097152
            # eLEXTYPE_PRIVATE11 - 4194304
            # eLEXTYPE_PRIVATE12 - 8388608
            # eLEXTYPE_PRIVATE13 - 16777216
            # eLEXTYPE_PRIVATE14 - 33554432
            # eLEXTYPE_PRIVATE15 - 67108864
            # eLEXTYPE_PRIVATE16 - 134217728
            # eLEXTYPE_PRIVATE17 - 268435456
            # eLEXTYPE_PRIVATE18 - 536870912
            # eLEXTYPE_PRIVATE19 - 1073741824
            # eLEXTYPE_PRIVATE20 - -2147483648
            # eLEXTYPE_RESERVED4 - 32
            # eLEXTYPE_RESERVED6 - 128
            # eLEXTYPE_RESERVED7 - 256
            # eLEXTYPE_RESERVED8 - 512
            # eLEXTYPE_RESERVED9 - 1024
            # eLEXTYPE_RESERVED10 - 2048
            # eLEXTYPE_USER - 1
            # eLEXTYPE_USER_SHORTCUT - 64
            # eLEXTYPE_VENDORLEXICON - 4
            return { eLEXTYPE_APP 2 eLEXTYPE_LETTERTOSOUND 8 eLEXTYPE_MORPHOLOGY 16 eLEXTYPE_PRIVATE1 4096 eLEXTYPE_PRIVATE2 8192 eLEXTYPE_PRIVATE3 16384 eLEXTYPE_PRIVATE4 32768 eLEXTYPE_PRIVATE5 65536 eLEXTYPE_PRIVATE6 131072 eLEXTYPE_PRIVATE7 262144 eLEXTYPE_PRIVATE8 524288 eLEXTYPE_PRIVATE9 1048576 eLEXTYPE_PRIVATE10 2097152 eLEXTYPE_PRIVATE11 4194304 eLEXTYPE_PRIVATE12 8388608 eLEXTYPE_PRIVATE13 16777216 eLEXTYPE_PRIVATE14 33554432 eLEXTYPE_PRIVATE15 67108864 eLEXTYPE_PRIVATE16 134217728 eLEXTYPE_PRIVATE17 268435456 eLEXTYPE_PRIVATE18 536870912 eLEXTYPE_PRIVATE19 1073741824 eLEXTYPE_PRIVATE20 -2147483648 eLEXTYPE_RESERVED4 32 eLEXTYPE_RESERVED6 128 eLEXTYPE_RESERVED7 256 eLEXTYPE_RESERVED8 512 eLEXTYPE_RESERVED9 1024 eLEXTYPE_RESERVED10 2048 eLEXTYPE_USER 1 eLEXTYPE_USER_SHORTCUT 64 eLEXTYPE_VENDORLEXICON 4 }
        }

        proc SPLOADOPTIONS {} {
            # SPLO_DYNAMIC - 1
            # SPLO_STATIC - 0
            return { SPLO_DYNAMIC 1 SPLO_STATIC 0 }
        }

        proc SPPARTOFSPEECH {} {
            # SPPS_Function - 16384
            # SPPS_Interjection - 20480
            # SPPS_LMA - 28672
            # SPPS_Modifier - 12288
            # SPPS_Noncontent - 24576
            # SPPS_NotOverriden - -1
            # SPPS_Noun - 4096
            # SPPS_SuppressWord - 61440
            # SPPS_Unknown - 0
            # SPPS_Verb - 8192
            return { SPPS_Function 16384 SPPS_Interjection 20480 SPPS_LMA 28672 SPPS_Modifier 12288 SPPS_Noncontent 24576 SPPS_NotOverriden -1 SPPS_Noun 4096 SPPS_SuppressWord 61440 SPPS_Unknown 0 SPPS_Verb 8192 }
        }

        proc SPRECOSTATE {} {
            # SPRST_ACTIVE - 1
            # SPRST_ACTIVE_ALWAYS - 2
            # SPRST_INACTIVE - 0
            # SPRST_INACTIVE_WITH_PURGE - 3
            # SPRST_NUM_STATES - 4
            return { SPRST_ACTIVE 1 SPRST_ACTIVE_ALWAYS 2 SPRST_INACTIVE 0 SPRST_INACTIVE_WITH_PURGE 3 SPRST_NUM_STATES 4 }
        }

        proc SPRULESTATE {} {
            # SPRS_ACTIVE - 1
            # SPRS_ACTIVE_USER_DELIMITED - 4
            # SPRS_ACTIVE_WITH_AUTO_PAUSE - 3
            # SPRS_INACTIVE - 0
            return { SPRS_ACTIVE 1 SPRS_ACTIVE_USER_DELIMITED 4 SPRS_ACTIVE_WITH_AUTO_PAUSE 3 SPRS_INACTIVE 0 }
        }

        proc SPSEMANTICFORMAT {} {
            # SPSMF_SAPI_PROPERTIES - 0
            # SPSMF_SRGS_SAPIPROPERTIES - 2
            # SPSMF_SRGS_SEMANTICINTERPRETATION_MS - 1
            # SPSMF_SRGS_SEMANTICINTERPRETATION_W3C - 8
            # SPSMF_UPS - 4
            return { SPSMF_SAPI_PROPERTIES 0 SPSMF_SRGS_SAPIPROPERTIES 2 SPSMF_SRGS_SEMANTICINTERPRETATION_MS 1 SPSMF_SRGS_SEMANTICINTERPRETATION_W3C 8 SPSMF_UPS 4 }
        }

        proc SPSHORTCUTTYPE {} {
            # SPPS_RESERVED1 - 12288
            # SPPS_RESERVED2 - 16384
            # SPPS_RESERVED3 - 20480
            # SPPS_RESERVED4 - 61440
            # SPSHT_EMAIL - 4096
            # SPSHT_NotOverriden - -1
            # SPSHT_OTHER - 8192
            # SPSHT_Unknown - 0
            return { SPPS_RESERVED1 12288 SPPS_RESERVED2 16384 SPPS_RESERVED3 20480 SPPS_RESERVED4 61440 SPSHT_EMAIL 4096 SPSHT_NotOverriden -1 SPSHT_OTHER 8192 SPSHT_Unknown 0 }
        }

        proc SPVISEMES {} {
            # SP_VISEME_0 - 0
            # SP_VISEME_1 - 1
            # SP_VISEME_2 - 2
            # SP_VISEME_3 - 3
            # SP_VISEME_4 - 4
            # SP_VISEME_5 - 5
            # SP_VISEME_6 - 6
            # SP_VISEME_7 - 7
            # SP_VISEME_8 - 8
            # SP_VISEME_9 - 9
            # SP_VISEME_10 - 10
            # SP_VISEME_11 - 11
            # SP_VISEME_12 - 12
            # SP_VISEME_13 - 13
            # SP_VISEME_14 - 14
            # SP_VISEME_15 - 15
            # SP_VISEME_16 - 16
            # SP_VISEME_17 - 17
            # SP_VISEME_18 - 18
            # SP_VISEME_19 - 19
            # SP_VISEME_20 - 20
            # SP_VISEME_21 - 21
            return { SP_VISEME_0 0 SP_VISEME_1 1 SP_VISEME_2 2 SP_VISEME_3 3 SP_VISEME_4 4 SP_VISEME_5 5 SP_VISEME_6 6 SP_VISEME_7 7 SP_VISEME_8 8 SP_VISEME_9 9 SP_VISEME_10 10 SP_VISEME_11 11 SP_VISEME_12 12 SP_VISEME_13 13 SP_VISEME_14 14 SP_VISEME_15 15 SP_VISEME_16 16 SP_VISEME_17 17 SP_VISEME_18 18 SP_VISEME_19 19 SP_VISEME_20 20 SP_VISEME_21 21 }
        }

        proc SPVPRIORITY {} {
            # SPVPRI_ALERT - 1
            # SPVPRI_NORMAL - 0
            # SPVPRI_OVER - 2
            return { SPVPRI_ALERT 1 SPVPRI_NORMAL 0 SPVPRI_OVER 2 }
        }

        proc SPWAVEFORMATTYPE {} {
            # SPWF_INPUT - 0
            # SPWF_SRENGINE - 1
            return { SPWF_INPUT 0 SPWF_SRENGINE 1 }
        }

        proc SPWORDPRONOUNCEABLE {} {
            # SPWP_KNOWN_WORD_PRONOUNCEABLE - 2
            # SPWP_UNKNOWN_WORD_PRONOUNCEABLE - 1
            # SPWP_UNKNOWN_WORD_UNPRONOUNCEABLE - 0
            return { SPWP_KNOWN_WORD_PRONOUNCEABLE 2 SPWP_UNKNOWN_WORD_PRONOUNCEABLE 1 SPWP_UNKNOWN_WORD_UNPRONOUNCEABLE 0 }
        }

        proc SPWORDTYPE {} {
            # eWORDTYPE_ADDED - 1
            # eWORDTYPE_DELETED - 2
            return { eWORDTYPE_ADDED 1 eWORDTYPE_DELETED 2 }
        }

        proc SPXMLRESULTOPTIONS {} {
            # SPXRO_Alternates_SML - 1
            # SPXRO_SML - 0
            return { SPXRO_Alternates_SML 1 SPXRO_SML 0 }
        }
    }

    variable enums

    array set enums [list \
        _SPAUDIOSTATE [Enum::_SPAUDIOSTATE] \
        DISPID_SpeechAudio [Enum::DISPID_SpeechAudio] \
        DISPID_SpeechAudioBufferInfo [Enum::DISPID_SpeechAudioBufferInfo] \
        DISPID_SpeechAudioFormat [Enum::DISPID_SpeechAudioFormat] \
        DISPID_SpeechAudioStatus [Enum::DISPID_SpeechAudioStatus] \
        DISPID_SpeechBaseStream [Enum::DISPID_SpeechBaseStream] \
        DISPID_SpeechCustomStream [Enum::DISPID_SpeechCustomStream] \
        DISPID_SpeechDataKey [Enum::DISPID_SpeechDataKey] \
        DISPID_SpeechFileStream [Enum::DISPID_SpeechFileStream] \
        DISPID_SpeechGrammarRule [Enum::DISPID_SpeechGrammarRule] \
        DISPID_SpeechGrammarRules [Enum::DISPID_SpeechGrammarRules] \
        DISPID_SpeechGrammarRuleState [Enum::DISPID_SpeechGrammarRuleState] \
        DISPID_SpeechGrammarRuleStateTransition [Enum::DISPID_SpeechGrammarRuleStateTransition] \
        DISPID_SpeechGrammarRuleStateTransitions [Enum::DISPID_SpeechGrammarRuleStateTransitions] \
        DISPID_SpeechLexicon [Enum::DISPID_SpeechLexicon] \
        DISPID_SpeechLexiconProns [Enum::DISPID_SpeechLexiconProns] \
        DISPID_SpeechLexiconPronunciation [Enum::DISPID_SpeechLexiconPronunciation] \
        DISPID_SpeechLexiconWord [Enum::DISPID_SpeechLexiconWord] \
        DISPID_SpeechLexiconWords [Enum::DISPID_SpeechLexiconWords] \
        DISPID_SpeechMemoryStream [Enum::DISPID_SpeechMemoryStream] \
        DISPID_SpeechMMSysAudio [Enum::DISPID_SpeechMMSysAudio] \
        DISPID_SpeechObjectToken [Enum::DISPID_SpeechObjectToken] \
        DISPID_SpeechObjectTokenCategory [Enum::DISPID_SpeechObjectTokenCategory] \
        DISPID_SpeechObjectTokens [Enum::DISPID_SpeechObjectTokens] \
        DISPID_SpeechPhoneConverter [Enum::DISPID_SpeechPhoneConverter] \
        DISPID_SpeechPhraseAlternate [Enum::DISPID_SpeechPhraseAlternate] \
        DISPID_SpeechPhraseAlternates [Enum::DISPID_SpeechPhraseAlternates] \
        DISPID_SpeechPhraseBuilder [Enum::DISPID_SpeechPhraseBuilder] \
        DISPID_SpeechPhraseElement [Enum::DISPID_SpeechPhraseElement] \
        DISPID_SpeechPhraseElements [Enum::DISPID_SpeechPhraseElements] \
        DISPID_SpeechPhraseInfo [Enum::DISPID_SpeechPhraseInfo] \
        DISPID_SpeechPhraseProperties [Enum::DISPID_SpeechPhraseProperties] \
        DISPID_SpeechPhraseProperty [Enum::DISPID_SpeechPhraseProperty] \
        DISPID_SpeechPhraseReplacement [Enum::DISPID_SpeechPhraseReplacement] \
        DISPID_SpeechPhraseReplacements [Enum::DISPID_SpeechPhraseReplacements] \
        DISPID_SpeechPhraseRule [Enum::DISPID_SpeechPhraseRule] \
        DISPID_SpeechPhraseRules [Enum::DISPID_SpeechPhraseRules] \
        DISPID_SpeechRecoContext [Enum::DISPID_SpeechRecoContext] \
        DISPID_SpeechRecoContextEvents [Enum::DISPID_SpeechRecoContextEvents] \
        DISPID_SpeechRecognizer [Enum::DISPID_SpeechRecognizer] \
        DISPID_SpeechRecognizerStatus [Enum::DISPID_SpeechRecognizerStatus] \
        DISPID_SpeechRecoResult [Enum::DISPID_SpeechRecoResult] \
        DISPID_SpeechRecoResult2 [Enum::DISPID_SpeechRecoResult2] \
        DISPID_SpeechRecoResultTimes [Enum::DISPID_SpeechRecoResultTimes] \
        DISPID_SpeechVoice [Enum::DISPID_SpeechVoice] \
        DISPID_SpeechVoiceEvent [Enum::DISPID_SpeechVoiceEvent] \
        DISPID_SpeechVoiceStatus [Enum::DISPID_SpeechVoiceStatus] \
        DISPID_SpeechWaveFormatEx [Enum::DISPID_SpeechWaveFormatEx] \
        DISPID_SpeechXMLRecoResult [Enum::DISPID_SpeechXMLRecoResult] \
        DISPIDSPRG [Enum::DISPIDSPRG] \
        DISPIDSPTSI [Enum::DISPIDSPTSI] \
        SPADAPTATIONRELEVANCE [Enum::SPADAPTATIONRELEVANCE] \
        SPAUDIOOPTIONS [Enum::SPAUDIOOPTIONS] \
        SPBOOKMARKOPTIONS [Enum::SPBOOKMARKOPTIONS] \
        SPCATEGORYTYPE [Enum::SPCATEGORYTYPE] \
        SPCONTEXTSTATE [Enum::SPCONTEXTSTATE] \
        SPDATAKEYLOCATION [Enum::SPDATAKEYLOCATION] \
        SpeechAudioFormatType [Enum::SpeechAudioFormatType] \
        SpeechAudioState [Enum::SpeechAudioState] \
        SpeechBookmarkOptions [Enum::SpeechBookmarkOptions] \
        SpeechDataKeyLocation [Enum::SpeechDataKeyLocation] \
        SpeechDiscardType [Enum::SpeechDiscardType] \
        SpeechDisplayAttributes [Enum::SpeechDisplayAttributes] \
        SpeechEmulationCompareFlags [Enum::SpeechEmulationCompareFlags] \
        SpeechEngineConfidence [Enum::SpeechEngineConfidence] \
        SpeechFormatType [Enum::SpeechFormatType] \
        SpeechGrammarRuleStateTransitionType [Enum::SpeechGrammarRuleStateTransitionType] \
        SpeechGrammarState [Enum::SpeechGrammarState] \
        SpeechGrammarWordType [Enum::SpeechGrammarWordType] \
        SpeechInterference [Enum::SpeechInterference] \
        SpeechLexiconType [Enum::SpeechLexiconType] \
        SpeechLoadOption [Enum::SpeechLoadOption] \
        SpeechPartOfSpeech [Enum::SpeechPartOfSpeech] \
        SpeechRecoContextState [Enum::SpeechRecoContextState] \
        SpeechRecoEvents [Enum::SpeechRecoEvents] \
        SpeechRecognitionType [Enum::SpeechRecognitionType] \
        SpeechRecognizerState [Enum::SpeechRecognizerState] \
        SpeechRetainedAudioOptions [Enum::SpeechRetainedAudioOptions] \
        SpeechRuleAttributes [Enum::SpeechRuleAttributes] \
        SpeechRuleState [Enum::SpeechRuleState] \
        SpeechRunState [Enum::SpeechRunState] \
        SpeechSpecialTransitionType [Enum::SpeechSpecialTransitionType] \
        SpeechStreamFileMode [Enum::SpeechStreamFileMode] \
        SpeechStreamSeekPositionType [Enum::SpeechStreamSeekPositionType] \
        SpeechTokenContext [Enum::SpeechTokenContext] \
        SpeechTokenShellFolder [Enum::SpeechTokenShellFolder] \
        SpeechVisemeFeature [Enum::SpeechVisemeFeature] \
        SpeechVisemeType [Enum::SpeechVisemeType] \
        SpeechVoiceEvents [Enum::SpeechVoiceEvents] \
        SpeechVoicePriority [Enum::SpeechVoicePriority] \
        SpeechVoiceSpeakFlags [Enum::SpeechVoiceSpeakFlags] \
        SpeechWordPronounceable [Enum::SpeechWordPronounceable] \
        SpeechWordType [Enum::SpeechWordType] \
        SPEVENTENUM [Enum::SPEVENTENUM] \
        SPFILEMODE [Enum::SPFILEMODE] \
        SPGRAMMARSTATE [Enum::SPGRAMMARSTATE] \
        SPGRAMMARWORDTYPE [Enum::SPGRAMMARWORDTYPE] \
        SPINTERFERENCE [Enum::SPINTERFERENCE] \
        SPLEXICONTYPE [Enum::SPLEXICONTYPE] \
        SPLOADOPTIONS [Enum::SPLOADOPTIONS] \
        SPPARTOFSPEECH [Enum::SPPARTOFSPEECH] \
        SPRECOSTATE [Enum::SPRECOSTATE] \
        SPRULESTATE [Enum::SPRULESTATE] \
        SPSEMANTICFORMAT [Enum::SPSEMANTICFORMAT] \
        SPSHORTCUTTYPE [Enum::SPSHORTCUTTYPE] \
        SPVISEMES [Enum::SPVISEMES] \
        SPVPRIORITY [Enum::SPVPRIORITY] \
        SPWAVEFORMATTYPE [Enum::SPWAVEFORMATTYPE] \
        SPWORDPRONOUNCEABLE [Enum::SPWORDPRONOUNCEABLE] \
        SPWORDTYPE [Enum::SPWORDTYPE] \
        SPXMLRESULTOPTIONS [Enum::SPXMLRESULTOPTIONS] \
    ]

    namespace export GetEnum
    namespace export GetEnumName
    namespace export GetEnumNames
    namespace export GetEnumTypes
    namespace export GetEnumVal

    proc GetEnumTypes {} {
        # Get available enumeration types.
        #
        # Returns the list of available enumeration types.
        #
        # See also: GetEnumName GetEnumNames GetEnumVal GetEnum

        variable enums

        return [lsort -dictionary [array names enums]]
    }

    proc GetEnumName { enumType enumVal } {
        # Get name of a given enumeration type and numeric value.
        #
        # enumType - Enumeration type
        # enumVal  - Enumeration numeric value.
        #
        # Returns the list of names of a given enumeration type.
        #
        # See also: GetEnumNames GetEnumTypes GetEnumVal GetEnum

        variable enums

        set enumName ""
        if { [info exists enums($enumType)] } {
            foreach { key val } $enums($enumType) {
                if { $val eq $enumVal } {
                    set enumName $key
                    break
                }
            }
        }
        return $enumName
    }

    proc GetEnumNames { enumType } {
        # Get names of a given enumeration type.
        #
        # enumType - Enumeration type
        #
        # Returns the list of names of a given enumeration type.
        #
        # See also: GetEnumName GetEnumTypes GetEnumVal GetEnum

        variable enums

        if { [info exists enums($enumType)] } {
            foreach { key val } $enums($enumType) {
                lappend nameList $key
            }
            return $nameList
        } else {
            return [list]
        }
    }

    proc GetEnumVal { enumName } {
        # Get numeric value of an enumeration name.
        #
        # enumName - Enumeration name
        #
        # Returns the numeric value of an enumeration name.
        #
        # See also: GetEnumName GetEnumTypes GetEnumNames GetEnum

        variable enums

        foreach enumType [GetEnumTypes] {
            set ind [lsearch -exact $enums($enumType) $enumName]
            if { $ind >= 0 } {
                return [lindex $enums($enumType) [expr { $ind + 1 }]]
            }
        }
        return ""
    }

    proc GetEnum { enumOrString } {
        # Get numeric value of an enumeration.
        #
        # enumOrString - Enumeration name
        #
        # Returns the numeric value of an enumeration.
        #
        # See also: GetEnumName GetEnumTypes GetEnumVal GetEnumNames

        set retVal [catch { expr int($enumOrString) } enumInt]
        if { $retVal == 0 } {
            return $enumInt
        } else {
            return [GetEnumVal $enumOrString]
        }
    }

}
