⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sbjsiapi.h

📁 sloedgy open sip stack source code
💻 H
字号:
/*****************************************************************************
  *****************************************************************************
  *
  * $Id: SBjsiAPI.h,v 1.1 2007/06/04 16:10:48 joegenbaclor Exp $
  *
  * SBjsi JavaScript (ECMAScript) Engine API
  *
  * SBjsi API, a function library implementation of the VXIjsi abstract
  * interface for interacting with a JavaScript (ECMAScript) engine.
  * This provides functionality for creating JavaScript execution
  * contexts, manipulating JavaScript scopes, manipulating variables
  * within those scopes, and evaluating JavaScript expressions/scripts.
  *
  * There is one JavaScript interface per thread/line.
  *
  *****************************************************************************
  ****************************************************************************/
 

 /****************License************************************************
  *
  * Copyright 2000-2003.  ScanSoft, Inc.    
  *
  * Use of this software is subject to notices and obligations set forth 
  * in the SpeechWorks Public License - Software Version 1.2 which is 
  * included with this software. 
  *
  * ScanSoft is a registered trademark of ScanSoft, Inc., and OpenSpeech, 
  * SpeechWorks and the SpeechWorks logo are registered trademarks or 
  * trademarks of SpeechWorks International, Inc. in the United States 
  * and other countries.
  *
  ***********************************************************************/
 

 #ifndef _SBJSIAPI_H
 #define _SBJSIAPI_H
 
#include <vxibuildopts.h>
#if P_VXI

 #include "vxi/VXIjsi.h"                    /* For VXIjsi base interface */
 
 #include "vxi/VXIheaderPrefix.h"
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 /**
  * Return the version
  */
 VXIint32 SBjsiGetVersion(void);
 
 VXIint32 SBjsiSeGetVersion(void);
 
 /**
  * Return the implementation name
  */
 const VXIchar* SBjsiGetImplementationName(void);
 
 const VXIchar* SBjsiSeGetImplementationName(void);
 
 /**
  * Create and initialize a new script context
  *
  * This creates a new context. Currently one context is created per
  * thread, but the implementation must support the ability to have
  * multiple contexts per thread.
  *
  * @param context  [OUT] Newly created context
  *
  * @result VXIjsiResult 0 on success 
  */
 VXIjsiResult SBjsiCreateContext(VXIjsiInterface        *pThis,
 				VXIjsiContext         **context);
 
 VXIjsiResult SBjsiSeCreateContext(VXIjsiInterface        *pThis,
 				  VXIjsiContext         **context);
 
 /**
  * Destroy a script context, clean up storage if required
  *
  * @param context  [IN] Context to destroy
  *
  * @result VXIjsiResult 0 on success
  */
 VXIjsiResult SBjsiDestroyContext(VXIjsiInterface        *pThis,
 				 VXIjsiContext         **context);
 
 VXIjsiResult SBjsiSeDestroyContext(VXIjsiInterface        *pThis,
 				   VXIjsiContext         **context);
 
 /**
  * Create a script variable relative to the current scope, initialized
  *  to an expression
  *
  * NOTE: When there is an expression, the expression is evaluated,
  *  then the value of the evaluated expression (the final
  *  sub-expression) assigned. Thus an expression of "1; 2;" actually
  *  assigns 2 to the variable.
  *
  * @param context  [IN] JavaScript context to create the variable within
  * @param name     [IN] Name of the variable to create
  * @param expr     [IN] Expression to set the initial value of the variable 
  *                      (if NULL or empty the variable is set to JavaScript 
  *                      Undefined as required for VoiceXML 1.0 <var>)
  *
  * @result VXIjsiResult 0 on success 
  */
 VXIjsiResult SBjsiCreateVarExpr(VXIjsiInterface        *pThis,
 				VXIjsiContext          *context, 
 				const VXIchar          *name, 
 				const VXIchar          *expr);
 VXIjsiResult SBjsiSeCreateVarExpr(VXIjsiInterface        *pThis,
 				  VXIjsiContext          *context, 
 				  const VXIchar          *name, 
 				  const VXIchar          *expr);
   
 /**
  * Create a script variable relative to the current scope, initialized
  *  to a VXIValue based value
  *
  * @param context  [IN] JavaScript context to create the variable within
  * @param name     [IN] Name of the variable to create
  * @param value    [IN] VXIValue based value to set the initial value of 
  *                      the variable (if NULL the variable is set to 
  *                      JavaScript Undefined as required for VoiceXML 1.0
  *                      <var>). VXIMap is used to pass JavaScript objects.
  *
  * @result VXIjsiResult 0 on success 
  */
 VXIjsiResult SBjsiCreateVarValue(VXIjsiInterface        *pThis,
 				 VXIjsiContext          *context, 
 				 const VXIchar          *name, 
 				 const VXIValue         *value);
 VXIjsiResult SBjsiSeCreateVarValue(VXIjsiInterface        *pThis,
 				   VXIjsiContext          *context, 
 				   const VXIchar          *name, 
 				   const VXIValue         *value);
   
 /**
  * Set a script variable to an expression relative to the current scope
  *
  * NOTE: The expression is evaluated, then the value of the
  *  evaluated expression (the final sub-expression) assigned. Thus
  *  an expression of "1; 2;" actually assigns 2 to the variable.
  *
  * @param context  [IN] JavaScript context to set the variable within
  * @param name     [IN] Name of the variable to set
  * @param expr     [IN] Expression to be assigned
  *
  * @result VXIjsiResult 0 on success 
  */
 VXIjsiResult SBjsiSetVarExpr(VXIjsiInterface        *pThis,
 			     VXIjsiContext          *context, 
 			     const VXIchar          *name, 
 			     const VXIchar          *expr);
 VXIjsiResult SBjsiSeSetVarExpr(VXIjsiInterface        *pThis,
 			       VXIjsiContext          *context, 
 			       const VXIchar          *name, 
 			       const VXIchar          *expr);
   
 /**
  * Set a script variable to a value relative to the current scope
  *
  * @param context  [IN] JavaScript context to set the variable within
  * @param name     [IN] Name of the variable to set
  * @param value    [IN] VXIValue based value to be assigned. VXIMap is 
  *                      used to pass JavaScript objects.
  *
  * @result VXIjsiResult 0 on success 
  */
 VXIjsiResult SBjsiSetVarValue(VXIjsiInterface        *pThis,
 			      VXIjsiContext          *context, 
 			      const VXIchar          *name, 
 			      const VXIValue         *value);
 VXIjsiResult SBjsiSeSetVarValue(VXIjsiInterface        *pThis,
 				VXIjsiContext          *context, 
 				const VXIchar          *name, 
 				const VXIValue         *value);
 
 /**
  * Get the value of a variable
  *
  * @param context  [IN]  JavaScript context to get the variable from
  * @param name     [IN]  Name of the variable to get
  * @param value    [OUT] Value of the variable, returned as the VXI
  *                       type that most closely matches the variable's
  *                       JavaScript type. This function allocates this
  *                       for return on success (returns a NULL pointer
  *                       otherwise), the caller is responsible for
  *                       destroying it via VXIValueDestroy( ). VXIMap
  *                       is used to return JavaScript objects.
  *
  * @result VXIjsiResult 0 on success, VXIjsi_RESULT_FAILURE if the
  *         variable has a JavaScript value of Null,
  *         VXIjsi_RESULT_NON_FATAL_ERROR if the variable is not
  *         defined (JavaScript Undefined), or another error code for
  *         severe errors 
  */
 VXIjsiResult SBjsiGetVar(VXIjsiInterface         *pThis,
 			 const VXIjsiContext     *context, 
 			 const VXIchar           *name,
 			 VXIValue               **value);
 VXIjsiResult SBjsiSeGetVar(VXIjsiInterface         *pThis,
 			   const VXIjsiContext     *context, 
 			   const VXIchar           *name,
 			   VXIValue               **value);
 
 /**
  * Check whether a variable is defined (not JavaScript Undefined)
  *
  * NOTE: A variable with a JavaScript Null value is considered defined
  *
  * @param context  [IN]  JavaScript context to check the variable in
  * @param name     [IN]  Name of the variable to check
  *
  * @result VXIjsiResult 0 on success (variable is defined),
  *         VXIjsi_RESULT_FAILURE if the variable is not defined,
  *         or another error code for severe errors
  */
 VXIjsiResult SBjsiCheckVar(VXIjsiInterface        *pThis,
 			   const VXIjsiContext    *context, 
 			   const VXIchar          *name);
 VXIjsiResult SBjsiSeCheckVar(VXIjsiInterface        *pThis,
 			     const VXIjsiContext    *context, 
 			     const VXIchar          *name);
 
 /**
   * set a script variable read-only to the current scope
   *  
   * @param context  [IN] ECMAScript context in which the variable
   *                      has been created
   * @param name     [IN] Name of the variable to set as read only.
   *
   * @return VXIjsi_RESULT_SUCCESS on success
   */
 VXIjsiResult SBjsiSetReadOnly(struct VXIjsiInterface *pThis,
                              VXIjsiContext    *context,
                              const VXIchar          *name);
 
 
 /**
  * Execute a script, optionally returning any execution result
  *
  * @param context  [IN]  JavaScript context to execute within
  * @param expr     [IN]  Buffer containing the script text
  * @param value    [OUT] Result of the script execution, returned 
  *                       as the VXI type that most closely matches 
  *                       the variable's JavaScript type. Pass NULL
  *                       if the result is not desired. Otherwise
  *                       this function allocates this for return on 
  *                       success when there is a return value (returns 
  *                       a NULL pointer otherwise), the caller is 
  *                       responsible for destroying it via 
  *                       VXIValueDestroy( ). VXIMap is used to return 
  *                       JavaScript objects.
  *
  * @result VXIjsiResult 0 on success
  */
 VXIjsiResult SBjsiEval(VXIjsiInterface         *pThis,
 		       VXIjsiContext           *context,
 		       const VXIchar           *expr,
 		       VXIValue               **result);
 VXIjsiResult SBjsiSeEval(VXIjsiInterface         *pThis,
 			 VXIjsiContext           *context,
 			 const VXIchar           *expr,
 			 VXIValue               **result);
 
 /**
  * Push a new context onto the scope chain (add a nested scope)
  *
  * @param context  [IN] JavaScript context to push the scope onto
  * @param name     [IN] Name of the scope, used to permit referencing
  *                      variables from an explicit scope within the
  *                      scope chain, such as "myscope.myvar" to access
  *                      "myvar" within a scope named "myscope"
  *
  * @result VXIjsiResult 0 on success
  */
 VXIjsiResult SBjsiPushScope(VXIjsiInterface        *pThis,
 			    VXIjsiContext          *context,
 			    const VXIchar          *name,
 			    const VXIjsiScopeAttr attr);
 VXIjsiResult SBjsiSePushScope(VXIjsiInterface        *pThis,
 			      VXIjsiContext          *context,
 			      const VXIchar          *name);
 
 /**
  * Pop a context from the scope chain (remove a nested scope)
  *
  * @param context  [IN] JavaScript context to pop the scope from
  *
  * @result VXIjsiResult 0 on success
  */
 VXIjsiResult SBjsiPopScope(VXIjsiInterface        *pThis,
 			   VXIjsiContext          *context);
 VXIjsiResult SBjsiSePopScope(VXIjsiInterface        *pThis,
 			     VXIjsiContext          *context);
 
 /**
  * Reset the scope chain to the global scope (pop all nested scopes)
  *
  * @param context  [IN] JavaScript context to pop the scopes from
  *
  * @result VXIjsiResult 0 on success
  */
 VXIjsiResult SBjsiClearScopes(VXIjsiInterface        *pThis,
 			      VXIjsiContext          *context);
 VXIjsiResult SBjsiSeClearScopes(VXIjsiInterface        *pThis,
 				VXIjsiContext          *context);
 
 #ifdef __cplusplus
 }
 #endif
 
 #include "vxi/VXIheaderSuffix.h"
 
#endif

 #endif  /* include guard */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -