]>
Commit | Line | Data |
---|---|---|
c90f71dd RD |
1 | /******************************************************************************* |
2 | * Simplified Wrapper and Interface Generator (SWIG) | |
3 | * | |
4 | * Author : David Beazley | |
5 | * | |
6 | * Department of Computer Science | |
7 | * University of Chicago | |
8 | * 1100 E 58th Street | |
9 | * Chicago, IL 60637 | |
10 | * beazley@cs.uchicago.edu | |
11 | * | |
12 | * Please read the file LICENSE for the copyright and terms by which SWIG | |
13 | * can be used and distributed. | |
14 | *******************************************************************************/ | |
15 | ||
16 | /************************************************************************** | |
17 | * class TCL | |
18 | * | |
19 | * A Simple TCL implementation. | |
20 | **************************************************************************/ | |
21 | ||
22 | class TCL : public Language { | |
23 | private: | |
24 | char interp_name[256]; | |
25 | char *prefix; // Package prefix | |
26 | char *module; // Name of the module | |
27 | char *tcl_path; | |
28 | char *init_name; | |
29 | int Plugin; | |
30 | int nspace; | |
31 | char *safe_name; | |
32 | void get_pointer(char *iname, char *srcname, char *src, char *dest, DataType *t, | |
33 | String &f, char *ret); | |
34 | char *char_result; | |
35 | char *usage_string(char *, DataType *, ParmList *); | |
36 | char *usage_func(char *, DataType *, ParmList *); | |
37 | char *usage_var(char *, DataType *); | |
38 | char *usage_const(char *, DataType *, char *); | |
39 | ||
40 | // C++ handling | |
41 | ||
42 | int have_constructor; | |
43 | int have_destructor; | |
44 | int have_methods; | |
45 | int have_config; | |
46 | int have_cget; | |
47 | String config; | |
48 | String cget; | |
49 | String methods; | |
50 | String options; | |
51 | String config_options; | |
52 | String methodnames; | |
53 | String postinit; | |
54 | int shadow; | |
55 | char *class_name; | |
56 | char *class_type; | |
57 | char *real_classname; | |
58 | char *base_class; | |
59 | Hash hash; | |
60 | Hash repeatcmd; | |
61 | ||
62 | // C++ Code generation strings | |
63 | ||
64 | String delcmd; | |
65 | String methodcmd; | |
66 | String objcmd; | |
67 | ||
68 | public : | |
69 | TCL() { | |
70 | prefix = 0; | |
71 | module = 0; | |
72 | init_name = 0; | |
73 | nspace = 0; | |
74 | shadow = 1; | |
75 | char_result = "TCL_VOLATILE"; | |
76 | tcl_path = "tcl"; | |
77 | sprintf(interp_name,"interp"); | |
78 | class_name = 0; | |
79 | class_type = 0; | |
80 | real_classname = 0; | |
81 | base_class = 0; | |
82 | }; | |
83 | void parse_args(int, char *argv[]); | |
84 | void parse(); | |
85 | void create_function(char *, char *, DataType *, ParmList *); | |
86 | void link_variable(char *, char *, DataType *); | |
87 | void declare_const(char *, char *, DataType *, char *); | |
88 | void initialize(void); | |
89 | void headers(void); | |
90 | void close(void); | |
91 | void set_module(char *,char **); | |
92 | void set_init(char *); | |
93 | void add_native(char *, char *); | |
94 | void pragma(char *,char *, char *); | |
95 | void create_command(char *, char *); | |
96 | ||
97 | // Stubs for processing C++ classes in Tcl | |
98 | ||
99 | void cpp_open_class(char *classname, char *rename, char *ctype, int strip); | |
100 | void cpp_close_class(); | |
101 | void cpp_member_func(char *name, char *iname, DataType *t, ParmList *l); | |
102 | void cpp_variable(char *name, char *iname, DataType *t); | |
103 | void cpp_constructor(char *name, char *iname, ParmList *l); | |
104 | void cpp_destructor(char *name, char *newname); | |
105 | void cpp_inherit(char **baseclass, int mode = INHERIT_ALL); | |
106 | void cpp_declare_const(char *name, char *iname, DataType *type, char *value); | |
107 | void cpp_class_decl(char *, char *, char *); | |
108 | void add_typedef(DataType *, char *); | |
109 | }; | |
110 | ||
111 | ||
112 | ||
113 | ||
114 | ||
115 |