SBjsi.h
上传用户:xqtpzdz
上传日期:2022-05-21
资源大小:1764k
文件大小:5k
源码类别:

xml/soap/webservice

开发平台:

Visual C++

  1. /*****************************************************************************
  2.  *****************************************************************************
  3.  *
  4.  *
  5.  * SBjsi JavaScript (ECMAScript) Engine Interface
  6.  *
  7.  * SBjsi interface, an implementation of the VXIjsi abstract interface
  8.  * for interacting with a JavaScript (ECMAScript) engine.  This
  9.  * provides functionality for creating JavaScript execution contexts,
  10.  * manipulating JavaScript scopes, manipulating variables within those
  11.  * scopes, and evaluating JavaScript expressions/scripts.
  12.  *
  13.  * There is one JavaScript interface per thread/line.
  14.  *
  15.  *****************************************************************************
  16.  ****************************************************************************/
  17. /****************License************************************************
  18.  * Vocalocity OpenVXI
  19.  * Copyright (C) 2004-2005 by Vocalocity, Inc. All Rights Reserved.
  20.  * This program is free software; you can redistribute it and/or
  21.  * modify it under the terms of the GNU General Public License
  22.  * as published by the Free Software Foundation; either version 2
  23.  * of the License, or (at your option) any later version.
  24.  *  
  25.  * This program is distributed in the hope that it will be useful,
  26.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  27.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  28.  * GNU General Public License for more details.
  29.  *
  30.  * You should have received a copy of the GNU General Public License
  31.  * along with this program; if not, write to the Free Software
  32.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  33.  * Vocalocity, the Vocalocity logo, and VocalOS are trademarks or 
  34.  * registered trademarks of Vocalocity, Inc. 
  35.  * OpenVXI is a trademark of Scansoft, Inc. and used under license 
  36.  * by Vocalocity.
  37.  ***********************************************************************/
  38. #ifndef _SBJSI_H
  39. #define _SBJSI_H
  40. #include "VXIjsi.h"                    /* For VXIjsi base interface */
  41. #include "VXIlog.h"                    /* For VXIlog interface */
  42. #include "VXIheaderPrefix.h"
  43. #ifdef SBJSI_EXPORTS
  44. #define SBJSI_API SYMBOL_EXPORT_DECL
  45. #else
  46. #define SBJSI_API SYMBOL_IMPORT_DECL
  47. #endif
  48.   /* -- start docme interface -- */
  49. /**
  50.  * @name SBjsi
  51.  * @memo SBjsi implementation of VXIjsi
  52.  * @doc
  53.  * SBjsi interface, an implementation of the VXIjsi interface for
  54.  * interacting with a ECMAScript (JavaScript) engine.  This provides
  55.  * functionality for creating ECMAScript execution contexts,
  56.  * manipulating ECMAScript scopes, manipulating variables within those
  57.  * scopes, and evaluating ECMAScript expressions/scripts. <p>
  58.  *
  59.  * There is one VXIjsi interface per thread/line.  
  60.  */
  61.   /*@{*/
  62. /* Recommended defaults for SBjsiInit */
  63. #define JSI_RUNTIME_SIZE_DEFAULT     (1024 * 1024 * 16)
  64. #define JSI_CONTEXT_SIZE_DEFAULT     (1024 * 128)
  65. #define JSI_MAX_BRANCHES_DEFAULT     100000
  66. /**
  67.  * Global platform initialization of JavaScript
  68.  *
  69.  * @param log             VXI Logging interface used for error/diagnostic 
  70.  *                        logging, only used for the duration of this 
  71.  *                        function call
  72.  * @param  diagLogBase    Base tag number for diagnostic logging purposes.
  73.  *                        All diagnostic tags for SBjsi will start at this
  74.  *                        ID and increase upwards.
  75.  * @param  runtimeSize    Size of the JavaScript runtime environment, in 
  76.  *                        bytes. There is one runtime per process. See 
  77.  *                        above for a recommended default.
  78.  * @param  contextSize    Size of each JavaScript context, in bytes. There
  79.  *                        may be multiple contexts per channel, although
  80.  *                        the VXI typically only uses one per channel.
  81.  *                        See above for a recommended default.
  82.  * @param  maxBranches    Maximum number of JavaScript branches for each 
  83.  *                        JavaScript evaluation, used to interrupt infinite
  84.  *                        loops from (possibly malicious) scripts
  85.  *
  86.  * @result VXIjsiResult 0 on success
  87.  */
  88. SBJSI_API VXIjsiResult SBjsiInit (VXIlogInterface  *log,
  89.   VXIunsigned       diagLogBase,
  90.   VXIlong           runtimeSize,
  91.   VXIlong           contextSize,
  92.   VXIlong           maxBranches);
  93. /**
  94.  * Global platform shutdown of JavaScript
  95.  *
  96.  * @param log    VXI Logging interface used for error/diagnostic logging,
  97.  *               only used for the duration of this function call
  98.  *
  99.  * @result VXIjsiResult 0 on success
  100.  */
  101. SBJSI_API VXIjsiResult SBjsiShutDown (VXIlogInterface  *log);
  102. /**
  103.  * Create a new JavaScript service handle
  104.  *
  105.  * @param log    VXI Logging interface used for error/diagnostic 
  106.  *               logging, must remain a valid pointer throughout the 
  107.  *               lifetime of the resource (until SBjsiDestroyResource( )
  108.  *               is called)
  109.  *
  110.  * @result VXIjsiResult 0 on success 
  111.  */
  112. SBJSI_API VXIjsiResult SBjsiCreateResource(VXIlogInterface   *log,
  113.    VXIjsiInterface  **jsi);
  114. /**
  115.  * Destroy the interface and free internal resources. Once this is
  116.  *  called, the logging interface passed to SBjsiCreateResource( ) may
  117.  *  be released as well.
  118.  *
  119.  * @result VXIjsiResult 0 on success 
  120.  */
  121. SBJSI_API VXIjsiResult SBjsiDestroyResource(VXIjsiInterface **jsi);
  122.   /* -- end docme interface -- */
  123. /*@}*/
  124. #include "VXIheaderSuffix.h"
  125. #endif  /* include guard */