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

xml/soap/webservice

开发平台:

Visual C++

  1. /****************License************************************************
  2.  * Vocalocity OpenVXI
  3.  * Copyright (C) 2004-2005 by Vocalocity, Inc. All Rights Reserved.
  4.  * This program is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU General Public License
  6.  * as published by the Free Software Foundation; either version 2
  7.  * of the License, or (at your option) any later version.
  8.  *  
  9.  * This program is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  * GNU General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU General Public License
  15.  * along with this program; if not, write to the Free Software
  16.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  17.  * Vocalocity, the Vocalocity logo, and VocalOS are trademarks or 
  18.  * registered trademarks of Vocalocity, Inc. 
  19.  * OpenVXI is a trademark of Scansoft, Inc. and used under license 
  20.  * by Vocalocity.
  21.  ***********************************************************************/
  22. #ifndef _VXIOBJECT_H
  23. #define _VXIOBJECT_H
  24. #include "VXItypes.h"
  25. #include "VXIvalue.h"
  26. #include "VXIheaderPrefix.h"
  27. #ifdef VXIOBJECT_EXPORTS
  28. #define VXIOBJECT_API SYMBOL_EXPORT_DECL
  29. #else
  30. #define VXIOBJECT_API SYMBOL_IMPORT_DECL
  31. #endif
  32. #ifdef __cplusplus
  33. extern "C" {
  34. #endif
  35.  /**
  36.   * defgroup VXIobject Object Interface
  37.   *
  38.   * Abstract interface for VoiceXML object functionality that allows
  39.   * integrators to define VoiceXML language extensions that can be
  40.   * executed by applications through the VoiceXML object element.
  41.   * These objects can provide almost any extended functionality that
  42.   * is desired.<p>
  43.   */
  44. /*@{*/
  45. /**
  46.  * @name Object Properties
  47.  * Keys identifying properties in VXIMap for Execute( ) and Validate( )
  48.  *
  49.  * Note that VXIinet properties should also be included, these are
  50.  * simply passed through to VXIinet for fetches as-is.
  51.  */
  52. /*@{*/
  53. #define OBJECT_CLASS_ID        L"classid"       /* VXIString */
  54. #define OBJECT_CODE_BASE       L"codebase"      /* VXIString */
  55. #define OBJECT_CODE_TYPE       L"codetype"      /* VXIString */
  56. #define OBJECT_DATA            L"data"          /* VXIString */
  57. #define OBJECT_TYPE            L"type"          /* VXIString */
  58. #define OBJECT_ARCHIVE         L"archive"       /* VXIString */
  59. /*@}*/
  60. /* Property defaults */
  61. #define OBJECT_CLASS_ID_DEFAULT             L"" /* No default */
  62. #define OBJECT_CODE_BASE_DEFAULT            L"" /* No base URI */
  63. #define OBJECT_CODE_TYPE_DEFAULT            L"" /* Use OBJECT_TYPE */
  64. #define OBJECT_DATA_DEFAULT                 L"" /* No data */
  65. #define OBJECT_TYPE_DEFAULT                 L"" /* No data */
  66. #define OBJECT_ARCHIVE_DEFAULT              L"" /* No archive */
  67. /**
  68.  * @name &lt;param&gt; keys
  69.  * Keys identifying properties in the VXIMap for an individual parameter
  70.  * (&lt;param&gt; element) in cases where "valuetype" is not "data".
  71.  */
  72. /*@{*/
  73. #define OBJECT_VALUE           L"value"         /* VXIString */
  74. #define OBJECT_VALUETYPE       L"valuetype"     /* VXIString */
  75. #define OBJECT_TYPE            L"type"          /* VXIString */
  76. /*@}*/
  77.   
  78. typedef enum VXIobjResult { 
  79.   /** Fatal error, terminate call    */
  80.   VXIobj_RESULT_FATAL_ERROR       =  -100, 
  81.   /** I/O error                      */
  82.   VXIobj_RESULT_IO_ERROR           =   -8,
  83.   /** Out of memory                  */
  84.   VXIobj_RESULT_OUT_OF_MEMORY      =   -7, 
  85.   /** System error, out of service   */
  86.   VXIobj_RESULT_SYSTEM_ERROR       =   -6, 
  87.   /** Errors from platform services  */
  88.   VXIobj_RESULT_PLATFORM_ERROR     =   -5, 
  89.   /** Return buffer too small        */
  90.   VXIobj_RESULT_BUFFER_TOO_SMALL   =   -4, 
  91.   /** Property name is not valid    */
  92.   VXIobj_RESULT_INVALID_PROP_NAME  =   -3, 
  93.   /** Property value is not valid   */
  94.   VXIobj_RESULT_INVALID_PROP_VALUE =   -2, 
  95.   /** Invalid function argument      */
  96.   VXIobj_RESULT_INVALID_ARGUMENT   =   -1, 
  97.   /** Success.  Note that Success is defined as 0 and that all
  98.       critical errors are less than 0 and all non critical errors are
  99.       greater than 0.                */
  100.   VXIobj_RESULT_SUCCESS            =    0,
  101.   /** Normal failure, nothing logged */
  102.   VXIobj_RESULT_FAILURE            =    1,
  103.   /** Non-fatal non-specific error   */
  104.   VXIobj_RESULT_NON_FATAL_ERROR    =    2, 
  105.   /** Operation is not supported     */
  106.   VXIobj_RESULT_UNSUPPORTED        =  100
  107. } VXIobjResult;
  108. /** 
  109.  * Abstract interface for VoiceXML object functionality that allows
  110.  * integrators to define VoiceXML language extensions that can be
  111.  * executed by applications through the VoiceXML object element.
  112.  * These objects can provide almost any extended functionality that
  113.  * is desired.<p>
  114.  *
  115.  * There is one object interface per thread/line.  
  116.  */
  117. typedef struct VXIobjectInterface {
  118.   /**
  119.    * Get the VXI interface version implemented
  120.    *
  121.    * @return  VXIint32 for the version number. The high high word is 
  122.    *          the major version number, the low word is the minor version 
  123.    *          number, using the native CPU/OS byte order. The current
  124.    *          version is VXI_CURRENT_VERSION as defined in VXItypes.h.
  125.    */ 
  126.   VXIint32 (*GetVersion)(void);
  127.   
  128.   /**
  129.    * Get the name of the implementation
  130.    *
  131.    * @return  Implementation defined string that must be different from
  132.    *          all other implementations. The recommended name is one
  133.    *          where the interface name is prefixed by the implementator's
  134.    *          Internet address in reverse order, such as com.xyz.rec for
  135.    *          VXIobject from xyz.com. This is similar to how VoiceXML 1.0
  136.    *          recommends defining application specific error types.
  137.    */
  138.   const VXIchar* (*GetImplementationName)(void);
  139.   
  140.   /**
  141.    * Execute an object
  142.    *
  143.    * @param properties  [IN] Map containing properties and attributes for
  144.    *                      the &lt;object&gt; as specified above.
  145.    * @param parameters  [IN] Map containing parameters for the &lt;object&gt; as
  146.    *                      specified by the VoiceXML &lt;param&gt; tag. The keys
  147.    *                      of the map correspond to the parameter name ("name"
  148.    *                      attribute) while the value of each key corresponds
  149.    *                      to a VXIValue based type.
  150.    *
  151.    *                      For each parameter, any ECMAScript expressions are
  152.    *                      evaluated by the interpreter. Then if the "valuetype"
  153.    *                      attribute is set to "ref" the parameter value is
  154.    *                      packaged into a VXIMap with three properties:
  155.    *
  156.    *                      OBJECT_VALUE:       actual parameter value
  157.    *                      OBJECT_VALUETYPE:   "valuetype" attribute value
  158.    *                      OBJECT_TYPE:        "type" attribute value
  159.    *
  160.    *                      Otherwise a primitive VXIValue based type will
  161.    *                      be used to specify the value.
  162.    * @param result      [OUT] Return value for the &lt;object&gt; execution, this
  163.    *                      is allocated on success, the caller is responsible
  164.    *                      for destroying the returned value by calling 
  165.    *                      VXIValueDestroy( ). The object's field variable
  166.    *                      will be set to this value.
  167.    *
  168.    * @return        VXIobj_RESULT_SUCCESS on success,
  169.    *                VXIobj_RESULT_NON_FATAL_ERROR on error, 
  170.    *                VXIobj_RESULT_UNSUPPORTED for unsupported object types
  171.    *                 (this will cause interpreter to throw the correct event)
  172.    */
  173.   VXIobjResult (*Execute)(struct VXIobjectInterface *pThis,
  174.   const VXIMap              *properties,
  175.   const VXIMap              *parameters,
  176.   VXIValue                 **result);
  177.  /**
  178.    * Validate an object, performing validity checks without execution
  179.    *
  180.    * @param properties  [IN] Map containing properties and attributes for
  181.    *                      the &lt;object&gt; as specified in the VoiceXML
  182.    *                      specification except that "expr" and "cond" are
  183.    *                      always omitted (are handled by the interpreter).
  184.    * @param parameters  [IN] Map containing parameters for the &lt;object&gt; as
  185.    *                      specified by the VoiceXML &lt;param&gt; tag. The keys
  186.    *                      of the map correspond to the parameter name ("name"
  187.    *                      attribute) while the value of each key corresponds
  188.    *                      to a VXIValue based type. See Execute( ) above 
  189.    *                      for details.
  190.    *
  191.    * @return        VXIobj_RESULT_SUCCESS on success,
  192.    *                VXIobj_RESULT_NON_FATAL_ERROR on error, 
  193.    *                VXIobj_RESULT_UNSUPPORTED for unsupported object types
  194.    *                 (this will cause interpreter to throw the correct event)
  195.    */
  196.   VXIobjResult (*Validate)(struct VXIobjectInterface *pThis,
  197.    const VXIMap              *properties,
  198.    const VXIMap              *parameters);
  199. } VXIobjectInterface;
  200. /*@}*/
  201. #ifdef __cplusplus
  202. }
  203. #endif
  204. #include "VXIheaderSuffix.h"
  205. #endif  /* include guard */