home *** CD-ROM | disk | FTP | other *** search
/ CLIX - Fazer Clix Custa Nix / CLIX-CD.cdr / mac / lib / Mac / SpeechRecognition.xs < prev    next >
Text File  |  1998-04-05  |  20KB  |  786 lines

  1. /* $Header: /home/neeri/MacCVS/MacPerl/perl/ext/Mac/SpeechRecognition/SpeechRecognition.xs,v 1.3 1997/11/18 00:53:23 neeri Exp $
  2.  *
  3.  *    Copyright (c) 1996 Matthias Neeracher
  4.  *
  5.  *    You may distribute under the terms of the Perl Artistic License,
  6.  *    as specified in the README file.
  7.  *
  8.  * $Log: SpeechRecognition.xs,v $
  9.  * Revision 1.3  1997/11/18 00:53:23  neeri
  10.  * MacPerl 5.1.5
  11.  *
  12.  * Revision 1.2  1997/08/08 16:39:31  neeri
  13.  * MacPerl 5.1.4b1 + time() fix
  14.  *
  15.  * Revision 1.1  1997/04/07 20:50:51  neeri
  16.  * Synchronized with MacPerl 5.1.4a1
  17.  *
  18.  */
  19.  
  20. #define MAC_CONTEXT
  21.  
  22. #include "EXTERN.h"
  23. #include "perl.h"
  24. #include "XSUB.h"
  25. #include <Types.h>
  26. #include <Memory.h>
  27. #include <TFileSpec.h>
  28. #include <SpeechRecognition.h>
  29.  
  30. #ifdef __CFM68K__
  31.  
  32. #undef THREEWORDINLINE
  33. #define THREEWORDINLINE(w1,w2,w3)  = {w1,w2,w3}
  34.  
  35. extern pascal OSErr SROpenRecognitionSystem(SRRecognitionSystem *system, OSType systemID)
  36.  THREEWORDINLINE(0x303C, 0x0400, 0xAA56);
  37.  
  38. extern pascal OSErr SRCloseRecognitionSystem(SRRecognitionSystem system)
  39.  THREEWORDINLINE(0x303C, 0x0201, 0xAA56);
  40.  
  41. extern pascal OSErr SRSetProperty(SRSpeechObject srObject, OSType selector, const void *property, Size propertyLen)
  42.  THREEWORDINLINE(0x303C, 0x0802, 0xAA56);
  43.  
  44. extern pascal OSErr SRGetProperty(SRSpeechObject srObject, OSType selector, void *property, Size *propertyLen)
  45.  THREEWORDINLINE(0x303C, 0x0803, 0xAA56);
  46.  
  47. extern pascal OSErr SRReleaseObject(SRSpeechObject srObject)
  48.  THREEWORDINLINE(0x303C, 0x0204, 0xAA56);
  49.  
  50. extern pascal OSErr SRGetReference(SRSpeechObject srObject, SRSpeechObject *newObjectRef)
  51.  THREEWORDINLINE(0x303C, 0x0425, 0xAA56);
  52.  
  53. extern pascal OSErr SRNewRecognizer(SRRecognitionSystem system, SRRecognizer *recognizer, OSType sourceID)
  54.  THREEWORDINLINE(0x303C, 0x060A, 0xAA56);
  55.  
  56. extern pascal OSErr SRStartListening(SRRecognizer recognizer)
  57.  THREEWORDINLINE(0x303C, 0x020C, 0xAA56);
  58.  
  59. extern pascal OSErr SRStopListening(SRRecognizer recognizer)
  60.  THREEWORDINLINE(0x303C, 0x020D, 0xAA56);
  61.  
  62. extern pascal OSErr SRSetLanguageModel(SRRecognizer recognizer, SRLanguageModel languageModel)
  63.  THREEWORDINLINE(0x303C, 0x040E, 0xAA56);
  64.  
  65. extern pascal OSErr SRGetLanguageModel(SRRecognizer recognizer, SRLanguageModel *languageModel)
  66.  THREEWORDINLINE(0x303C, 0x040F, 0xAA56);
  67.  
  68. extern pascal OSErr SRContinueRecognition(SRRecognizer recognizer)
  69.  THREEWORDINLINE(0x303C, 0x0210, 0xAA56);
  70.  
  71. extern pascal OSErr SRCancelRecognition(SRRecognizer recognizer)
  72.  THREEWORDINLINE(0x303C, 0x0211, 0xAA56);
  73.  
  74. extern pascal OSErr SRIdle(void )
  75.  THREEWORDINLINE(0x303C, 0x0028, 0xAA56);
  76.  
  77. extern pascal OSErr SRNewLanguageModel(SRRecognitionSystem system, SRLanguageModel *model, const void *name, Size nameLength)
  78.  THREEWORDINLINE(0x303C, 0x0812, 0xAA56);
  79.  
  80. extern pascal OSErr SRNewPath(SRRecognitionSystem system, SRPath *path)
  81.  THREEWORDINLINE(0x303C, 0x0413, 0xAA56);
  82.  
  83. extern pascal OSErr SRNewPhrase(SRRecognitionSystem system, SRPhrase *phrase, const void *text, Size textLength)
  84.  THREEWORDINLINE(0x303C, 0x0814, 0xAA56);
  85.  
  86. extern pascal OSErr SRNewWord(SRRecognitionSystem system, SRWord *word, const void *text, Size textLength)
  87.  THREEWORDINLINE(0x303C, 0x0815, 0xAA56);
  88.  
  89. extern pascal OSErr SRPutLanguageObjectIntoHandle(SRLanguageObject languageObject, Handle lobjHandle)
  90.  THREEWORDINLINE(0x303C, 0x0416, 0xAA56);
  91.  
  92. extern pascal OSErr SRPutLanguageObjectIntoDataFile(SRLanguageObject languageObject, short fRefNum)
  93.  THREEWORDINLINE(0x303C, 0x0328, 0xAA56);
  94.  
  95. extern pascal OSErr SRNewLanguageObjectFromHandle(SRRecognitionSystem system, SRLanguageObject *languageObject, Handle lObjHandle)
  96.  THREEWORDINLINE(0x303C, 0x0417, 0xAA56);
  97.  
  98. extern pascal OSErr SRNewLanguageObjectFromDataFile(SRRecognitionSystem system, SRLanguageObject *languageObject, short fRefNum)
  99.  THREEWORDINLINE(0x303C, 0x0427, 0xAA56);
  100.  
  101. extern pascal OSErr SREmptyLanguageObject(SRLanguageObject languageObject)
  102.  THREEWORDINLINE(0x303C, 0x0218, 0xAA56);
  103.  
  104. extern pascal OSErr SRChangeLanguageObject(SRLanguageObject languageObject, const void *text, Size textLength)
  105.  THREEWORDINLINE(0x303C, 0x0619, 0xAA56);
  106.  
  107. extern pascal OSErr SRAddLanguageObject(SRLanguageObject base, SRLanguageObject addon)
  108.  THREEWORDINLINE(0x303C, 0x041A, 0xAA56);
  109.  
  110. extern pascal OSErr SRAddText(SRLanguageObject base, const void *text, Size textLength, long refCon)
  111.  THREEWORDINLINE(0x303C, 0x081B, 0xAA56);
  112.  
  113. extern pascal OSErr SRRemoveLanguageObject(SRLanguageObject base, SRLanguageObject toRemove)
  114.  THREEWORDINLINE(0x303C, 0x041C, 0xAA56);
  115.  
  116. extern pascal OSErr SRCountItems(SRSpeechObject container, long *count)
  117.  THREEWORDINLINE(0x303C, 0x0405, 0xAA56);
  118.  
  119. extern pascal OSErr SRGetIndexedItem(SRSpeechObject container, SRSpeechObject *item, long index)
  120.  THREEWORDINLINE(0x303C, 0x0606, 0xAA56);
  121.  
  122. extern pascal OSErr SRSetIndexedItem(SRSpeechObject container, SRSpeechObject item, long index)
  123.  THREEWORDINLINE(0x303C, 0x0607, 0xAA56);
  124.  
  125. extern pascal OSErr SRRemoveIndexedItem(SRSpeechObject container, long index)
  126.  THREEWORDINLINE(0x303C, 0x0408, 0xAA56);
  127.  
  128. extern pascal OSErr SRDrawText(SRRecognizer recognizer, const void *dispText, Size dispLength)
  129.  THREEWORDINLINE(0x303C, 0x0621, 0xAA56);
  130.  
  131. extern pascal OSErr SRDrawRecognizedText(SRRecognizer recognizer, const void *dispText, Size dispLength)
  132.  THREEWORDINLINE(0x303C, 0x0622, 0xAA56);
  133.  
  134. extern pascal OSErr SRSpeakText(SRRecognizer recognizer, const void *speakText, Size speakLength)
  135.  THREEWORDINLINE(0x303C, 0x0620, 0xAA56);
  136.  
  137. extern pascal OSErr SRSpeakAndDrawText(SRRecognizer recognizer, const void *text, Size textLength)
  138.  THREEWORDINLINE(0x303C, 0x061F, 0xAA56);
  139.  
  140. extern pascal OSErr SRStopSpeech(SRRecognizer recognizer)
  141.  THREEWORDINLINE(0x303C, 0x0223, 0xAA56);
  142.  
  143. extern pascal Boolean SRSpeechBusy(SRRecognizer recognizer)
  144.  THREEWORDINLINE(0x303C, 0x0224, 0xAA56);
  145.  
  146. extern pascal OSErr SRProcessBegin(SRRecognizer recognizer, Boolean failed)
  147.  THREEWORDINLINE(0x303C, 0x031D, 0xAA56);
  148.  
  149. extern pascal OSErr SRProcessEnd(SRRecognizer recognizer, Boolean failed)
  150.  THREEWORDINLINE(0x303C, 0x031E, 0xAA56);
  151. #endif
  152.  
  153. #define SpeechFail(error)   if (gLastMacOSErr = (error)) { XSRETURN_UNDEF; } else 0
  154.  
  155. MODULE = Mac::SpeechRecognition PACKAGE = Mac::SpeechRecognition
  156.  
  157. =head2 Functions
  158.  
  159. =over 4
  160.  
  161. =item SRMakeSpeechObject OBJ 
  162.  
  163. =cut
  164. SRSpeechObject
  165. SRMakeSpeechObject(obj)
  166.     OSType  obj
  167.     CODE:
  168.     RETVAL = (SRSpeechObject) obj;
  169.     OUTPUT:
  170.     RETVAL
  171.  
  172.  
  173. =item SROpenRecognitionSystem [ SYSTEMID ]
  174.  
  175. =cut
  176. SRSpeechObject
  177. SROpenRecognitionSystem(systemID=0)
  178.     OSType  systemID
  179.     CODE:
  180.     SpeechFail(SROpenRecognitionSystem(&RETVAL, systemID));
  181.     OUTPUT:
  182.     RETVAL
  183.  
  184.  
  185. =item SRCloseRecognitionSystem SYSTEM 
  186.  
  187. =cut
  188. MacOSRet
  189. SRCloseRecognitionSystem(system)
  190.     SRSpeechObject  system
  191.  
  192.  
  193. =item SRSetProperty SROBJECT, SELECTOR, PROPERTY 
  194.  
  195. =cut
  196. MacOSRet
  197. SRSetProperty(srObject, selector, property)
  198.     SRSpeechObject  srObject
  199.     OSType          selector
  200.     SV *            property
  201.     CODE:
  202.     {
  203.         STRLEN  propSize;
  204.         char    buf[256];
  205.         void *  propPtr = buf;
  206.         switch (selector) {
  207.         case kSRForegroundOnly:
  208.         case kSRBlockBackground:
  209.         case kSRBlockModally:
  210.         case kSRWantsResultTextDrawn:
  211.         case kSRWantsAutoFBGestures:
  212.         case kSRCancelOnSoundOut:
  213.         case kSROptional:
  214.         case kSREnabled:
  215.         case kSRRepeatable:
  216.         case kSRRejectable:
  217.             *(Boolean *)buf = (Boolean) SvIV(property);
  218.             propSize    = 1;
  219.             break;
  220.         case kSRFeedbackAndListeningModes:
  221.         case kSRSoundInVolume:
  222.         case kSRListenKeyMode:
  223.         case kSRListenKeyCombo:
  224.         case kSRRejectionLevel:
  225.             *(u_short *)buf = (u_short) SvIV(property);
  226.             propSize    = 2;
  227.             break;
  228.         case kSRNotificationParam:
  229.         case kSRSearchStatusParam:
  230.         case kSRRefCon:
  231.             *(u_long *)buf  = (u_long) SvIV(property);
  232.             propSize    = 4;
  233.             break;
  234.         case kSRLMObjType:
  235.             memcpy(buf, SvPV(property, na), propSize = 4);
  236.             break;
  237.         case kSRRejectedWord:
  238.         case kSRLanguageModelFormat:
  239.         case kSRPathFormat:
  240.         case kSRPhraseFormat:
  241.             if (sv_isa(property, "SRSpeechObject"))
  242.                 *(SRSpeechObject *)buf = (SRSpeechObject)SvIV((SV*)SvRV(property));
  243.             else
  244.                 croak("property is not of type SRSpeechObject");
  245.             propSize    = 4;
  246.             break;
  247.         case kSRReadAudioFSSpec:
  248.             Path2FSSpec((char *) SvPV(property,na), (FSSpec *)buf);
  249.             propSize = sizeof(FSSpec);
  250.             break;
  251.         case kSRListenKeyName:
  252.         case kSRKeyWord:
  253.             CopyC2PStr(SvPV(property,na), (StringPtr) buf);
  254.             propSize = *buf+1;
  255.             break;
  256.         case kSRTEXTFormat:
  257.         case kSRSpelling:
  258.             propPtr = SvPV(property, propSize);
  259.             break;
  260.         }
  261.         RETVAL = SRSetProperty(srObject, selector, propPtr, propSize);
  262.     }
  263.     OUTPUT:
  264.     RETVAL
  265.  
  266.  
  267. =item SRGetProperty SROBJECT, SELECTOR 
  268.  
  269. =cut
  270. void
  271. SRGetProperty(srObject, selector)
  272.     SRSpeechObject  srObject
  273.     OSType          selector
  274.     CODE:
  275.     {
  276.         STRLEN  propSize;
  277.         char    buf[256];
  278.         void *  propPtr = buf;
  279.         *(long *)buf = 0;
  280.         switch (selector) {
  281.         case kSRForegroundOnly:
  282.         case kSRBlockBackground:
  283.         case kSRBlockModally:
  284.         case kSRWantsResultTextDrawn:
  285.         case kSRWantsAutoFBGestures:
  286.         case kSRCancelOnSoundOut:
  287.         case kSROptional:
  288.         case kSREnabled:
  289.         case kSRRepeatable:
  290.         case kSRRejectable:
  291.             propPtr = buf+3;
  292.             propSize= 1;
  293.             break;
  294.         case kSRFeedbackAndListeningModes:
  295.         case kSRSoundInVolume:
  296.         case kSRListenKeyMode:
  297.         case kSRListenKeyCombo:
  298.         case kSRRejectionLevel:
  299.             propPtr = buf+2;
  300.             propSize= 2;
  301.             break;
  302.         case kSRNotificationParam:
  303.         case kSRSearchStatusParam:
  304.         case kSRRefCon:
  305.         case kSRLMObjType:
  306.         case kSRRejectedWord:
  307.         case kSRLanguageModelFormat:
  308.         case kSRPathFormat:
  309.         case kSRPhraseFormat:
  310.             propPtr = buf;
  311.             propSize= 4;
  312.             break;
  313.         case kSRReadAudioFSSpec:
  314.             propPtr = buf;
  315.             propSize= sizeof(FSSpec);
  316.             break;
  317.         case kSRListenKeyName:
  318.         case kSRKeyWord:
  319.         case kSRTEXTFormat:
  320.         case kSRSpelling:
  321.             propPtr = buf;
  322.             propSize= 256;
  323.             break;
  324.         }
  325.         SpeechFail(SRGetProperty(srObject, selector, propPtr, (long *)&propSize));
  326.         /* Should handle buffer too small, but we won't */
  327.         ST(0) = sv_newmortal();
  328.         switch (selector) {
  329.         case kSRForegroundOnly:
  330.         case kSRBlockBackground:
  331.         case kSRBlockModally:
  332.         case kSRWantsResultTextDrawn:
  333.         case kSRWantsAutoFBGestures:
  334.         case kSRCancelOnSoundOut:
  335.         case kSROptional:
  336.         case kSREnabled:
  337.         case kSRRepeatable:
  338.         case kSRRejectable:
  339.         case kSRFeedbackAndListeningModes:
  340.         case kSRSoundInVolume:
  341.         case kSRListenKeyMode:
  342.         case kSRListenKeyCombo:
  343.         case kSRRejectionLevel:
  344.         case kSRNotificationParam:
  345.         case kSRSearchStatusParam:
  346.         case kSRRefCon:
  347.             if (*buf & 0x80)
  348.                 sv_setnv(ST(0), (double)*(u_long *)buf);
  349.             else
  350.                 sv_setiv(ST(0), *(IV *)buf);
  351.             break;
  352.         case kSRLMObjType:
  353.             sv_setpvn(ST(0), buf, 4);
  354.             break;
  355.         case kSRRejectedWord:
  356.         case kSRLanguageModelFormat:
  357.         case kSRPathFormat:
  358.         case kSRPhraseFormat:
  359.             sv_setref_pv(ST(0), "SRSpeechObject", (void*)*(SRSpeechObject *)buf);
  360.             break;
  361.         case kSRReadAudioFSSpec:
  362.             sv_setpv(ST(0), FSp2FullPath((FSSpec *)buf));
  363.             break;
  364.         case kSRListenKeyName:
  365.         case kSRKeyWord:
  366.             sv_setpvn(ST(0), buf+1, *buf);
  367.             break;
  368.         case kSRTEXTFormat:
  369.         case kSRSpelling:
  370.             sv_setpvn(ST(0), buf, propSize);
  371.             break;
  372.         }
  373.     }
  374.  
  375.  
  376. =item SRReleaseObject SROBJECT 
  377.  
  378. =cut
  379. MacOSRet
  380. SRReleaseObject(srObject)
  381.     SRSpeechObject  srObject
  382.  
  383.  
  384. =item SRGetReference SROBJECT 
  385.  
  386. =cut
  387. SRSpeechObject
  388. SRGetReference(srObject)
  389.     SRSpeechObject  srObject
  390.     CODE:
  391.     SpeechFail(SRGetReference(srObject, &RETVAL));
  392.     OUTPUT:
  393.     RETVAL
  394.  
  395.  
  396. =item SRNewRecognizer SYSTEM [, SOURCEID ]
  397.  
  398. =cut
  399. SRSpeechObject
  400. SRNewRecognizer(system, sourceID = 0)
  401.     SRSpeechObject  system
  402.     OSType          sourceID
  403.     CODE:
  404.     SpeechFail(SRNewRecognizer(system, &RETVAL, sourceID));
  405.     OUTPUT:
  406.     RETVAL
  407.  
  408.  
  409. =item SRStartListening RECOGNIZER 
  410.  
  411. =cut
  412. MacOSRet
  413. SRStartListening(recognizer)
  414.     SRSpeechObject  recognizer
  415.  
  416.  
  417. =item SRStopListening RECOGNIZER 
  418.  
  419. =cut
  420. MacOSRet
  421. SRStopListening(recognizer)
  422.     SRSpeechObject  recognizer
  423.  
  424.  
  425. =item SRSetLanguageModel RECOGNIZER, LANGUAGEMODEL 
  426.  
  427. =cut
  428. MacOSRet
  429. SRSetLanguageModel(recognizer, languageModel)
  430.     SRSpeechObject  recognizer
  431.     SRSpeechObject  languageModel
  432.  
  433.  
  434. =item SRGetLanguageModel RECOGNIZER 
  435.  
  436. =cut
  437. SRSpeechObject
  438. SRGetLanguageModel(recognizer)
  439.     SRSpeechObject  recognizer
  440.     CODE:
  441.     SpeechFail(SRGetLanguageModel(recognizer, &RETVAL));
  442.     OUTPUT:
  443.     RETVAL
  444.  
  445.  
  446. =item SRContinueRecognition RECOGNIZER 
  447.  
  448. =cut
  449. MacOSRet
  450. SRContinueRecognition(recognizer)
  451.     SRSpeechObject  recognizer
  452.  
  453.  
  454. =item SRCancelRecognition RECOGNIZER 
  455.  
  456. =cut
  457. MacOSRet
  458. SRCancelRecognition(recognizer)
  459.     SRSpeechObject  recognizer
  460.  
  461.  
  462. =item SRIdle 
  463.  
  464. =cut
  465. MacOSRet
  466. SRIdle()
  467.  
  468.  
  469. =item SRNewLanguageModel SYSTEM, NAME 
  470.  
  471. =cut
  472. SRSpeechObject
  473. SRNewLanguageModel(system, name)
  474.     SRSpeechObject  system
  475.     SV *            name
  476.     CODE:
  477.     {
  478.         STRLEN  nameLength;
  479.         void *  namePtr = SvPV(name, nameLength);
  480.         SpeechFail(SRNewLanguageModel(system, &RETVAL, namePtr, nameLength));
  481.     }
  482.     OUTPUT:
  483.     RETVAL
  484.  
  485.  
  486. =item SRNewPath SYSTEM 
  487.  
  488. =cut
  489. SRSpeechObject
  490. SRNewPath(system)
  491.     SRSpeechObject  system
  492.     CODE:
  493.     SpeechFail(SRNewPath(system, &RETVAL));
  494.     OUTPUT:
  495.     RETVAL
  496.  
  497.  
  498. =item SRNewPhrase SYSTEM, TEXT 
  499.  
  500. =cut
  501. SRSpeechObject
  502. SRNewPhrase(system, text)
  503.     SRSpeechObject  system
  504.     SV *            text
  505.     CODE:
  506.     {
  507.         STRLEN  textLength;
  508.         void *  textPtr = SvPV(text, textLength);
  509.         SpeechFail(SRNewPhrase(system, &RETVAL, textPtr, textLength));
  510.     }
  511.     OUTPUT:
  512.     RETVAL
  513.  
  514.  
  515. =item SRNewWord SYSTEM, TEXT 
  516.  
  517. =cut
  518. SRSpeechObject
  519. SRNewWord(system, text)
  520.     SRSpeechObject  system
  521.     SV *            text
  522.     CODE:
  523.     {
  524.         STRLEN  textLength;
  525.         void *  textPtr = SvPV(text, textLength);
  526.         SpeechFail(SRNewWord(system, &RETVAL, textPtr, textLength));
  527.     }
  528.     OUTPUT:
  529.     RETVAL
  530.  
  531.  
  532. =item SRPutLanguageObjectIntoHandle LANGUAGEOBJECT, LOBJHANDLE 
  533.  
  534. =cut
  535. MacOSRet
  536. SRPutLanguageObjectIntoHandle(languageObject, lobjHandle)
  537.     SRSpeechObject  languageObject
  538.     Handle          lobjHandle
  539.  
  540.  
  541. =item SRPutLanguageObjectIntoDataFile LANGUAGEOBJECT, FREFNUM 
  542.  
  543. =cut
  544. MacOSRet
  545. SRPutLanguageObjectIntoDataFile(languageObject, fRefNum)
  546.     SRSpeechObject  languageObject
  547.     short           fRefNum
  548.  
  549.  
  550. =item SRNewLanguageObjectFromHandle SYSTEM, LOBJHANDLE 
  551.  
  552. =cut
  553. SRSpeechObject
  554. SRNewLanguageObjectFromHandle(system, lObjHandle)
  555.     SRSpeechObject  system
  556.     Handle          lObjHandle
  557.     CODE:
  558.     SpeechFail(SRNewLanguageObjectFromHandle(system, &RETVAL, lObjHandle));
  559.     OUTPUT:
  560.     RETVAL
  561.  
  562.  
  563. =item SRNewLanguageObjectFromDataFile SYSTEM, FREFNUM 
  564.  
  565. =cut
  566. SRSpeechObject
  567. SRNewLanguageObjectFromDataFile(system, fRefNum)
  568.     SRSpeechObject  system
  569.     short           fRefNum
  570.     CODE:
  571.     SpeechFail(SRNewLanguageObjectFromDataFile(system, &RETVAL, fRefNum));
  572.     OUTPUT:
  573.     RETVAL
  574.  
  575.  
  576. =item SREmptyLanguageObject LANGUAGEOBJECT 
  577.  
  578. =cut
  579. MacOSRet
  580. SREmptyLanguageObject(languageObject)
  581.     SRSpeechObject  languageObject
  582.  
  583.  
  584. =item SRChangeLanguageObject LANGUAGEOBJECT, TEXT 
  585.  
  586. =cut
  587. MacOSRet
  588. SRChangeLanguageObject(languageObject, text)
  589.     SRSpeechObject  languageObject
  590.     SV *            text
  591.     CODE:
  592.     {
  593.         STRLEN  textLength;
  594.         void *  textPtr = SvPV(text, textLength);
  595.         RETVAL = SRChangeLanguageObject(languageObject, textPtr, textLength);
  596.     }
  597.     OUTPUT:
  598.     RETVAL
  599.  
  600.  
  601. =item SRAddLanguageObject BASE, ADDON 
  602.  
  603. =cut
  604. MacOSRet
  605. SRAddLanguageObject(base, addon)
  606.     SRSpeechObject  base
  607.     SRSpeechObject  addon
  608.  
  609.  
  610. =item SRAddText BASE, TEXT [, REFCON ]
  611.  
  612. =cut
  613. MacOSRet
  614. SRAddText(base, text, refCon=0)
  615.     SRSpeechObject  base
  616.     SV *            text
  617.     long            refCon
  618.     CODE:
  619.     {
  620.         STRLEN  textLength;
  621.         void *  textPtr = SvPV(text, textLength);
  622.         RETVAL = SRAddText(base, textPtr, textLength, refCon);
  623.     }
  624.     OUTPUT:
  625.     RETVAL
  626.  
  627.  
  628. =item SRRemoveLanguageObject BASE, TOREMOVE 
  629.  
  630. =cut
  631. MacOSRet
  632. SRRemoveLanguageObject(base, toRemove)
  633.     SRSpeechObject  base
  634.     SRSpeechObject  toRemove
  635.  
  636.  
  637. =item SRCountItems CONTAINER 
  638.  
  639. =cut
  640. long
  641. SRCountItems(container)
  642.     SRSpeechObject  container
  643.     CODE:
  644.     SpeechFail(SRCountItems(container, &RETVAL));
  645.     OUTPUT:
  646.     RETVAL
  647.  
  648.  
  649. =item SRGetIndexedItem CONTAINER, INDEX 
  650.  
  651. =cut
  652. SRSpeechObject
  653. SRGetIndexedItem(container, index)
  654.     SRSpeechObject  container
  655.     long            index
  656.     CODE:
  657.     SpeechFail(SRGetIndexedItem(container, &RETVAL, index));
  658.     OUTPUT:
  659.     RETVAL
  660.     
  661.  
  662.  
  663. =item SRSetIndexedItem CONTAINER, ITEM, INDEX 
  664.  
  665. =cut
  666. MacOSRet
  667. SRSetIndexedItem(container, item, index)
  668.     SRSpeechObject  container
  669.     SRSpeechObject  item
  670.     long            index
  671.  
  672.  
  673. =item SRRemoveIndexedItem CONTAINER, INDEX 
  674.  
  675. =cut
  676. MacOSRet
  677. SRRemoveIndexedItem(container, index)
  678.     SRSpeechObject  container
  679.     long            index
  680.  
  681.  
  682. =item SRDrawText RECOGNIZER, DISPTEXT 
  683.  
  684. =cut
  685. MacOSRet
  686. SRDrawText(recognizer, dispText)
  687.     SRSpeechObject  recognizer
  688.     SV *            dispText
  689.     CODE:
  690.     {
  691.         STRLEN  textLength;
  692.         void *  textPtr = SvPV(dispText, textLength);
  693.         RETVAL = SRDrawText(recognizer, textPtr, textLength);
  694.     }
  695.     OUTPUT:
  696.     RETVAL
  697.  
  698.  
  699. =item SRDrawRecognizedText RECOGNIZER, DISPTEXT 
  700.  
  701. =cut
  702. MacOSRet
  703. SRDrawRecognizedText(recognizer, dispText)
  704.     SRSpeechObject  recognizer
  705.     SV *            dispText
  706.     CODE:
  707.     {
  708.         STRLEN  textLength;
  709.         void *  textPtr = SvPV(dispText, textLength);
  710.         RETVAL = SRDrawRecognizedText(recognizer, textPtr, textLength);
  711.     }
  712.     OUTPUT:
  713.     RETVAL
  714.  
  715.  
  716. =item SRSpeakText RECOGNIZER, SPEAKTEXT 
  717.  
  718. =cut
  719. MacOSRet
  720. SRSpeakText(recognizer, speakText)
  721.     SRSpeechObject  recognizer
  722.     SV *            speakText
  723.     CODE:
  724.     {
  725.         STRLEN  textLength;
  726.         void *  textPtr = SvPV(speakText, textLength);
  727.         RETVAL = SRSpeakText(recognizer, textPtr, textLength);
  728.     }
  729.     OUTPUT:
  730.     RETVAL
  731.  
  732.  
  733. =item SRSpeakAndDrawText RECOGNIZER, TEXT 
  734.  
  735. =cut
  736. MacOSRet
  737. SRSpeakAndDrawText(recognizer, text)
  738.     SRSpeechObject  recognizer
  739.     SV *            text
  740.     CODE:
  741.     {
  742.         STRLEN  textLength;
  743.         void *  textPtr = SvPV(text, textLength);
  744.         RETVAL = SRSpeakAndDrawText(recognizer, textPtr, textLength);
  745.     }
  746.     OUTPUT:
  747.     RETVAL
  748.  
  749.  
  750. =item SRStopSpeech RECOGNIZER 
  751.  
  752. =cut
  753. MacOSRet
  754. SRStopSpeech(recognizer)
  755.     SRSpeechObject  recognizer
  756.  
  757.  
  758. =item SRSpeechBusy RECOGNIZER 
  759.  
  760. =cut
  761. Boolean
  762. SRSpeechBusy(recognizer)
  763.     SRSpeechObject  recognizer
  764.  
  765.  
  766. =item SRProcessBegin RECOGNIZER, FAILED 
  767.  
  768. =cut
  769. MacOSRet
  770. SRProcessBegin(recognizer, failed)
  771.     SRSpeechObject  recognizer
  772.     Boolean         failed
  773.  
  774.  
  775. =item SRProcessEnd RECOGNIZER, FAILED 
  776.  
  777. =cut
  778. MacOSRet
  779. SRProcessEnd(recognizer, failed)
  780.     SRSpeechObject  recognizer
  781.     Boolean         failed
  782.  
  783. =back
  784.  
  785. =cut
  786.