]>
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 TCL8 | |
18 | * | |
19 | * A TCL implementation for Tcl 8.0. Basically the same as the other | |
20 | * Tcl module, but with different code generation. | |
21 | **************************************************************************/ | |
22 | ||
23 | class TCL8 : public Language { | |
24 | private: | |
25 | char interp_name[256]; | |
26 | char *prefix; // Package prefix | |
27 | char *module; // Name of the module | |
28 | char *tcl_path; | |
29 | char *init_name; | |
30 | int nspace; | |
31 | void get_pointer(char *iname, char *srcname, char *src, char *dest, DataType *t, | |
32 | String &f, char *ret); | |
33 | char *char_result; | |
34 | char *usage_func(char *, DataType *, ParmList *); | |
35 | char *usage_string(char *, DataType *, ParmList *); | |
36 | char *usage_var(char *, DataType *); | |
37 | char *usage_const(char *, DataType *, char *); | |
38 | ||
39 | // C++ handling | |
40 | ||
41 | int have_constructor; | |
42 | int have_destructor; | |
43 | int have_methods; | |
44 | int have_config; | |
45 | int have_cget; | |
46 | String config; | |
47 | String cget; | |
48 | String methods; | |
49 | String options; | |
50 | String config_options; | |
51 | String methodnames; | |
52 | String postinit; | |
53 | int shadow; | |
54 | char *class_name; | |
55 | char *class_type; | |
56 | char *real_classname; | |
57 | char *base_class; | |
58 | Hash hash; | |
59 | Hash repeatcmd; | |
60 | ||
61 | // Code generation options | |
62 | ||
63 | String delcmd; | |
64 | String methodcmd; | |
65 | String objcmd; | |
66 | ||
67 | public : | |
68 | TCL8() { | |
69 | prefix = 0; | |
70 | module = 0; | |
71 | init_name = 0; | |
72 | nspace = 0; | |
73 | shadow = 1; | |
74 | char_result = "TCL_VOLATILE"; | |
75 | tcl_path = "tcl"; | |
76 | sprintf(interp_name,"interp"); | |
77 | class_name = 0; | |
78 | class_type = 0; | |
79 | real_classname = 0; | |
80 | base_class = 0; | |
81 | }; | |
82 | void parse_args(int, char *argv[]); | |
83 | void parse(); | |
84 | void create_function(char *, char *, DataType *, ParmList *); | |
85 | void link_variable(char *, char *, DataType *); | |
86 | void declare_const(char *, char *, DataType *, char *); | |
87 | void initialize(void); | |
88 | void headers(void); | |
89 | void close(void); | |
90 | void set_module(char *,char **); | |
91 | void set_init(char *); | |
92 | void add_native(char *, char *); | |
93 | void pragma(char *,char *, char *); | |
94 | void create_command(char *, char *); | |
95 | ||
96 | // Stubs for processing C++ classes in Tcl | |
97 | ||
98 | void cpp_open_class(char *classname, char *rename, char *ctype, int strip); | |
99 | void cpp_close_class(); | |
100 | void cpp_member_func(char *name, char *iname, DataType *t, ParmList *l); | |
101 | void cpp_variable(char *name, char *iname, DataType *t); | |
102 | void cpp_constructor(char *name, char *iname, ParmList *l); | |
103 | void cpp_destructor(char *name, char *newname); | |
104 | void cpp_inherit(char **baseclass, int mode = INHERIT_ALL); | |
105 | void cpp_declare_const(char *name, char *iname, DataType *type, char *value); | |
106 | void add_typedef(DataType *, char *); | |
107 | void cpp_class_decl(char *, char *, char *); | |
108 | ||
109 | }; | |
110 | ||
111 | ||
112 | ||
113 | ||
114 | ||
115 |