home *** CD-ROM | disk | FTP | other *** search
/ PC World 2003 February / PCWorld_2003-02_cd.bin / Komunik / sambar / sambar53b3.exe / include / cspublic.h next >
Encoding:
C/C++ Source or Header  |  2002-08-12  |  7.1 KB  |  314 lines

  1. /*
  2. **  CSPUBLIC.H
  3. **
  4. **    CScript Engine Public Header
  5. **
  6. **
  7. ** History:
  8. ** Chg# Date    Description                                             Resp
  9. ** ---- ------- ------------------------------------------------------- ----
  10. **      4JAN98    Created                                                 sambar
  11. */
  12.  
  13. #if     !defined(__CSPUBLIC_H__)
  14. #define __CSPUBLIC_H__
  15.  
  16. /*
  17. ** CScript Types
  18. */
  19. typedef short                    CS_RETCODE;
  20.  
  21. /*
  22. ** CScript Defines
  23. */
  24. #define CS_CTX                    void
  25. #define CS_PROG                    void
  26. #define CS_MAIN                    void
  27. #define CS_STACK                void
  28. #define CS_ARGS                    void
  29. #define CS_RESULT                void
  30.  
  31. #define CS_FAIL                 0
  32. #define CS_SUCCEED                 1
  33.  
  34. /*
  35. ** CScript Filetype Defines
  36. */
  37. #define CS_PARSEFLAGS_ASP        0x0001
  38.  
  39. /*
  40. ** CScript Error Defines
  41. */
  42. #define CS_ERRORFLAGS_TRYCATCH    0x0001
  43.  
  44. #define CS_SEVERITY_FATAL        999
  45. #define CS_SEVERITY_ERROR        1
  46. #define CS_SEVERITY_INFO        0
  47.  
  48. typedef struct cs__error
  49. {
  50.     int                e_type;
  51.     int                e_flags;
  52.     int                e_severity;
  53.     char            *e_msg;
  54.     char            *i_func;
  55.     char            *i_filename;
  56.     int                i_linenum;
  57.     char            *p_filename;
  58.     char            *p_func;
  59.     int                p_linenum;
  60. } CS_ERROR;
  61.  
  62. typedef struct cs__constdefn
  63. {
  64.     char            *cd_name;
  65.     int                cd_type;
  66.     void            *cd_obj;
  67.     char            *cd_string;
  68.     long            cd_int;
  69.     double            cd_double;
  70.  
  71. } CS_CONSTDEFN;
  72.  
  73. typedef struct cs__structarg
  74. {
  75.     char            *sa_name;
  76.     int                sa_type;
  77.  
  78. } CS_STRUCTARG;
  79.  
  80. typedef struct cs__structdefn
  81. {
  82.     char            *sd_name;
  83.     int                sd_numargs;
  84.     CS_STRUCTARG    *sd_args;
  85.  
  86. } CS_STRUCTDEFN;
  87.  
  88. typedef struct cs__funcarg
  89. {
  90.     char            *fa_name;
  91.     int                fa_datatype;
  92.     int                fa_create;        /* Create the variable if necessary */
  93.     int                fa_min;
  94.     int                fa_max;
  95.     char            *fa_pattern;
  96.     char            *fa_desc;
  97. } CS_FUNCARG;
  98.  
  99. typedef CS_RETCODE    (* CS_USERFUNC)(CS_CTX *ctx, void *sactx, void *saconn, 
  100.                         CS_STACK *stack, CS_ARGS *args, int numargs, 
  101.                         CS_RESULT *result);
  102.  
  103. typedef struct cs__funcdefn
  104. {
  105.     char            *fd_name;
  106.     CS_USERFUNC        fd_func;
  107.     int                fd_returntype;
  108.     int                fd_flags;
  109.     int                fd_numargs;
  110.     CS_FUNCARG        *fd_args;
  111.     char            *fd_desc;
  112. } CS_FUNCDEFN;
  113.  
  114. #define CS_FUNCARGS_UNLIMITED    -1
  115.  
  116. #define CS_DATATYPE_UNDEFINED    0
  117. #define CS_DATATYPE_NUMBER        1            /* double */
  118. #define CS_DATATYPE_INT            2            /* int */
  119. #define CS_DATATYPE_BOOLEAN        3            /* boolean */
  120. #define CS_DATATYPE_STRING        4            /* char * */
  121. #define CS_DATATYPE_VOID        5
  122. #define CS_DATATYPE_OBJECT        6            /* void * */
  123. #define CS_DATATYPE_ARRAY        7
  124. #define CS_DATATYPE_NULL        8
  125. #define CS_DATATYPE_STRUCT        9
  126.  
  127. #define CS_FUNCFLAGS_EXCEPTION    0x0001        /* Function throws exception */
  128.  
  129. typedef void        (* CS_ERRORFUNC)(CS_CTX *ctx, CS_PROG *prog, 
  130.                         void *sactx, void *saconn, CS_ERROR *error);
  131. typedef void        (* CS_FREEFUNC)(CS_CTX *ctx, void *sactx, void *saconn, 
  132.                         void *obj);
  133. typedef void        (* CS_CLEANUPFUNC)(CS_CTX *ctx, void *obj);
  134.  
  135.  
  136. /*
  137. ** CScript Function Prototypes
  138. */
  139. #ifdef    WIN32
  140. #define CS_PUBLIC        __cdecl
  141. #define CS_EXPORT        __declspec(dllexport)
  142. #else    /* UNIX */
  143. #define CS_PUBLIC
  144. #define CS_EXPORT
  145. #endif
  146.  
  147. #if defined(__cplusplus)
  148. extern "C" {
  149. #endif
  150.  
  151. extern CS_RETCODE CS_EXPORT     cs_ctx_init(
  152.                                 void                *cmctx,
  153.                                 CS_CTX                 **csctxp,
  154.                                 int                    *infop
  155.                                 );
  156. extern CS_RETCODE CS_EXPORT     cs_ctx_library(
  157.                                 CS_CTX                 *csctx,
  158.                                 CS_ERRORFUNC        errfunc,
  159.                                 void                *sactx
  160.                                 );
  161. extern CS_RETCODE CS_EXPORT     cs_ctx_global(
  162.                                 CS_CTX                 **csctxp
  163.                                 );
  164. extern CS_RETCODE CS_EXPORT        cs_ctx_exit(
  165.                                 CS_CTX                 *csctx
  166.                                 );
  167.  
  168.  
  169. extern CS_RETCODE CS_EXPORT        cs_package_define(
  170.                                 CS_CTX                 *csctx,
  171.                                 char                *package,
  172.                                 char                *desc,
  173.                                 CS_CLEANUPFUNC        cleanupfunc,
  174.                                 void                *cleanuparg,
  175.                                 CS_FUNCDEFN            *funcs,
  176.                                 int                    numfuncs,
  177.                                 CS_CONSTDEFN        *consts,
  178.                                 int                    numconsts,
  179.                                 CS_STRUCTDEFN        *structs,
  180.                                 int                    numstructs
  181.                                 );
  182.  
  183. extern void CS_EXPORT            cs_throw(
  184.                                 CS_STACK            *csstack,
  185.                                 char                *msg
  186.                                 );
  187.  
  188. extern CS_RETCODE CS_EXPORT        cs_object_clear(
  189.                                 CS_STACK            *csstack,
  190.                                 void                *obj,
  191.                                 int                    objid
  192.                                 );
  193.  
  194. extern CS_RETCODE CS_EXPORT        cs_result_void(
  195.                                 CS_STACK            *csstack,
  196.                                 CS_RESULT            *result
  197.                                 );
  198. extern CS_RETCODE CS_EXPORT        cs_result_array(
  199.                                 CS_STACK            *csstack,
  200.                                 CS_RESULT            *result
  201.                                 );
  202. extern CS_RETCODE CS_EXPORT        cs_result_subarray(
  203.                                 CS_STACK            *csstack,
  204.                                 CS_RESULT            *result,
  205.                                 int                    arraypos,
  206.                                 CS_RESULT            **resultp
  207.                                 );
  208. extern CS_RETCODE CS_EXPORT        cs_result_int(
  209.                                 CS_STACK            *csstack,
  210.                                 CS_RESULT            *result,
  211.                                 int                    arraypos,
  212.                                 long                data
  213.                                 );
  214. extern CS_RETCODE CS_EXPORT        cs_result_boolean(
  215.                                 CS_STACK            *csstack,
  216.                                 CS_RESULT            *result,
  217.                                 int                    arraypos,
  218.                                 long                data
  219.                                 );
  220. extern CS_RETCODE CS_EXPORT        cs_result_number(
  221.                                 CS_STACK            *csstack,
  222.                                 CS_RESULT            *result,
  223.                                 int                    arraypos,
  224.                                 double                data
  225.                                 );
  226. extern CS_RETCODE CS_EXPORT        cs_result_string(
  227.                                 CS_STACK            *csstack,
  228.                                 CS_RESULT            *result,
  229.                                 int                    arraypos,
  230.                                 char                *data,
  231.                                 int                    datalen,
  232.                                 int                    copy
  233.                                 );
  234. extern CS_RETCODE CS_EXPORT        cs_result_object(
  235.                                 CS_STACK            *csstack,
  236.                                 CS_RESULT            *result,
  237.                                 int                    arraypos,
  238.                                 void                *obj,
  239.                                 int                    objid,
  240.                                 CS_FREEFUNC            freefunc
  241.                                 );
  242. extern CS_RETCODE CS_EXPORT        cs_result_struct(
  243.                                 CS_STACK            *csstack,
  244.                                 CS_RESULT            *result,
  245.                                 int                    *name
  246.                                 );
  247.  
  248. extern CS_RETCODE CS_EXPORT        cs_arg_get(
  249.                                 CS_STACK            *csstack,
  250.                                 CS_ARGS                *args,
  251.                                 int                    argnum,
  252.                                 int                    *datatypep,
  253.                                 void                **valuep
  254.                                 );
  255. extern CS_RETCODE CS_EXPORT        cs_arg_set(
  256.                                 CS_STACK             *csstack,
  257.                                 CS_ARGS                *args,
  258.                                 int                    argnum,
  259.                                 int                    datatype,
  260.                                 void                *value
  261.                                 );
  262.  
  263. extern CS_RETCODE CS_EXPORT     cs_prog_alloc(
  264.                                 CS_CTX                 *csctx,
  265.                                 CS_ERRORFUNC        errfunc,
  266.                                 void                *sactx,
  267.                                 void                *saconn,
  268.                                 CS_PROG                **csprogp
  269.                                 );
  270. extern CS_RETCODE CS_EXPORT     cs_prog_free(
  271.                                 CS_CTX                 *csctx,
  272.                                 CS_PROG                *csprog
  273.                                 );
  274.  
  275. extern CS_RETCODE CS_EXPORT     cs_prog_parsefile(
  276.                                 CS_CTX                 *csctx,
  277.                                 CS_PROG                *csprog,
  278.                                 char                *filename,
  279.                                 int                    flags
  280.                                 );
  281. extern CS_RETCODE CS_EXPORT     cs_prog_parsebuf(
  282.                                 CS_CTX                 *csctx,
  283.                                 CS_PROG                *csprog,
  284.                                 char                *buffer,
  285.                                 int                    buflen
  286.                                 );
  287.  
  288. extern CS_RETCODE CS_EXPORT     cs_prog_prepare(
  289.                                 CS_CTX                 *csctx,
  290.                                 CS_PROG                *csprog,
  291.                                 void                *saconn,
  292.                                 CS_MAIN                **csmain
  293.                                 );
  294.  
  295. extern CS_RETCODE CS_EXPORT     cs_main_var(
  296.                                 CS_MAIN                *csmain,
  297.                                 char                *name,
  298.                                 int                    namelen,
  299.                                 int                    type,
  300.                                 int                    id,
  301.                                 void                *data,
  302.                                 int                    datalen,
  303.                                 int                    copybuf
  304.                                 );
  305. extern CS_RETCODE CS_EXPORT     cs_main_run(
  306.                                 CS_MAIN                *csmain
  307.                                 );
  308.  
  309. #if defined(__cplusplus)
  310. }
  311. #endif
  312.                 
  313. #endif /* __CSPUBLIC_H__ */
  314.