1 Index: Source/Swig/swig.h
 
   2 ===================================================================
 
   3 RCS file: /cvsroot/SWIG/Source/Swig/swig.h,v
 
   4 retrieving revision 1.81
 
   5 diff -u -4 -r1.81 swig.h
 
   6 --- Source/Swig/swig.h  27 Jan 2004 23:39:35 -0000      1.81
 
   7 +++ Source/Swig/swig.h  30 Jan 2004 22:22:10 -0000
 
   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);
 
  13 +extern void Swig_print_xml(Node *obj, String* filename);
 
  15  /* -- Wrapper function Object */
 
  19 Index: Source/Modules/main.cxx
 
  20 ===================================================================
 
  21 RCS file: /cvsroot/SWIG/Source/Modules/main.cxx,v
 
  22 retrieving revision 1.33
 
  23 diff -u -4 -r1.33 main.cxx
 
  24 --- Source/Modules/main.cxx     22 Jan 2004 22:42:15 -0000      1.33
 
  25 +++ Source/Modules/main.cxx     30 Jan 2004 22:22:11 -0000
 
  29                         where code 321(+) is added, and 401(no sign) and 402(-) \n\
 
  30                         are suppressed. See documentation for code meanings.\n\
 
  31 +     -xmlout <file>  - Write an XML version of the parse tree to file after normal processing\n\
 
  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;
 
  41  // -----------------------------------------------------------------------------
 
  42  // check_suffix(char *name)
 
  45    char   *includefiles[256];
 
  56           } else if (strcmp(argv[i],"-dump_tree") == 0) {
 
  59 +         } else if (strcmp(argv[i],"-dump_xml") == 0) {
 
  62 +         } else if (strcmp(argv[i],"-xmlout") == 0) {
 
  66 +             xmlout = NewString(argv[i+1]);        
 
  71           } else if (strcmp(argv[i],"-nocontract") == 0) {
 
  73             Swig_contract_mode_set(0);
 
  74           } else if (strcmp(argv[i],"-browse") == 0) {
 
  82 +      Swig_print_xml(top, xmlout);
 
  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.10
 
  91 diff -u -4 -r1.10 xml.cxx
 
  92 --- Source/Modules/xml.cxx      22 Jan 2004 22:42:18 -0000      1.10
 
  93 +++ Source/Modules/xml.cxx      30 Jan 2004 22:22:11 -0000
 
  95                                         Replaceall( o, "&", "&" );
 
  96                                         Replaceall( o, "<", "<" );
 
  97                                         Replaceall( o, "\"", """ );
 
  98                                         Replaceall( o, "\\", "\\\\" );
 
  99 -                                       Printf(out,"<attribute name=\"%s\" value=\"%s\" id=\"%ld\" addr=\"%x\" />\n", ck, o, ++id, o );
 
 100 +                                        Replaceall( o, "\n", "
" );
 
 101 +                                        Printf(out,"<attribute name=\"%s\" value=\"%s\" id=\"%ld\" addr=\"%x\" />\n", ck, o, ++id, o );
 
 108                                         String *ck = NewString(k);
 
 109                                         Replaceall( ck, ":", "_" );
 
 110 -                                       Printf(out,"<attribute name=\"%s\" value=\"%x\" id=\"%ld\" addr=\"%x\" />\n", ck, o, ++id, o );
 
 111 +                                        Printf(out,"<attribute name=\"%s\" value=\"%x\" id=\"%ld\" addr=\"%x\" />\n", ck, o, ++id, o );
 
 116 @@ -318,11 +319,10 @@
 
 119                         Printf( out, "<%ssitem id=\"%ld\" addr=\"%x\" >\n", markup, ++id, n.item );
 
 120                         Xml_print_attributes( n.item );
 
 121 -                       Printf( out, "</%ssitem >\n", markup );
 
 123 -                       Printf( out, " />\n" );
 
 124 +                       Printf( out, "</%ssitem >\n", markup );
 
 132  extern "C" Language * swig_xml( void ) {
 
 133          return new_swig_xml();
 
 137 +/* -----------------------------------------------------------------------------
 
 140 + * Dump an XML version of the parse tree.  This is different from using the -xml
 
 141 + * language module normally as it allows the real language module to process the
 
 142 + * tree first, possibly stuffing in new attributes, so the XML that is output ends
 
 143 + * up being a post-processing version of the tree.
 
 144 + * ----------------------------------------------------------------------------- */
 
 147 +Swig_print_xml(DOH *obj, String* filename)
 
 156 +        out = NewFile(filename, "w");
 
 158 +            Printf(stderr,"*** Can't open '%s'\n", filename);
 
 159 +            SWIG_exit(EXIT_FAILURE);
 
 163 +    Printf( out, "<?xml version=\"1.0\" ?> \n" );
 
 164 +    xml.Xml_print_tree(obj);