Home | History | Annotate | Download | only in tcl
      1 /* -----------------------------------------------------------------------------
      2  * SWIG API. Portion that goes into the runtime
      3  * ----------------------------------------------------------------------------- */
      4 #ifdef __cplusplus
      5 extern "C" {
      6 #endif
      7 
      8 /* -----------------------------------------------------------------------------
      9  * Constant declarations
     10  * ----------------------------------------------------------------------------- */
     11 
     12 /* Constant Types */
     13 #define SWIG_TCL_POINTER 4
     14 #define SWIG_TCL_BINARY  5
     15 
     16 /* Constant information structure */
     17 typedef struct swig_const_info {
     18     int type;
     19     char *name;
     20     long lvalue;
     21     double dvalue;
     22     void   *pvalue;
     23     swig_type_info **ptype;
     24 } swig_const_info;
     25 
     26 typedef int   (*swig_wrapper)(ClientData, Tcl_Interp *, int, Tcl_Obj *CONST []);
     27 typedef int   (*swig_wrapper_func)(ClientData, Tcl_Interp *, int, Tcl_Obj *CONST []);
     28 typedef char *(*swig_variable_func)(ClientData, Tcl_Interp *, char *, char *, int);
     29 typedef void  (*swig_delete_func)(ClientData);
     30 
     31 typedef struct swig_method {
     32   const char     *name;
     33   swig_wrapper   method;
     34 } swig_method;
     35 
     36 typedef struct swig_attribute {
     37   const char     *name;
     38   swig_wrapper   getmethod;
     39   swig_wrapper   setmethod;
     40 } swig_attribute;
     41 
     42 typedef struct swig_class {
     43   const char         *name;
     44   swig_type_info   **type;
     45   swig_wrapper       constructor;
     46   void              (*destructor)(void *);
     47   swig_method        *methods;
     48   swig_attribute     *attributes;
     49   struct swig_class **bases;
     50   const char              **base_names;
     51   swig_module_info   *module;
     52   Tcl_HashTable       hashtable;
     53 } swig_class;
     54 
     55 typedef struct swig_instance {
     56   Tcl_Obj       *thisptr;
     57   void          *thisvalue;
     58   swig_class   *classptr;
     59   int            destroy;
     60   Tcl_Command    cmdtok;
     61 } swig_instance;
     62 
     63 /* Structure for command table */
     64 typedef struct {
     65   const char *name;
     66   int       (*wrapper)(ClientData, Tcl_Interp *, int, Tcl_Obj *CONST []);
     67   ClientData  clientdata;
     68 } swig_command_info;
     69 
     70 /* Structure for variable linking table */
     71 typedef struct {
     72   const char *name;
     73   void *addr;
     74   char * (*get)(ClientData, Tcl_Interp *, char *, char *, int);
     75   char * (*set)(ClientData, Tcl_Interp *, char *, char *, int);
     76 } swig_var_info;
     77 
     78 
     79 /* -----------------------------------------------------------------------------*
     80  *  Install a constant object
     81  * -----------------------------------------------------------------------------*/
     82 
     83 static Tcl_HashTable   swigconstTable;
     84 static int             swigconstTableinit = 0;
     85 
     86 SWIGINTERN void
     87 SWIG_Tcl_SetConstantObj(Tcl_Interp *interp, const char* name, Tcl_Obj *obj) {
     88   int newobj;
     89   Tcl_ObjSetVar2(interp,Tcl_NewStringObj(name,-1), NULL, obj, TCL_GLOBAL_ONLY);
     90   Tcl_SetHashValue(Tcl_CreateHashEntry(&swigconstTable, name, &newobj), (ClientData) obj);
     91 }
     92 
     93 SWIGINTERN Tcl_Obj *
     94 SWIG_Tcl_GetConstantObj(const char *key) {
     95   Tcl_HashEntry *entryPtr;
     96   if (!swigconstTableinit) return 0;
     97   entryPtr = Tcl_FindHashEntry(&swigconstTable, key);
     98   if (entryPtr) {
     99     return (Tcl_Obj *) Tcl_GetHashValue(entryPtr);
    100   }
    101   return 0;
    102 }
    103 
    104 #ifdef __cplusplus
    105 }
    106 #endif
    107 
    108 
    109