--- /dev/null
+/*******************************************************************************
+ * Simplified Wrapper and Interface Generator (SWIG)
+ *
+ * Author : David Beazley
+ *
+ * Department of Computer Science
+ * University of Chicago
+ * 1100 E 58th Street
+ * Chicago, IL 60637
+ * beazley@cs.uchicago.edu
+ *
+ * Please read the file LICENSE for the copyright and terms by which SWIG
+ * can be used and distributed.
+ *******************************************************************************/
+
+/**************************************************************************
+ * class TCL
+ *
+ * A Simple TCL implementation.
+ **************************************************************************/
+
+class TCL : public Language {
+private:
+ char interp_name[256];
+ char *prefix; // Package prefix
+ char *module; // Name of the module
+ char *tcl_path;
+ char *init_name;
+ int Plugin;
+ int nspace;
+ char *safe_name;
+ void get_pointer(char *iname, char *srcname, char *src, char *dest, DataType *t,
+ String &f, char *ret);
+ char *char_result;
+ char *usage_string(char *, DataType *, ParmList *);
+ char *usage_func(char *, DataType *, ParmList *);
+ char *usage_var(char *, DataType *);
+ char *usage_const(char *, DataType *, char *);
+
+ // C++ handling
+
+ int have_constructor;
+ int have_destructor;
+ int have_methods;
+ int have_config;
+ int have_cget;
+ String config;
+ String cget;
+ String methods;
+ String options;
+ String config_options;
+ String methodnames;
+ String postinit;
+ int shadow;
+ char *class_name;
+ char *class_type;
+ char *real_classname;
+ char *base_class;
+ Hash hash;
+ Hash repeatcmd;
+
+ // C++ Code generation strings
+
+ String delcmd;
+ String methodcmd;
+ String objcmd;
+
+public :
+ TCL() {
+ prefix = 0;
+ module = 0;
+ init_name = 0;
+ nspace = 0;
+ shadow = 1;
+ char_result = "TCL_VOLATILE";
+ tcl_path = "tcl";
+ sprintf(interp_name,"interp");
+ class_name = 0;
+ class_type = 0;
+ real_classname = 0;
+ base_class = 0;
+ };
+ void parse_args(int, char *argv[]);
+ void parse();
+ void create_function(char *, char *, DataType *, ParmList *);
+ void link_variable(char *, char *, DataType *);
+ void declare_const(char *, char *, DataType *, char *);
+ void initialize(void);
+ void headers(void);
+ void close(void);
+ void set_module(char *,char **);
+ void set_init(char *);
+ void add_native(char *, char *);
+ void pragma(char *,char *, char *);
+ void create_command(char *, char *);
+
+ // Stubs for processing C++ classes in Tcl
+
+ void cpp_open_class(char *classname, char *rename, char *ctype, int strip);
+ void cpp_close_class();
+ void cpp_member_func(char *name, char *iname, DataType *t, ParmList *l);
+ void cpp_variable(char *name, char *iname, DataType *t);
+ void cpp_constructor(char *name, char *iname, ParmList *l);
+ void cpp_destructor(char *name, char *newname);
+ void cpp_inherit(char **baseclass, int mode = INHERIT_ALL);
+ void cpp_declare_const(char *name, char *iname, DataType *type, char *value);
+ void cpp_class_decl(char *, char *, char *);
+ void add_typedef(DataType *, char *);
+};
+
+
+
+
+
+