]>
Commit | Line | Data |
---|---|---|
0221a4c3 | 1 | Index: Source/Swig/swig.h |
1e9b37a2 RD |
2 | =================================================================== |
3 | RCS file: /cvsroot/SWIG/Source/Swig/swig.h,v | |
4 | retrieving revision 1.76 | |
5 | diff -u -4 -r1.76 swig.h | |
6 | --- Source/Swig/swig.h 11 Nov 2003 20:16:35 -0000 1.76 | |
28a15b3e | 7 | +++ Source/Swig/swig.h 18 Dec 2003 22:03:45 -0000 |
1e9b37a2 RD |
8 | @@ -350,8 +350,10 @@ |
9 | extern void Swig_print_tags(File *obj, Node *root); | |
10 | extern void Swig_print_tree(Node *obj); | |
11 | extern void Swig_print_node(Node *obj); | |
12 | ||
13 | +extern void Swig_print_xml(Node *obj, String* filename); | |
14 | + | |
15 | /* -- Wrapper function Object */ | |
16 | ||
17 | typedef struct { | |
18 | Hash *localh; | |
19 | Index: Source/Modules/main.cxx | |
20 | =================================================================== | |
21 | RCS file: /cvsroot/SWIG/Source/Modules/main.cxx,v | |
28a15b3e RD |
22 | retrieving revision 1.27 |
23 | diff -u -4 -r1.27 main.cxx | |
24 | --- Source/Modules/main.cxx 16 Dec 2003 03:43:51 -0000 1.27 | |
25 | +++ Source/Modules/main.cxx 18 Dec 2003 22:03:45 -0000 | |
26 | @@ -87,15 +87,17 @@ | |
1e9b37a2 | 27 | -Wall - Enable all warning messages\n\ |
28a15b3e RD |
28 | -Wallkw - Enable warning messages for all the languages keywords\n\ |
29 | -Werror - Force to treat the warnings as errors\n\ | |
1e9b37a2 | 30 | -w<n> - Suppress warning number <n>\n\ |
3b2fa8c6 | 31 | + -xmlout <file> - Write an XML version of the parse tree to file after normal processing\n\ |
1e9b37a2 RD |
32 | \n"; |
33 | ||
34 | // Local variables | |
35 | static int freeze = 0; | |
36 | static String *lang_config = 0; | |
37 | static char *cpp_extension = (char *) "cxx"; | |
38 | static String *outdir = 0; | |
39 | +static String *xmlout = 0; | |
40 | ||
41 | // ----------------------------------------------------------------------------- | |
42 | // check_suffix(char *name) | |
43 | // | |
28a15b3e | 44 | @@ -224,8 +226,9 @@ |
1e9b37a2 RD |
45 | int includecount = 0; |
46 | extern int check_suffix(char *); | |
47 | int dump_tags = 0; | |
48 | int dump_tree = 0; | |
49 | + int dump_xml = 0; | |
50 | int browse = 0; | |
51 | int dump_typedef = 0; | |
52 | int dump_classes = 0; | |
53 | int werror = 0; | |
28a15b3e | 54 | @@ -490,8 +493,20 @@ |
1e9b37a2 RD |
55 | Swig_mark_arg(i); |
56 | } else if (strcmp(argv[i],"-dump_tree") == 0) { | |
57 | dump_tree = 1; | |
58 | Swig_mark_arg(i); | |
59 | + } else if (strcmp(argv[i],"-dump_xml") == 0) { | |
60 | + dump_xml = 1; | |
61 | + Swig_mark_arg(i); | |
62 | + } else if (strcmp(argv[i],"-xmlout") == 0) { | |
63 | + dump_xml = 1; | |
64 | + Swig_mark_arg(i); | |
65 | + if (argv[i+1]) { | |
66 | + xmlout = NewString(argv[i+1]); | |
67 | + Swig_mark_arg(i+1); | |
68 | + } else { | |
69 | + Swig_arg_error(); | |
70 | + } | |
71 | } else if (strcmp(argv[i],"-nocontract") == 0) { | |
72 | Swig_mark_arg(i); | |
73 | Swig_contract_mode_set(0); | |
74 | } else if (strcmp(argv[i],"-browse") == 0) { | |
28a15b3e | 75 | @@ -736,8 +751,11 @@ |
1e9b37a2 RD |
76 | } |
77 | } | |
78 | if (dump_tree) { | |
79 | Swig_print_tree(top); | |
80 | + } | |
81 | + if (dump_xml) { | |
82 | + Swig_print_xml(top, xmlout); | |
83 | } | |
84 | } | |
85 | if (tm_debug) Swig_typemap_debug(); | |
86 | if (memory_debug) DohMemoryDebug(); | |
87 | Index: Source/Modules/xml.cxx | |
88 | =================================================================== | |
89 | RCS file: /cvsroot/SWIG/Source/Modules/xml.cxx,v | |
90 | retrieving revision 1.8 | |
91 | diff -u -4 -r1.8 xml.cxx | |
92 | --- Source/Modules/xml.cxx 31 Oct 2003 17:42:40 -0000 1.8 | |
28a15b3e | 93 | +++ Source/Modules/xml.cxx 18 Dec 2003 22:03:45 -0000 |
0221a4c3 | 94 | @@ -109,9 +109,9 @@ |
1e9b37a2 RD |
95 | Printf(stderr,"*** Can't open '%s'\n", outfile); |
96 | SWIG_exit(EXIT_FAILURE); | |
97 | } | |
98 | } | |
99 | - Printf( out, "<?xml version=\"1.0\" ?> \n" ); | |
0221a4c3 | 100 | + Printf( out, "<?xml version=\"1.0\" ?> \n" ); |
1e9b37a2 RD |
101 | Xml_print_tree(n); |
102 | return SWIG_OK; | |
103 | } | |
104 | ||
0221a4c3 | 105 | @@ -197,18 +197,19 @@ |
1e9b37a2 RD |
106 | Replaceall( o, "&", "&" ); |
107 | Replaceall( o, "<", "<" ); | |
108 | Replaceall( o, "\"", """ ); | |
109 | Replaceall( o, "\\", "\\\\" ); | |
110 | - Printf(out,"<attribute name=\"%s\" value=\"%s\" id=\"%ld\" addr=\"%x\" />\n", ck, o, ++id, o ); | |
111 | + Replaceall( o, "\n", " " ); | |
112 | + Printf(out,"<attribute name=\"%s\" value=\"%s\" id=\"%ld\" addr=\"%x\" />\n", ck, o, ++id, o ); | |
113 | Delete(o); | |
114 | Delete(ck); | |
115 | } | |
116 | else | |
117 | { | |
118 | o = Getattr(obj,k); | |
119 | String *ck = NewString(k); | |
120 | Replaceall( ck, ":", "_" ); | |
121 | - Printf(out,"<attribute name=\"%s\" value=\"%x\" id=\"%ld\" addr=\"%x\" />\n", ck, o, ++id, o ); | |
122 | + Printf(out,"<attribute name=\"%s\" value=\"%x\" id=\"%ld\" addr=\"%x\" />\n", ck, o, ++id, o ); | |
123 | Delete(ck); | |
124 | } | |
125 | } | |
126 | ki = Next(ki); | |
0221a4c3 | 127 | @@ -318,11 +319,10 @@ |
1e9b37a2 RD |
128 | { |
129 | print_indent(0); | |
130 | Printf( out, "<%ssitem id=\"%ld\" addr=\"%x\" >\n", markup, ++id, n.item ); | |
131 | Xml_print_attributes( n.item ); | |
132 | - Printf( out, "</%ssitem >\n", markup ); | |
133 | print_indent(0); | |
134 | - Printf( out, " />\n" ); | |
135 | + Printf( out, "</%ssitem >\n", markup ); | |
136 | n = Next(n); | |
137 | } | |
138 | indent_level -= 4; | |
139 | print_indent(0); | |
0221a4c3 | 140 | @@ -337,5 +337,36 @@ |
1e9b37a2 RD |
141 | Language * swig_xml( void ) |
142 | { | |
143 | return new XML(); | |
144 | } | |
145 | +} | |
146 | + | |
147 | + | |
148 | +/* ----------------------------------------------------------------------------- | |
149 | + * Swig_print_xml | |
150 | + * | |
151 | + * Dump an XML version of the parse tree. This is different from using the -xml | |
152 | + * language module normally as it allows the real language module to process the | |
153 | + * tree first, possibly stuffing in new attributes, so the XML that is output ends | |
154 | + * up being a post-processing version of the tree. | |
155 | + * ----------------------------------------------------------------------------- */ | |
156 | + | |
157 | +void | |
158 | +Swig_print_xml(DOH *obj, String* filename) | |
159 | +{ | |
160 | + XML xml; | |
161 | + xmllite = 1; | |
162 | + | |
163 | + if (! filename) { | |
164 | + out = stdout; | |
165 | + } | |
166 | + else { | |
167 | + out = NewFile(filename, "w"); | |
168 | + if (!out) { | |
169 | + Printf(stderr,"*** Can't open '%s'\n", filename); | |
170 | + SWIG_exit(EXIT_FAILURE); | |
171 | + } | |
172 | + } | |
173 | + | |
174 | + Printf( out, "<?xml version=\"1.0\" ?> \n" ); | |
175 | + xml.Xml_print_tree(obj); | |
176 | } |