]> granicus.if.org Git - clang/commitdiff
Remove the AST printer (-ast-print-xml), which is too incomplete and
authorDouglas Gregor <dgregor@apple.com>
Mon, 7 Mar 2011 01:03:30 +0000 (01:03 +0000)
committerDouglas Gregor <dgregor@apple.com>
Mon, 7 Mar 2011 01:03:30 +0000 (01:03 +0000)
too low-level to actually be useful but is just interesting enough for
people to try to use it (which won't actually work beyond toy examples).

To bring back the AST printer, it needs to be:
  - Complete, covering all of C/C++/Objective-C
  - Documented, with appropriate Schema against which we can validate
  the output
  - Designed for C/C++/Objective-C, not Clang's specific ASTs
  - Stable across Clang versions
  - Well-tested

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127141 91177308-0d34-0410-b5e6-96231b3b80d8

21 files changed:
include/clang/Driver/CC1Options.td
include/clang/Frontend/ASTConsumers.h
include/clang/Frontend/DeclContextXML.def [deleted file]
include/clang/Frontend/DeclXML.def [deleted file]
include/clang/Frontend/DocumentXML.def [deleted file]
include/clang/Frontend/DocumentXML.h [deleted file]
include/clang/Frontend/FrontendActions.h
include/clang/Frontend/FrontendOptions.h
include/clang/Frontend/StmtXML.def [deleted file]
include/clang/Frontend/TypeXML.def [deleted file]
lib/Frontend/ASTConsumers.cpp
lib/Frontend/CMakeLists.txt
lib/Frontend/CompilerInvocation.cpp
lib/Frontend/DeclXML.cpp [deleted file]
lib/Frontend/DocumentXML.cpp [deleted file]
lib/Frontend/FrontendActions.cpp
lib/Frontend/StmtXML.cpp [deleted file]
lib/Frontend/TypeXML.cpp [deleted file]
lib/FrontendTool/ExecuteCompilerInvocation.cpp
test/Coverage/ast-printing.c
test/Coverage/ast-printing.cpp

index 0696f7d08e2d8b87d2a5483afe6acd44a761a812..12f2556b9ea7322f3d8e91b76987d243e06c9f83 100644 (file)
@@ -318,8 +318,6 @@ def emit_html : Flag<"-emit-html">,
   HelpText<"Output input source as HTML">;
 def ast_print : Flag<"-ast-print">,
   HelpText<"Build ASTs and then pretty-print them">;
-def ast_print_xml : Flag<"-ast-print-xml">,
-  HelpText<"Build ASTs and then print them in XML format">;
 def ast_dump : Flag<"-ast-dump">,
   HelpText<"Build ASTs and then debug dump them">;
 def ast_dump_xml : Flag<"-ast-dump-xml">,
index c45bd40706005cbeb8d528f4265cfb27ac679a53..f82d616eca546efcc3aa94e015159b8b26433cbb 100644 (file)
@@ -36,12 +36,6 @@ class TargetOptions;
 // implementation is still incomplete.
 ASTConsumer *CreateASTPrinter(llvm::raw_ostream *OS);
 
-// AST XML-printer: prints out the AST in a XML format
-// The output is intended to be in a format such that
-// clang or any other tool could re-parse the output back into the same AST,
-// but the implementation is still incomplete.
-ASTConsumer *CreateASTPrinterXML(llvm::raw_ostream *OS);
-
 // AST dumper: dumps the raw AST in human-readable form to stderr; this is
 // intended for debugging.
 ASTConsumer *CreateASTDumper();
diff --git a/include/clang/Frontend/DeclContextXML.def b/include/clang/Frontend/DeclContextXML.def
deleted file mode 100644 (file)
index 39ed5f9..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-//===-- DeclContextXML.def - Metadata about Context XML nodes ---*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-//  This file defines the XML context info database as written in the   
-//  <ReferenceSection>/<Contexts> sub-nodes of the XML document. Type nodes 
-//  are referred by "context" reference attributes throughout the document.
-//  A context node never contains sub-nodes. 
-//  The semantics of the attributes and enums are mostly self-documenting
-//  by looking at the appropriate internally used functions and values.
-//  The following macros are used:
-//
-//  NODE_XML( CLASS, NAME ) - A node of name NAME denotes a concrete 
-//  context of class CLASS where CLASS is a class name used internally by clang. 
-//  After a NODE_XML the definition of all (optional) attributes of that context 
-//  node and possible sub-nodes follows.
-//
-//  END_NODE_XML - Closes the attribute definition of the current node.
-//
-//  ID_ATTRIBUTE_XML - Context nodes have an "id" attribute containing a 
-//  string, which value uniquely identify that statement. Other nodes may refer 
-//  by "context" attributes to this value.
-//
-//  TYPE_ATTRIBUTE_XML( FN ) - Context nodes may refer to the ids of type 
-//  nodes by a "type" attribute, if they create a type during declaration. 
-//  For instance 'struct S;' creates both a context 'S::' and a type 'S'. 
-//  Contexts and types always have different ids, however declarations and 
-//  contexts may share the same ids. FN is internally used by clang.
-// 
-//  ATTRIBUTE_XML( FN, NAME ) - An attribute named NAME. FN is internally 
-//  used by clang. A boolean attribute have the values "0" or "1".
-//
-//  ATTRIBUTE_ENUM[_OPT]_XML( FN, NAME ) - An attribute named NAME. The value
-//  is an enumeration defined with ENUM_XML macros immediately following after 
-//  that macro. An optional attribute is ommited, if the particular enum is the 
-//  empty string. FN is internally used by clang.
-//  
-//  ENUM_XML( VALUE, NAME ) - An enumeration element named NAME. VALUE is 
-//  internally used by clang.
-//
-//  END_ENUM_XML - Closes the enumeration definition of the current attribute.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef TYPE_ATTRIBUTE_XML
-#  define TYPE_ATTRIBUTE_XML( FN )     ATTRIBUTE_XML(FN, "type")
-#endif
-
-#ifndef CONTEXT_ATTRIBUTE_XML
-#  define CONTEXT_ATTRIBUTE_XML( FN )  ATTRIBUTE_XML(FN, "context")
-#endif
-
-NODE_XML(TranslationUnitDecl, "TranslationUnit")
-  ID_ATTRIBUTE_XML
-END_NODE_XML
-
-NODE_XML(FunctionDecl, "Function")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  TYPE_ATTRIBUTE_XML(getType()->getAsFunctionType())
-END_NODE_XML
-
-NODE_XML(NamespaceDecl, "Namespace")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-END_NODE_XML
-
-NODE_XML(RecordDecl, "Record")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  TYPE_ATTRIBUTE_XML(getTypeForDecl()) 
-END_NODE_XML
-
-NODE_XML(EnumDecl, "Enum")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  TYPE_ATTRIBUTE_XML(getTypeForDecl()) 
-END_NODE_XML
-
-NODE_XML(LinkageSpecDecl, "LinkageSpec")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_ENUM_OPT_XML(getLanguage(), "lang")
-         ENUM_XML(LinkageSpecDecl::lang_c, "C")
-         ENUM_XML(LinkageSpecDecl::lang_cxx, "CXX")
-  END_ENUM_XML
-END_NODE_XML
-
-//===----------------------------------------------------------------------===//
-#undef NODE_XML
-#undef ID_ATTRIBUTE_XML                
-#undef TYPE_ATTRIBUTE_XML
-#undef ATTRIBUTE_XML
-#undef ATTRIBUTE_SPECIAL_XML
-#undef ATTRIBUTE_OPT_XML
-#undef ATTRIBUTE_ENUM_XML
-#undef ATTRIBUTE_ENUM_OPT_XML
-#undef ATTRIBUTE_FILE_LOCATION_XML
-#undef ENUM_XML
-#undef END_ENUM_XML                    
-#undef END_NODE_XML                    
-#undef SUB_NODE_XML
-#undef SUB_NODE_SEQUENCE_XML
-#undef SUB_NODE_OPT_XML
diff --git a/include/clang/Frontend/DeclXML.def b/include/clang/Frontend/DeclXML.def
deleted file mode 100644 (file)
index 58f7e55..0000000
+++ /dev/null
@@ -1,372 +0,0 @@
-//===-- DeclXML.def - Metadata about Decl XML nodes ------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-//  This file defines the XML statement database structure as written in
-//  <TranslationUnit> sub-nodes of the XML document.
-//  The semantics of the attributes and enums are mostly self-documenting
-//  by looking at the appropriate internally used functions and values.
-//  The following macros are used:
-//
-//  NODE_XML( CLASS, NAME ) - A node of name NAME denotes a concrete
-//  statement of class CLASS where CLASS is a class name used internally by clang.
-//  After a NODE_XML the definition of all (optional) attributes of that statement
-//  node and possible sub-nodes follows.
-//
-//  END_NODE_XML - Closes the attribute definition of the current node.
-//
-//  ID_ATTRIBUTE_XML - Some statement nodes have an "id" attribute containing a
-//  string, which value uniquely identify that statement. Other nodes may refer
-//  by reference attributes to this value (currently used only for Label).
-//
-//  TYPE_ATTRIBUTE_XML( FN ) - Type nodes refer to the result type id of an
-//  expression by a "type" attribute. FN is internally used by clang.
-//
-//  ATTRIBUTE_XML( FN, NAME ) - An attribute named NAME. FN is internally
-//  used by clang. A boolean attribute have the values "0" or "1".
-//
-//  ATTRIBUTE_SPECIAL_XML( FN, NAME ) - An attribute named NAME which deserves
-//  a special handling. See the appropriate documentations.
-//
-//  ATTRIBUTE_FILE_LOCATION_XML - A bunch of attributes denoting the location of
-//  a statement in the source file(s).
-//
-//  ATTRIBUTE_OPT_XML( FN, NAME ) - An optional attribute named NAME.
-//  Optional attributes are omitted for boolean types, if the value is false,
-//  for integral types, if the value is null and for strings,
-//  if the value is the empty string. FN is internally used by clang.
-//
-//  ATTRIBUTE_ENUM[_OPT]_XML( FN, NAME ) - An attribute named NAME. The value
-//  is an enumeration defined with ENUM_XML macros immediately following after
-//  that macro. An optional attribute is ommited, if the particular enum is the
-//  empty string. FN is internally used by clang.
-//
-//  ENUM_XML( VALUE, NAME ) - An enumeration element named NAME. VALUE is
-//  internally used by clang.
-//
-//  END_ENUM_XML - Closes the enumeration definition of the current attribute.
-//
-//  SUB_NODE_XML( CLASS ) - A mandatory sub-node of class CLASS or its sub-classes.
-//
-//  SUB_NODE_OPT_XML( CLASS ) - An optional sub-node of class CLASS or its sub-classes.
-//
-//  SUB_NODE_SEQUENCE_XML( CLASS ) - Zero or more sub-nodes of class CLASS or
-//  its sub-classes.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef ATTRIBUTE_FILE_LOCATION_XML
-#  define ATTRIBUTE_FILE_LOCATION_XML             \
-     ATTRIBUTE_XML(getFilename(), "file")         \
-     ATTRIBUTE_XML(getLine(), "line")             \
-     ATTRIBUTE_XML(getColumn(), "col")            \
-     ATTRIBUTE_OPT_XML(getFilename(), "endfile")  \
-     ATTRIBUTE_OPT_XML(getLine(), "endline")      \
-     ATTRIBUTE_OPT_XML(getColumn(), "endcol")
-#endif
-
-#ifndef TYPE_ATTRIBUTE_XML
-#  define TYPE_ATTRIBUTE_XML( FN )    ATTRIBUTE_XML(FN, "type")
-#endif
-
-#ifndef CONTEXT_ATTRIBUTE_XML
-#  define CONTEXT_ATTRIBUTE_XML( FN ) ATTRIBUTE_XML(FN, "context")
-#endif
-
-//NODE_XML(TranslationUnitDecl, "TranslationUnit")
-//  SUB_NODE_SEQUENCE_XML(Decl)
-//END_NODE_XML
-
-NODE_XML(Decl, "FIXME_Decl")
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclKindName(), "unhandled_decl_name")
-END_NODE_XML
-
-NODE_XML(FunctionDecl, "Function")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  TYPE_ATTRIBUTE_XML(getType()->getAs<FunctionType>()->getResultType())
-  ATTRIBUTE_XML(getType()->getAs<FunctionType>(), "function_type")
-  ATTRIBUTE_ENUM_OPT_XML(getStorageClass(), "storage_class")
-         ENUM_XML(SC_None, "")
-         ENUM_XML(SC_Extern, "extern")
-         ENUM_XML(SC_Static, "static")
-         ENUM_XML(SC_PrivateExtern, "__private_extern__")
-  END_ENUM_XML
-  ATTRIBUTE_OPT_XML(isInlineSpecified(), "inline")
-  //ATTRIBUTE_OPT_XML(isVariadic(), "variadic")       // in the type reference
-  ATTRIBUTE_XML(getNumParams(), "num_args")
-  ATTRIBUTE_OPT_XML(isMain(), "main")
-  ATTRIBUTE_OPT_XML(isExternC(), "externc")
-  ATTRIBUTE_OPT_XML(isGlobal(), "global")
-  SUB_NODE_SEQUENCE_XML(ParmVarDecl)
-  SUB_NODE_FN_BODY_XML
-END_NODE_XML
-
-NODE_XML(CXXMethodDecl, "CXXMethod")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  TYPE_ATTRIBUTE_XML(getType()->getAs<FunctionType>()->getResultType())
-  ATTRIBUTE_XML(getType()->getAs<FunctionType>(), "function_type")
-  ATTRIBUTE_OPT_XML(isInlineSpecified(), "inline")
-  ATTRIBUTE_OPT_XML(isStatic(), "static")
-  ATTRIBUTE_OPT_XML(isVirtual(), "virtual")
-  ATTRIBUTE_OPT_XML(isPure(), "pure")
-  ATTRIBUTE_ENUM_OPT_XML(getAccess(), "access")
-         ENUM_XML(AS_none,      "")
-         ENUM_XML(AS_public,    "public")
-         ENUM_XML(AS_protected, "protected")
-         ENUM_XML(AS_private,   "private")
-  END_ENUM_XML
-  ATTRIBUTE_XML(getNumParams(), "num_args")
-  SUB_NODE_SEQUENCE_XML(ParmVarDecl)
-  SUB_NODE_FN_BODY_XML
-END_NODE_XML
-
-NODE_XML(CXXConstructorDecl, "CXXConstructor")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  TYPE_ATTRIBUTE_XML(getType()->getAs<FunctionType>()->getResultType())
-  ATTRIBUTE_XML(getType()->getAs<FunctionType>(), "function_type")
-  ATTRIBUTE_OPT_XML(isExplicit(), "is_explicit")
-  ATTRIBUTE_OPT_XML(isDefaultConstructor(), "is_default_ctor")
-  ATTRIBUTE_OPT_XML(isCopyConstructor(), "is_copy_ctor")
-  ATTRIBUTE_OPT_XML(isInlineSpecified(), "inline")
-  ATTRIBUTE_OPT_XML(isStatic(), "static")
-  ATTRIBUTE_OPT_XML(isVirtual(), "virtual")
-  ATTRIBUTE_ENUM_OPT_XML(getAccess(), "access")
-         ENUM_XML(AS_none,      "")
-         ENUM_XML(AS_public,    "public")
-         ENUM_XML(AS_protected, "protected")
-         ENUM_XML(AS_private,   "private")
-  END_ENUM_XML
-  ATTRIBUTE_XML(getNumParams(), "num_args")
-  SUB_NODE_SEQUENCE_XML(ParmVarDecl)
-  SUB_NODE_FN_BODY_XML
-END_NODE_XML
-
-NODE_XML(CXXDestructorDecl, "CXXDestructor")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  TYPE_ATTRIBUTE_XML(getType()->getAs<FunctionType>()->getResultType())
-  ATTRIBUTE_XML(getType()->getAs<FunctionType>(), "function_type")
-  ATTRIBUTE_OPT_XML(isInlineSpecified(), "inline")
-  ATTRIBUTE_OPT_XML(isStatic(), "static")
-  ATTRIBUTE_OPT_XML(isVirtual(), "virtual")
-  ATTRIBUTE_ENUM_OPT_XML(getAccess(), "access")
-         ENUM_XML(AS_none,      "")
-         ENUM_XML(AS_public,    "public")
-         ENUM_XML(AS_protected, "protected")
-         ENUM_XML(AS_private,   "private")
-  END_ENUM_XML
-  ATTRIBUTE_XML(getNumParams(), "num_args")
-  SUB_NODE_SEQUENCE_XML(ParmVarDecl)
-  SUB_NODE_FN_BODY_XML
-END_NODE_XML
-
-NODE_XML(CXXConversionDecl, "CXXConversion")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  TYPE_ATTRIBUTE_XML(getType()->getAs<FunctionType>()->getResultType())
-  ATTRIBUTE_XML(getType()->getAs<FunctionType>(), "function_type")
-  ATTRIBUTE_OPT_XML(isExplicit(), "is_explicit")
-  ATTRIBUTE_OPT_XML(isInlineSpecified(), "inline")
-  ATTRIBUTE_OPT_XML(isStatic(), "static")
-  ATTRIBUTE_OPT_XML(isVirtual(), "virtual")
-  ATTRIBUTE_ENUM_OPT_XML(getAccess(), "access")
-         ENUM_XML(AS_none,      "")
-         ENUM_XML(AS_public,    "public")
-         ENUM_XML(AS_protected, "protected")
-         ENUM_XML(AS_private,   "private")
-  END_ENUM_XML
-  ATTRIBUTE_XML(getNumParams(), "num_args")
-  SUB_NODE_SEQUENCE_XML(ParmVarDecl)
-  SUB_NODE_FN_BODY_XML
-END_NODE_XML
-
-NODE_XML(NamespaceDecl, "Namespace")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  SUB_NODE_SEQUENCE_XML(DeclContext)
-END_NODE_XML
-
-NODE_XML(UsingDirectiveDecl, "UsingDirective")
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  ATTRIBUTE_XML(getNominatedNamespace(), "ref")
-END_NODE_XML
-
-NODE_XML(NamespaceAliasDecl, "NamespaceAlias")
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  ATTRIBUTE_XML(getNamespace(), "ref")
-END_NODE_XML
-
-NODE_XML(RecordDecl, "Record")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  ATTRIBUTE_OPT_XML(isDefinition() == false, "forward")
-  ATTRIBUTE_XML(getTypeForDecl(), "type")             // refers to the type this decl creates
-  SUB_NODE_SEQUENCE_XML(FieldDecl)
-END_NODE_XML
-
-NODE_XML(CXXRecordDecl, "CXXRecord")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  ATTRIBUTE_OPT_XML(isDefinition() == false, "forward")
-  ATTRIBUTE_XML(getTypeForDecl(), "type")             // refers to the type this decl creates
-  SUB_NODE_SEQUENCE_XML(FieldDecl)
-END_NODE_XML
-
-NODE_XML(EnumDecl, "Enum")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  ATTRIBUTE_OPT_XML(isDefinition() == false, "forward")
-  ATTRIBUTE_SPECIAL_XML(getIntegerType(), "type")     // is NULL in pure declarations thus deserves special handling
-  SUB_NODE_SEQUENCE_XML(EnumConstantDecl)             // only present in definition
-END_NODE_XML
-
-NODE_XML(EnumConstantDecl, "EnumConstant")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_XML(getInitVal().toString(10, true), "value")     // integer
-  SUB_NODE_OPT_XML(Expr)                                      // init expr of this constant
-END_NODE_XML
-
-NODE_XML(FieldDecl, "Field")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_OPT_XML(isMutable(), "mutable")
-  ATTRIBUTE_ENUM_OPT_XML(getAccess(), "access")
-         ENUM_XML(AS_none,      "")
-         ENUM_XML(AS_public,    "public")
-         ENUM_XML(AS_protected, "protected")
-         ENUM_XML(AS_private,   "private")
-  END_ENUM_XML
-  ATTRIBUTE_OPT_XML(isBitField(), "bitfield")
-  SUB_NODE_OPT_XML(Expr)                                      // init expr of a bit field
-END_NODE_XML
-
-NODE_XML(TypedefDecl, "Typedef")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  TYPE_ATTRIBUTE_XML(getUnderlyingType())
-END_NODE_XML
-
-NODE_XML(VarDecl, "Var")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_ENUM_OPT_XML(getStorageClass(), "storage_class")
-         ENUM_XML(SC_None, "")
-         ENUM_XML(SC_Auto, "auto")
-         ENUM_XML(SC_Register, "register")
-         ENUM_XML(SC_Extern, "extern")
-         ENUM_XML(SC_Static, "static")
-         ENUM_XML(SC_PrivateExtern, "__private_extern__")
-  END_ENUM_XML
-  SUB_NODE_OPT_XML(Expr)                                      // init expr
-END_NODE_XML
-
-NODE_XML(ParmVarDecl, "ParmVar")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-  TYPE_ATTRIBUTE_XML(getType())
-  SUB_NODE_OPT_XML(Expr)                                      // default argument expression
-END_NODE_XML
-
-NODE_XML(LinkageSpecDecl, "LinkageSpec")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_ENUM_OPT_XML(getLanguage(), "lang")
-         ENUM_XML(LinkageSpecDecl::lang_c, "C")
-         ENUM_XML(LinkageSpecDecl::lang_cxx, "CXX")
-  END_ENUM_XML
-  SUB_NODE_XML(DeclContext)
-END_NODE_XML
-
-NODE_XML(TemplateDecl, "Template")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-END_NODE_XML
-
-NODE_XML(TemplateTypeParmDecl, "TemplateTypeParm")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getNameAsString(), "name")
-END_NODE_XML
-
-NODE_XML(UsingShadowDecl, "UsingShadow")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getTargetDecl(), "target_decl")
-  ATTRIBUTE_XML(getUsingDecl(), "using_decl")
-END_NODE_XML
-
-NODE_XML(UsingDecl, "Using")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getDeclContext(), "context")
-  ATTRIBUTE_XML(getQualifier(), "target_nested_namespace_decl")
-  ATTRIBUTE_XML(isTypeName(), "is_typename")
-END_NODE_XML
-
-//===----------------------------------------------------------------------===//
-#undef NODE_XML
-#undef ID_ATTRIBUTE_XML
-#undef TYPE_ATTRIBUTE_XML
-#undef ATTRIBUTE_XML
-#undef ATTRIBUTE_SPECIAL_XML
-#undef ATTRIBUTE_OPT_XML
-#undef ATTRIBUTE_ENUM_XML
-#undef ATTRIBUTE_ENUM_OPT_XML
-#undef ATTRIBUTE_FILE_LOCATION_XML
-#undef ENUM_XML
-#undef END_ENUM_XML
-#undef END_NODE_XML
-#undef SUB_NODE_XML
-#undef SUB_NODE_SEQUENCE_XML
-#undef SUB_NODE_OPT_XML
-#undef SUB_NODE_FN_BODY_XML
diff --git a/include/clang/Frontend/DocumentXML.def b/include/clang/Frontend/DocumentXML.def
deleted file mode 100644 (file)
index 4c52bd8..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-//===-- DocumentXML.def - Metadata about Document XML nodes -----*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-//  This file defines the XML root database structure as written in 
-//  an AST XML document. 
-//  The following macros are used:
-//
-//  NODE_XML( CLASS, NAME ) - A node of name NAME denotes a concrete 
-//  statement of class CLASS where CLASS is a class name used internally by clang. 
-//  After a NODE_XML the definition of all (optional) attributes of that statement 
-//  node and possible sub-nodes follows.
-//
-//  END_NODE_XML - Closes the attribute definition of the current node.
-//
-//  ID_ATTRIBUTE_XML - Some nodes have an "id" attribute containing a 
-//  string, which value uniquely identify the entity represented by that node. 
-//  Other nodes may refer by reference attributes to this value.
-//
-//  ATTRIBUTE_SPECIAL_XML( FN, NAME ) - An attribute named NAME which deserves 
-//  a special handling. See the appropriate documentations. 
-//
-//  SUB_NODE_XML( CLASS ) - A mandatory sub-node of class CLASS or its sub-classes.
-//
-//  SUB_NODE_SEQUENCE_XML( CLASS ) - Zero or more sub-nodes of class CLASS or 
-//  its sub-classes.
-//
-//===----------------------------------------------------------------------===//
-
-ROOT_NODE_XML("CLANG_XML")
-  ATTRIBUTE_SPECIAL_XML(ignore, "version")     // special retrieving needed
-  SUB_NODE_XML("TranslationUnit")
-  SUB_NODE_XML("ReferenceSection")
-END_NODE_XML
-
-NODE_XML("TranslationUnit")
-  SUB_NODE_SEQUENCE_XML(Decl)
-END_NODE_XML
-
-NODE_XML("ReferenceSection")
-  SUB_NODE_XML("Types")
-  SUB_NODE_XML("Contexts")
-  SUB_NODE_XML("Files")
-END_NODE_XML
-
-NODE_XML("Types")
-  SUB_NODE_SEQUENCE_XML(Type)
-END_NODE_XML
-
-NODE_XML("Contexts")
-  SUB_NODE_SEQUENCE_XML(DeclContext)
-END_NODE_XML
-
-NODE_XML("Files")
-  SUB_NODE_SEQUENCE_XML("File")
-END_NODE_XML
-
-NODE_XML("File")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_SPECIAL_XML(ignore, "name")         // special retrieving needed, denotes the source file name
-END_NODE_XML
-
-
-//===----------------------------------------------------------------------===//
-#undef NODE_XML
-#undef ID_ATTRIBUTE_XML                
-#undef ATTRIBUTE_SPECIAL_XML
-#undef END_NODE_XML                    
-#undef SUB_NODE_XML
-#undef SUB_NODE_SEQUENCE_XML
diff --git a/include/clang/Frontend/DocumentXML.h b/include/clang/Frontend/DocumentXML.h
deleted file mode 100644 (file)
index 602d846..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-//===--- DocumentXML.h - XML document for ASTs ------------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the XML document class, which provides the means to
-// dump out the AST in a XML form that exposes type details and other fields.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_FRONTEND_DOCUMENTXML_H
-#define LLVM_CLANG_FRONTEND_DOCUMENTXML_H
-
-#include <string>
-#include <map>
-#include <stack>
-#include "clang/AST/Type.h"
-#include "clang/AST/TypeOrdering.h"
-#include "llvm/Support/raw_ostream.h"
-#include "llvm/ADT/DenseMap.h"
-
-namespace clang {
-
-//--------------------------------------------------------- forwards
-class DeclContext;
-class Decl;
-class NamedDecl;
-class FunctionDecl;
-class ASTContext;
-class LabelStmt;
-
-//---------------------------------------------------------
-namespace XML {
-  // id maps:
-  template<class T>
-  struct IdMap : llvm::DenseMap<T, unsigned> {};
-
-  template<>
-  struct IdMap<QualType> : std::map<QualType, unsigned, QualTypeOrdering> {};
-
-  template<>
-  struct IdMap<std::string> : std::map<std::string, unsigned> {};
-}
-
-//---------------------------------------------------------
-class DocumentXML {
-public:
-  DocumentXML(const std::string& rootName, llvm::raw_ostream& out);
-
-  void initialize(ASTContext &Context);
-  void PrintDecl(Decl *D);
-  void PrintStmt(const Stmt *S);    // defined in StmtXML.cpp
-  void finalize();
-
-
-  DocumentXML& addSubNode(const std::string& name);   // also enters the sub node, returns *this
-  DocumentXML& toParent();                            // returns *this
-
-  void addAttribute(const char* pName, const QualType& pType);
-  void addAttribute(const char* pName, bool value);
-
-  template<class T>
-  void addAttribute(const char* pName, const T* value)   {
-    addPtrAttribute(pName, value);
-  }
-
-  template<class T>
-  void addAttribute(const char* pName, T* value) {
-    addPtrAttribute(pName, value);
-  }
-
-  template<class T>
-  void addAttribute(const char* pName, const T& value);
-
-  template<class T>
-  void addAttributeOptional(const char* pName, const T& value);
-
-  void addSourceFileAttribute(const std::string& fileName);
-
-  PresumedLoc addLocation(const SourceLocation& Loc);
-  void addLocationRange(const SourceRange& R);
-
-  static std::string escapeString(const char* pStr, std::string::size_type len);
-
-private:
-  DocumentXML(const DocumentXML&);              // not defined
-  DocumentXML& operator=(const DocumentXML&);   // not defined
-
-  std::stack<std::string> NodeStack;
-  llvm::raw_ostream& Out;
-  ASTContext *Ctx;
-  bool      HasCurrentNodeSubNodes;
-
-
-  XML::IdMap<QualType>                 Types;
-  XML::IdMap<const DeclContext*>       Contexts;
-  XML::IdMap<const Type*>              BasicTypes;
-  XML::IdMap<std::string>              SourceFiles;
-  XML::IdMap<const NamedDecl*>         Decls;
-  XML::IdMap<const LabelStmt*>         Labels;
-
-  void addContextsRecursively(const DeclContext *DC);
-  void addTypeRecursively(const Type* pType);
-  void addTypeRecursively(const QualType& pType);
-
-  void Indent();
-
-  // forced pointer dispatch:
-  void addPtrAttribute(const char* pName, const Type* pType);
-  void addPtrAttribute(const char* pName, const NamedDecl* D);
-  void addPtrAttribute(const char* pName, const DeclContext* D);
-  void addPtrAttribute(const char* pName, const NamespaceDecl* D);    // disambiguation
-  void addPtrAttribute(const char* pName, const NestedNameSpecifier* N);
-  void addPtrAttribute(const char* pName, const LabelStmt* L);
-  void addPtrAttribute(const char* pName, const char* text);
-
-  // defined in TypeXML.cpp:
-  void addParentTypes(const Type* pType);
-  void writeTypeToXML(const Type* pType);
-  void writeTypeToXML(const QualType& pType);
-  class TypeAdder;
-  friend class TypeAdder;
-
-  // defined in DeclXML.cpp:
-  void writeDeclToXML(Decl *D);
-  class DeclPrinter;
-  friend class DeclPrinter;
-
-  // for addAttributeOptional:
-  static bool isDefault(unsigned value)           { return value == 0; }
-  static bool isDefault(bool value)               { return !value; }
-  static bool isDefault(Qualifiers::GC value)     { return value == Qualifiers::GCNone; }
-  static bool isDefault(const std::string& value) { return value.empty(); }
-};
-
-//--------------------------------------------------------- inlines
-
-inline void DocumentXML::initialize(ASTContext &Context) {
-  Ctx = &Context;
-}
-
-//---------------------------------------------------------
-template<class T>
-inline void DocumentXML::addAttribute(const char* pName, const T& value) {
-  std::string repr;
-  {
-    llvm::raw_string_ostream buf(repr);
-    buf << value;
-  }
-  
-  Out << ' ' << pName << "=\"" 
-      << DocumentXML::escapeString(repr.c_str(), repr.size())
-      << "\"";
-}
-
-//---------------------------------------------------------
-inline void DocumentXML::addPtrAttribute(const char* pName, const char* text) {
-  Out << ' ' << pName << "=\"" 
-      << DocumentXML::escapeString(text, strlen(text))
-      << "\"";
-}
-
-//---------------------------------------------------------
-inline void DocumentXML::addAttribute(const char* pName, bool value) {
-  addPtrAttribute(pName, value ? "1" : "0");
-}
-
-//---------------------------------------------------------
-template<class T>
-inline void DocumentXML::addAttributeOptional(const char* pName,
-                                              const T& value) {
-  if (!isDefault(value)) {
-    addAttribute(pName, value);
-  }
-}
-
-//---------------------------------------------------------
-
-} //namespace clang
-
-#endif //LLVM_CLANG_DOCUMENTXML_H
index 4df2e71571f78b9a5ed75c3ea398a58cc09c0f54..4e67449b854976e94e857b01298c134449d480f5 100644 (file)
@@ -42,12 +42,6 @@ protected:
                                          llvm::StringRef InFile);
 };
 
-class ASTPrintXMLAction : public ASTFrontendAction {
-protected:
-  virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
-                                         llvm::StringRef InFile);
-};
-
 class ASTDumpAction : public ASTFrontendAction {
 protected:
   virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
index 19d39c3ca1b22e7c2c6953290b236af67c64a016..02f6f868fe49bb5be18675042c5bb91efd50deb8 100644 (file)
@@ -23,7 +23,6 @@ namespace frontend {
     ASTDump,                ///< Parse ASTs and dump them.
     ASTDumpXML,             ///< Parse ASTs and dump them in XML.
     ASTPrint,               ///< Parse ASTs and print them.
-    ASTPrintXML,            ///< Parse ASTs and print them in XML.
     ASTView,                ///< Parse ASTs and view them in Graphviz.
     BoostCon,               ///< BoostCon mode.
     CreateModule,           ///< Create module definition
diff --git a/include/clang/Frontend/StmtXML.def b/include/clang/Frontend/StmtXML.def
deleted file mode 100644 (file)
index 8a859e6..0000000
+++ /dev/null
@@ -1,520 +0,0 @@
-//===-- StmtXML.def - Metadata about Stmt XML nodes ------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-//  This file defines the XML statement database structure as written in
-//  <TranslationUnit> sub-nodes of the XML document.
-//  The semantics of the attributes and enums are mostly self-documenting
-//  by looking at the appropriate internally used functions and values.
-//  The following macros are used:
-//
-//  NODE_XML( CLASS, NAME ) - A node of name NAME denotes a concrete
-//  statement of class CLASS where CLASS is a class name used internally by clang.
-//  After a NODE_XML the definition of all (optional) attributes of that statement
-//  node and possible sub-nodes follows.
-//
-//  END_NODE_XML - Closes the attribute definition of the current node.
-//
-//  ID_ATTRIBUTE_XML - Some statement nodes have an "id" attribute containing a
-//  string, which value uniquely identify that statement. Other nodes may refer
-//  by reference attributes to this value (currently used only for Label).
-//
-//  TYPE_ATTRIBUTE_XML( FN ) - Type nodes refer to the result type id of an
-//  expression by a "type" attribute. FN is internally used by clang.
-//
-//  ATTRIBUTE_XML( FN, NAME ) - An attribute named NAME. FN is internally
-//  used by clang. A boolean attribute have the values "0" or "1".
-//
-//  ATTRIBUTE_SPECIAL_XML( FN, NAME ) - An attribute named NAME which deserves
-//  a special handling. See the appropriate documentations.
-//
-//  ATTRIBUTE_FILE_LOCATION_XML - A bunch of attributes denoting the location of
-//  a statement in the source file(s).
-//
-//  ATTRIBUTE_OPT_XML( FN, NAME ) - An optional attribute named NAME.
-//  Optional attributes are omitted for boolean types, if the value is false,
-//  for integral types, if the value is null and for strings,
-//  if the value is the empty string. FN is internally used by clang.
-//
-//  ATTRIBUTE_ENUM[_OPT]_XML( FN, NAME ) - An attribute named NAME. The value
-//  is an enumeration defined with ENUM_XML macros immediately following after
-//  that macro. An optional attribute is ommited, if the particular enum is the
-//  empty string. FN is internally used by clang.
-//
-//  ENUM_XML( VALUE, NAME ) - An enumeration element named NAME. VALUE is
-//  internally used by clang.
-//
-//  END_ENUM_XML - Closes the enumeration definition of the current attribute.
-//
-//  SUB_NODE_XML( CLASS ) - A mandatory sub-node of class CLASS or its sub-classes.
-//
-//  SUB_NODE_OPT_XML( CLASS ) - An optional sub-node of class CLASS or its sub-classes.
-//
-//  SUB_NODE_SEQUENCE_XML( CLASS ) - Zero or more sub-nodes of class CLASS or
-//  its sub-classes.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef ATTRIBUTE_FILE_LOCATION_XML
-#  define ATTRIBUTE_FILE_LOCATION_XML             \
-     ATTRIBUTE_XML(getFilename(), "file")         \
-     ATTRIBUTE_XML(getLine(), "line")             \
-     ATTRIBUTE_XML(getColumn(), "col")            \
-     ATTRIBUTE_OPT_XML(getFilename(), "endfile")  \
-     ATTRIBUTE_OPT_XML(getLine(), "endline")      \
-     ATTRIBUTE_OPT_XML(getColumn(), "endcol")
-#endif
-
-#ifndef TYPE_ATTRIBUTE_XML
-#  define TYPE_ATTRIBUTE_XML( FN )     ATTRIBUTE_XML(FN, "type")
-#endif
-
-#ifndef CONTEXT_ATTRIBUTE_XML
-#  define CONTEXT_ATTRIBUTE_XML( FN )  ATTRIBUTE_XML(FN, "context")
-#endif
-
-NODE_XML(Stmt, "Stmt_Unsupported")                    // fallback for unsupproted statements
-  ATTRIBUTE_FILE_LOCATION_XML
-END_NODE_XML
-
-NODE_XML(NullStmt, "NullStmt")
-  ATTRIBUTE_FILE_LOCATION_XML
-END_NODE_XML
-
-NODE_XML(CompoundStmt, "CompoundStmt")
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(size(), "num_stmts")
-  SUB_NODE_SEQUENCE_XML(Stmt)
-END_NODE_XML
-
-NODE_XML(CaseStmt, "CaseStmt")                        // case expr: body;
-  ATTRIBUTE_FILE_LOCATION_XML
-  SUB_NODE_XML(Stmt)                                  // body
-  SUB_NODE_XML(Expr)                                  // expr
-  SUB_NODE_XML(Expr)                                  // rhs expr in gc extension: case expr .. expr: body;
-END_NODE_XML
-
-NODE_XML(DefaultStmt, "DefaultStmt")                  // default: body;
-  ATTRIBUTE_FILE_LOCATION_XML
-  SUB_NODE_XML(Stmt)                                  // body
-END_NODE_XML
-
-NODE_XML(LabelStmt, "LabelStmt")                      // Label: body;
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getName(), "name")                    // string
-  SUB_NODE_XML(Stmt)                                  // body
-END_NODE_XML
-
-NODE_XML(IfStmt, "IfStmt")                            // if (cond) stmt1; else stmt2;
-  ATTRIBUTE_FILE_LOCATION_XML
-  SUB_NODE_XML(Expr)                                  // cond
-  SUB_NODE_XML(Stmt)                                  // stmt1
-  SUB_NODE_XML(Stmt)                                  // stmt2
-END_NODE_XML
-
-NODE_XML(SwitchStmt, "SwitchStmt")                    // switch (cond) body;
-  ATTRIBUTE_FILE_LOCATION_XML
-  SUB_NODE_XML(Expr)                                  // cond
-  SUB_NODE_XML(Stmt)                                  // body
-END_NODE_XML
-
-NODE_XML(WhileStmt, "WhileStmt")                      // while (cond) body;
-  ATTRIBUTE_FILE_LOCATION_XML
-  SUB_NODE_XML(Expr)                                  // cond
-  SUB_NODE_XML(Stmt)                                  // body
-END_NODE_XML
-
-NODE_XML(DoStmt, "DoStmt")                            // do body while (cond);
-  ATTRIBUTE_FILE_LOCATION_XML
-  SUB_NODE_XML(Expr)                                  // cond
-  SUB_NODE_XML(Stmt)                                  // body
-END_NODE_XML
-
-NODE_XML(ForStmt, "ForStmt")                          // for (init; cond; inc) body;
-  ATTRIBUTE_FILE_LOCATION_XML
-  SUB_NODE_XML(Stmt)                                  // init
-  SUB_NODE_XML(Expr)                                  // cond
-  SUB_NODE_XML(Expr)                                  // inc
-  SUB_NODE_XML(Stmt)                                  // body
-END_NODE_XML
-
-NODE_XML(GotoStmt, "GotoStmt")                        // goto label;
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getLabel()->getName(), "name")        // informal string
-  ATTRIBUTE_XML(getLabel(), "ref")                    // id string
-END_NODE_XML
-
-NODE_XML(IndirectGotoStmt, "IndirectGotoStmt")        // goto expr;
-  ATTRIBUTE_FILE_LOCATION_XML
-  SUB_NODE_XML(Expr)                                  // expr
-END_NODE_XML
-
-NODE_XML(ContinueStmt, "ContinueStmt")                // continue
-  ATTRIBUTE_FILE_LOCATION_XML
-END_NODE_XML
-
-NODE_XML(BreakStmt, "BreakStmt")                      // break
-  ATTRIBUTE_FILE_LOCATION_XML
-END_NODE_XML
-
-NODE_XML(ReturnStmt, "ReturnStmt")                    // return expr;
-  ATTRIBUTE_FILE_LOCATION_XML
-  SUB_NODE_XML(Expr)                                  // expr
-END_NODE_XML
-
-NODE_XML(AsmStmt, "AsmStmt")                          // GNU inline-assembly statement extension
-  ATTRIBUTE_FILE_LOCATION_XML
-  // FIXME
-END_NODE_XML
-
-NODE_XML(DeclStmt, "DeclStmt")                        // a declaration statement
-  ATTRIBUTE_FILE_LOCATION_XML
-  SUB_NODE_SEQUENCE_XML(Decl)
-END_NODE_XML
-
-// C++ statements
-NODE_XML(CXXTryStmt, "CXXTryStmt")                    // try CompoundStmt CXXCatchStmt1 CXXCatchStmt2 ..
-  ATTRIBUTE_FILE_LOCATION_XML
-  ATTRIBUTE_XML(getNumHandlers(), "num_handlers")
-  SUB_NODE_XML(CompoundStmt)
-  SUB_NODE_SEQUENCE_XML(CXXCatchStmt)
-END_NODE_XML
-
-NODE_XML(CXXCatchStmt, "CXXCatchStmt")                // catch (decl) Stmt
-  ATTRIBUTE_FILE_LOCATION_XML
-  SUB_NODE_XML(VarDecl)
-  SUB_NODE_XML(Stmt)
-END_NODE_XML
-
-// Expressions
-NODE_XML(PredefinedExpr, "PredefinedExpr")
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_ENUM_XML(getIdentType(), "kind")
-         ENUM_XML(PredefinedExpr::Func, "__func__")
-         ENUM_XML(PredefinedExpr::Function, "__FUNCTION__")
-         ENUM_XML(PredefinedExpr::PrettyFunction, "__PRETTY_FUNCTION__")
-  END_ENUM_XML
-END_NODE_XML
-
-NODE_XML(DeclRefExpr, "DeclRefExpr")                  // an expression referring to a declared entity
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_XML(getDecl(), "ref")                     // id string of the declaration
-  ATTRIBUTE_XML(getDecl()->getNameAsString(), "name") // informal
-  //ATTRIBUTE_ENUM_XML(getDecl()->getKind(), "kind")  // really needed here?
-END_NODE_XML
-
-NODE_XML(IntegerLiteral, "IntegerLiteral")
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_XML(getValue(), "value")                  // (signed) integer
-END_NODE_XML
-
-NODE_XML(CharacterLiteral, "CharacterLiteral")
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_XML(getValue(), "value")                  // unsigned
-END_NODE_XML
-
-NODE_XML(FloatingLiteral, "FloatingLiteral")
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  // FIXME: output float as written in source (no approximation or the like)
-  //ATTRIBUTE_XML(getValueAsApproximateDouble(), "value")   // float
-END_NODE_XML
-
-NODE_XML(StringLiteral, "StringLiteral")
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_SPECIAL_XML(getStrData(), "value")          // string, special handling for escaping needed
-  ATTRIBUTE_OPT_XML(isWide(), "is_wide")                // boolean
-END_NODE_XML
-
-NODE_XML(UnaryOperator, "UnaryOperator")                // op(expr) or (expr)op
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_ENUM_XML(getOpcode(), "kind")
-    ENUM_XML(UO_PostInc, "postinc")
-    ENUM_XML(UO_PostDec, "postdec")
-    ENUM_XML(UO_PreInc,  "preinc")
-    ENUM_XML(UO_PreDec,  "predec")
-    ENUM_XML(UO_AddrOf,  "addrof")
-    ENUM_XML(UO_Deref,   "deref")
-    ENUM_XML(UO_Plus,    "plus")
-    ENUM_XML(UO_Minus,   "minus")
-    ENUM_XML(UO_Not,     "not")             // bitwise not
-    ENUM_XML(UO_LNot,    "lnot")            // boolean not
-    ENUM_XML(UO_Real,    "__real")
-    ENUM_XML(UO_Imag,    "__imag")
-    ENUM_XML(UO_Extension, "__extension__")
-  END_ENUM_XML
-  SUB_NODE_XML(Expr)                                    // expr
-END_NODE_XML
-
-NODE_XML(BinaryOperator, "BinaryOperator")              // (expr1) op (expr2)
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_ENUM_XML(getOpcode(), "kind")
-    ENUM_XML(BO_PtrMemD  , "ptrmemd")
-    ENUM_XML(BO_PtrMemI  , "ptrmemi")
-    ENUM_XML(BO_Mul      , "mul")
-    ENUM_XML(BO_Div      , "div")
-    ENUM_XML(BO_Rem      , "rem")
-    ENUM_XML(BO_Add      , "add")
-    ENUM_XML(BO_Sub      , "sub")
-    ENUM_XML(BO_Shl      , "shl")
-    ENUM_XML(BO_Shr      , "shr")
-    ENUM_XML(BO_LT       , "lt")
-    ENUM_XML(BO_GT       , "gt")
-    ENUM_XML(BO_LE       , "le")
-    ENUM_XML(BO_GE       , "ge")
-    ENUM_XML(BO_EQ       , "eq")
-    ENUM_XML(BO_NE       , "ne")
-    ENUM_XML(BO_And      , "and")          // bitwise and
-    ENUM_XML(BO_Xor      , "xor")
-    ENUM_XML(BO_Or       , "or")           // bitwise or
-    ENUM_XML(BO_LAnd     , "land")         // boolean and
-    ENUM_XML(BO_LOr      , "lor")          // boolean or
-    ENUM_XML(BO_Assign   , "assign")
-    ENUM_XML(BO_MulAssign, "mulassign")
-    ENUM_XML(BO_DivAssign, "divassign")
-    ENUM_XML(BO_RemAssign, "remassign")
-    ENUM_XML(BO_AddAssign, "addassign")
-    ENUM_XML(BO_SubAssign, "subassign")
-    ENUM_XML(BO_ShlAssign, "shlassign")
-    ENUM_XML(BO_ShrAssign, "shrassign")
-    ENUM_XML(BO_AndAssign, "andassign")
-    ENUM_XML(BO_XorAssign, "xorassign")
-    ENUM_XML(BO_OrAssign , "orassign")
-    ENUM_XML(BO_Comma    , "comma")
-  END_ENUM_XML
-  SUB_NODE_XML(Expr)                                    // expr1
-  SUB_NODE_XML(Expr)                                    // expr2
-END_NODE_XML
-
-// FIXME: is there a special class needed or is BinaryOperator sufficient?
-//NODE_XML(CompoundAssignOperator, "CompoundAssignOperator")
-
-NODE_XML(ConditionalOperator, "ConditionalOperator")    // expr1 ? expr2 : expr3
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  SUB_NODE_XML(Expr)                                    // expr1
-  SUB_NODE_XML(Expr)                                    // expr2
-  SUB_NODE_XML(Expr)                                    // expr3
-END_NODE_XML
-
-NODE_XML(OffsetOfExpr, "OffsetOfExpr")                  // offsetof(basetype, components)
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getTypeSourceInfo()->getType())
-  ATTRIBUTE_XML(getNumComponents(), "num_components")
-  SUB_NODE_SEQUENCE_XML(OffsetOfExpr::OffsetOfNode)
-END_NODE_XML
-
-NODE_XML(SizeOfAlignOfExpr, "SizeOfAlignOfExpr")        // sizeof(expr) or alignof(expr)
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_XML(isSizeOf(), "is_sizeof")
-  ATTRIBUTE_XML(isArgumentType(), "is_type")            // "1" if expr denotes a type
-  ATTRIBUTE_SPECIAL_XML(getArgumentType(), "type_ref")  // optional, denotes the type of expr, if is_type=="1", special handling needed since getArgumentType() could assert
-  SUB_NODE_OPT_XML(Expr)                                // expr, if is_type=="0"
-END_NODE_XML
-
-NODE_XML(ArraySubscriptExpr, "ArraySubscriptExpr")      // expr1[expr2]
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  SUB_NODE_XML(Expr)                                    // expr1
-  SUB_NODE_XML(Expr)                                    // expr2
-END_NODE_XML
-
-NODE_XML(CallExpr, "CallExpr")                          // fnexpr(arg1, arg2, ...)
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_XML(getNumArgs(), "num_args")               // unsigned
-  SUB_NODE_XML(Expr)                                    // fnexpr
-  SUB_NODE_SEQUENCE_XML(Expr)                           // arg1..argN
-END_NODE_XML
-
-NODE_XML(MemberExpr, "MemberExpr")                      // expr->F or expr.F
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_XML(isArrow(), "is_deref")
-  ATTRIBUTE_XML(getMemberDecl(), "ref")                 // refers to F
-  ATTRIBUTE_XML(getMemberDecl()->getNameAsString(), "name") // informal
-  SUB_NODE_XML(Expr)                                    // expr
-END_NODE_XML
-
-NODE_XML(CStyleCastExpr, "CStyleCastExpr")              // (type)expr
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_XML(getTypeAsWritten(), "type_ref")         // denotes the type as written in the source code
-  SUB_NODE_XML(Expr)                                    // expr
-END_NODE_XML
-
-NODE_XML(ImplicitCastExpr, "ImplicitCastExpr")
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  SUB_NODE_XML(Expr)
-END_NODE_XML
-
-NODE_XML(CompoundLiteralExpr, "CompoundLiteralExpr")    // [C99 6.5.2.5]
-  SUB_NODE_XML(Expr)                                    // init
-END_NODE_XML
-
-NODE_XML(ExtVectorElementExpr, "ExtVectorElementExpr")
-  SUB_NODE_XML(Expr)                                    // base
-END_NODE_XML
-
-NODE_XML(InitListExpr, "InitListExpr")                  // struct foo x = { expr1, { expr2, expr3 } };
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_OPT_XML(getInitializedFieldInUnion(), "field_ref")  // if a union is initialized, this refers to the initialized union field id
-  ATTRIBUTE_XML(getNumInits(), "num_inits")             // unsigned
-  SUB_NODE_SEQUENCE_XML(Expr)                           // expr1..exprN
-END_NODE_XML
-
-NODE_XML(DesignatedInitExpr, "DesignatedInitExpr")
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-END_NODE_XML
-
-NODE_XML(ImplicitValueInitExpr, "ImplicitValueInitExpr")  //  Implicit value initializations occur within InitListExpr
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-END_NODE_XML
-
-NODE_XML(VAArgExpr, "VAArgExpr")                        // used for the builtin function __builtin_va_start(expr)
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  SUB_NODE_XML(Expr)                                    // expr
-END_NODE_XML
-
-NODE_XML(ParenExpr, "ParenExpr")                        // this represents a parethesized expression "(expr)". Only formed if full location information is requested.
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  SUB_NODE_XML(Expr)                                    // expr
-END_NODE_XML
-
-// GNU Extensions
-NODE_XML(AddrLabelExpr, "AddrLabelExpr")                // the GNU address of label extension, representing &&label.
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_XML(getLabel(), "ref")                      // id string
-  SUB_NODE_XML(LabelStmt)                               // expr
-END_NODE_XML
-
-NODE_XML(StmtExpr, "StmtExpr")                          // StmtExpr contains a single CompoundStmt node, which it evaluates and takes the value of the last subexpression.
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  SUB_NODE_XML(CompoundStmt)
-END_NODE_XML
-
-NODE_XML(ChooseExpr, "ChooseExpr")                      // GNU builtin-in function __builtin_choose_expr(expr1, expr2, expr3)
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  SUB_NODE_XML(Expr)                                    // expr1
-  SUB_NODE_XML(Expr)                                    // expr2
-  SUB_NODE_XML(Expr)                                    // expr3
-END_NODE_XML
-
-NODE_XML(GNUNullExpr, "GNUNullExpr")                    // GNU __null extension
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-END_NODE_XML
-
-// C++ Expressions
-NODE_XML(CXXOperatorCallExpr, "CXXOperatorCallExpr")    // fnexpr(arg1, arg2, ...)
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_XML(getNumArgs(), "num_args")               // unsigned
-  SUB_NODE_XML(Expr)                                    // fnexpr
-  SUB_NODE_SEQUENCE_XML(Expr)                           // arg1..argN
-END_NODE_XML
-
-NODE_XML(CXXConstructExpr, "CXXConstructExpr")         // ctor(arg1, arg2, ...)
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_XML(getNumArgs(), "num_args")               // unsigned
-  SUB_NODE_XML(Expr)                                    // fnexpr
-  SUB_NODE_SEQUENCE_XML(Expr)                           // arg1..argN
-END_NODE_XML
-
-NODE_XML(CXXNamedCastExpr, "CXXNamedCastExpr")          // xxx_cast<type>(expr)
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_ENUM_XML(getStmtClass(), "kind")
-         ENUM_XML(Stmt::CXXStaticCastExprClass, "static_cast")
-         ENUM_XML(Stmt::CXXDynamicCastExprClass, "dynamic_cast")
-         ENUM_XML(Stmt::CXXReinterpretCastExprClass, "reinterpret_cast")
-         ENUM_XML(Stmt::CXXConstCastExprClass, "const_cast")
-  END_ENUM_XML
-  ATTRIBUTE_XML(getTypeAsWritten(), "type_ref")         // denotes the type as written in the source code
-  SUB_NODE_XML(Expr)                                    // expr
-END_NODE_XML
-
-NODE_XML(CXXMemberCallExpr, "CXXMemberCallExpr")        // fnexpr(arg1, arg2, ...)
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_XML(getNumArgs(), "num_args")               // unsigned
-  SUB_NODE_XML(Expr)                                    // fnexpr
-  SUB_NODE_SEQUENCE_XML(Expr)                           // arg1..argN
-END_NODE_XML
-
-NODE_XML(CXXBoolLiteralExpr, "CXXBoolLiteralExpr")
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_XML(getValue(), "value")                    // boolean
-END_NODE_XML
-
-NODE_XML(CXXNullPtrLiteralExpr, "CXXNullPtrLiteralExpr")  // [C++0x 2.14.7] C++ Pointer Literal
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-END_NODE_XML
-
-NODE_XML(CXXTypeidExpr, "CXXTypeidExpr")                // typeid(expr)
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_XML(isTypeOperand(), "is_type")             // "1" if expr denotes a type
-  ATTRIBUTE_SPECIAL_XML(getTypeOperand(), "type_ref")   // optional, denotes the type of expr, if is_type=="1", special handling needed since getTypeOperand() could assert
-  SUB_NODE_OPT_XML(Expr)                                // expr, if is_type=="0"
-END_NODE_XML
-
-NODE_XML(CXXThisExpr, "CXXThisExpr")                    // this
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-END_NODE_XML
-
-NODE_XML(CXXThrowExpr, "CXXThrowExpr")                  // throw (expr);
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  SUB_NODE_XML(Expr)                                    // NULL in case of "throw;"
-END_NODE_XML
-
-NODE_XML(CXXDefaultArgExpr, "CXXDefaultArgExpr")
-  ATTRIBUTE_FILE_LOCATION_XML
-  TYPE_ATTRIBUTE_XML(getType())
-  ATTRIBUTE_XML(getParam(), "ref")                      // id of the parameter declaration (the expression is a subnode of the declaration)
-END_NODE_XML
-
-//===----------------------------------------------------------------------===//
-#undef NODE_XML
-#undef ID_ATTRIBUTE_XML
-#undef TYPE_ATTRIBUTE_XML
-#undef ATTRIBUTE_XML
-#undef ATTRIBUTE_SPECIAL_XML
-#undef ATTRIBUTE_OPT_XML
-#undef ATTRIBUTE_ENUM_XML
-#undef ATTRIBUTE_ENUM_OPT_XML
-#undef ATTRIBUTE_FILE_LOCATION_XML
-#undef ENUM_XML
-#undef END_ENUM_XML
-#undef END_NODE_XML
-#undef SUB_NODE_XML
-#undef SUB_NODE_SEQUENCE_XML
-#undef SUB_NODE_OPT_XML
diff --git a/include/clang/Frontend/TypeXML.def b/include/clang/Frontend/TypeXML.def
deleted file mode 100644 (file)
index b78e70f..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-//===-- TypeXML.def - Metadata about Type XML nodes ------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-//  This file defines the XML type info database as written in the   
-//  <ReferenceSection>/<Types> sub-nodes of the XML document. Type nodes 
-//  are referred by "type" reference attributes throughout the document.
-//  A type node never contains sub-nodes. 
-//  The semantics of the attributes and enums are mostly self-documenting
-//  by looking at the appropriate internally used functions and values.
-//  The following macros are used:
-//
-//  NODE_XML( CLASS, NAME ) - A node of name NAME denotes a concrete 
-//  type of class CLASS where CLASS is a class name used internally by clang. 
-//  After a NODE_XML the definition of all (optional) attributes of that type 
-//  node follows.
-//
-//  END_NODE_XML - Closes the attribute definition of the current node.
-//
-//  ID_ATTRIBUTE_XML - Each type node has an "id" attribute containing a 
-//  string, which value uniquely identify the type. Other nodes may refer 
-//  by "type" reference attributes to this value.
-//
-//  TYPE_ATTRIBUTE_XML( FN ) - Type nodes may refer to the ids of other type 
-//  nodes by a "type" attribute. FN is internally used by clang.
-// 
-//  CONTEXT_ATTRIBUTE_XML( FN ) - Type nodes may refer to the ids of their 
-//  declaration contexts by a "context" attribute. FN is internally used by 
-//  clang.
-//
-//  ATTRIBUTE_XML( FN, NAME ) - An attribute named NAME. FN is internally 
-//  used by clang. A boolean attribute have the values "0" or "1".
-//
-//  ATTRIBUTE_OPT_XML( FN, NAME ) - An optional attribute named NAME. 
-//  Optional attributes are omitted for boolean types, if the value is false, 
-//  for integral types, if the value is null and for strings, 
-//  if the value is the empty string. FN is internally used by clang.
-//
-//  ATTRIBUTE_ENUM[_OPT]_XML( FN, NAME ) - An attribute named NAME. The value
-//  is an enumeration defined with ENUM_XML macros immediately following after 
-//  that macro. An optional attribute is ommited, if the particular enum is the 
-//  empty string. FN is internally used by clang.
-//  
-//  ENUM_XML( VALUE, NAME ) - An enumeration element named NAME. VALUE is 
-//  internally used by clang.
-//
-//  END_ENUM_XML - Closes the enumeration definition of the current attribute.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef TYPE_ATTRIBUTE_XML
-#  define TYPE_ATTRIBUTE_XML( FN )     ATTRIBUTE_XML(FN, "type")
-#endif
-
-#ifndef CONTEXT_ATTRIBUTE_XML
-#  define CONTEXT_ATTRIBUTE_XML( FN )  ATTRIBUTE_XML(FN, "context")
-#endif
-
-NODE_XML(Type, "FIXME_Type")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_XML(getTypeClassName(), "unhandled_type_name")
-END_NODE_XML
-
-NODE_XML(QualType, "CvQualifiedType")
-  ID_ATTRIBUTE_XML
-  TYPE_ATTRIBUTE_XML(getTypePtr())                      // the qualified type, e.g. for 'T* const' it's 'T*'
-  ATTRIBUTE_OPT_XML(isLocalConstQualified(), "const")        // boolean
-  ATTRIBUTE_OPT_XML(isLocalVolatileQualified(), "volatile")  // boolean
-  ATTRIBUTE_OPT_XML(isLocalRestrictQualified(), "restrict")  // boolean
-  ATTRIBUTE_OPT_XML(getObjCGCAttr(), "objc_gc")         // Qualifiers::GC
-  ATTRIBUTE_OPT_XML(getAddressSpace(), "address_space") // unsigned
-END_NODE_XML
-
-NODE_XML(BuiltinType, "FundamentalType")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_ENUM_XML(getKind(), "kind")
-         ENUM_XML(BuiltinType::Void, "void")
-         ENUM_XML(BuiltinType::Bool, "bool")
-         ENUM_XML(BuiltinType::Char_U, "char")               // not explicitely qualified char, depends on target platform
-         ENUM_XML(BuiltinType::Char_S, "char")               // not explicitely qualified char, depends on target platform
-         ENUM_XML(BuiltinType::SChar, "signed char")
-         ENUM_XML(BuiltinType::Short, "short");
-         ENUM_XML(BuiltinType::Int, "int");
-         ENUM_XML(BuiltinType::Long, "long");
-         ENUM_XML(BuiltinType::LongLong, "long long");
-         ENUM_XML(BuiltinType::Int128, "__int128_t");
-         ENUM_XML(BuiltinType::UChar, "unsigned char");
-         ENUM_XML(BuiltinType::UShort, "unsigned short");
-         ENUM_XML(BuiltinType::UInt, "unsigned int");
-         ENUM_XML(BuiltinType::ULong, "unsigned long");
-         ENUM_XML(BuiltinType::ULongLong, "unsigned long long");
-         ENUM_XML(BuiltinType::UInt128, "__uint128_t");
-         ENUM_XML(BuiltinType::Float, "float");
-         ENUM_XML(BuiltinType::Double, "double");
-         ENUM_XML(BuiltinType::LongDouble, "long double");
-         ENUM_XML(BuiltinType::WChar_U, "wchar_t");
-         ENUM_XML(BuiltinType::WChar_S, "wchar_t");
-         ENUM_XML(BuiltinType::Char16, "char16_t");
-         ENUM_XML(BuiltinType::Char32, "char32_t");
-         ENUM_XML(BuiltinType::NullPtr, "nullptr_t");        // This is the type of C++0x 'nullptr'.
-         ENUM_XML(BuiltinType::Overload, "overloaded");
-         ENUM_XML(BuiltinType::Dependent, "dependent");
-  END_ENUM_XML
-END_NODE_XML
-
-NODE_XML(PointerType, "PointerType")    
-  ID_ATTRIBUTE_XML
-  TYPE_ATTRIBUTE_XML(getPointeeType())
-END_NODE_XML
-
-NODE_XML(LValueReferenceType, "ReferenceType")
-  ID_ATTRIBUTE_XML
-  TYPE_ATTRIBUTE_XML(getPointeeType())
-END_NODE_XML
-
-NODE_XML(RValueReferenceType, "ReferenceType")
-  ID_ATTRIBUTE_XML
-  TYPE_ATTRIBUTE_XML(getPointeeType())
-END_NODE_XML
-
-NODE_XML(FunctionNoProtoType, "FunctionNoProtoType")
-  ID_ATTRIBUTE_XML
-END_NODE_XML
-
-NODE_XML(FunctionProtoType, "FunctionType")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_XML(getResultType(), "result_type")
-  ATTRIBUTE_OPT_XML(isVariadic(), "variadic")
-  ATTRIBUTE_ENUM_XML(getCallConv(), "call_conv")
-         ENUM_XML(CC_Default, "")
-         ENUM_XML(CC_C, "C")
-         ENUM_XML(CC_X86StdCall, "X86StdCall")
-         ENUM_XML(CC_X86FastCall, "X86FastCall")
-         ENUM_XML(CC_X86ThisCall, "X86ThisCall")
-  END_ENUM_XML
-END_NODE_XML
-
-NODE_XML(TypedefType, "Typedef")
-  ID_ATTRIBUTE_XML
-  TYPE_ATTRIBUTE_XML(getDecl()->getUnderlyingType())
-  ATTRIBUTE_XML(getDecl()->getNameAsString(), "name")     // string
-  CONTEXT_ATTRIBUTE_XML(getDecl()->getDeclContext())
-END_NODE_XML
-
-NODE_XML(ComplexType, "ComplexType")                      // C99 complex types (_Complex float etc)
-  ID_ATTRIBUTE_XML
-  TYPE_ATTRIBUTE_XML(getElementType())
-END_NODE_XML
-
-NODE_XML(BlockPointerType, "BlockPointerType")
-  ID_ATTRIBUTE_XML
-  TYPE_ATTRIBUTE_XML(getPointeeType())                    // alway refers to a function type
-END_NODE_XML
-
-NODE_XML(MemberPointerType, "MemberPointerType")
-  ID_ATTRIBUTE_XML
-  TYPE_ATTRIBUTE_XML(getPointeeType())
-  ATTRIBUTE_XML(getClass(), "class_type")                 // refers to the class type id of which the pointee is a member
-END_NODE_XML
-
-NODE_XML(ConstantArrayType, "ArrayType")
-  ID_ATTRIBUTE_XML
-  TYPE_ATTRIBUTE_XML(getElementType())
-  ATTRIBUTE_XML(getSize(), "size")                        // unsigned                    
-  ATTRIBUTE_ENUM_OPT_XML(getSizeModifier(), "size_modifier")
-         ENUM_XML(ArrayType::Normal, "")
-         ENUM_XML(ArrayType::Static, "static")
-         ENUM_XML(ArrayType::Star, "star")
-  END_ENUM_XML
-  ATTRIBUTE_OPT_XML(getIndexTypeCVRQualifiers(), "index_type_qualifier")   // unsigned
-END_NODE_XML
-
-NODE_XML(IncompleteArrayType, "IncompleteArrayType")
-  ID_ATTRIBUTE_XML
-  TYPE_ATTRIBUTE_XML(getElementType())
-END_NODE_XML
-
-NODE_XML(VariableArrayType, "VariableArrayType")
-  ID_ATTRIBUTE_XML
-  TYPE_ATTRIBUTE_XML(getElementType())
-  // note: the size expression is print at the point of declaration
-END_NODE_XML
-
-NODE_XML(DependentSizedArrayType, "DependentSizedArrayType")
-  ID_ATTRIBUTE_XML
-  TYPE_ATTRIBUTE_XML(getElementType())
-  // FIXME: how to deal with size expression?
-END_NODE_XML
-
-NODE_XML(VectorType, "VectorType")
-  ID_ATTRIBUTE_XML
-  TYPE_ATTRIBUTE_XML(getElementType())
-  ATTRIBUTE_XML(getNumElements(), "size")               // unsigned
-END_NODE_XML
-
-NODE_XML(ExtVectorType, "ExtVectorType")
-  ID_ATTRIBUTE_XML
-  TYPE_ATTRIBUTE_XML(getElementType())
-  ATTRIBUTE_XML(getNumElements(), "size")               // unsigned
-END_NODE_XML
-
-NODE_XML(TypeOfExprType, "TypeOfExprType")
-  ID_ATTRIBUTE_XML
-  // note: the typeof expression is print at the point of use
-END_NODE_XML
-
-NODE_XML(TypeOfType, "TypeOfType")
-  ID_ATTRIBUTE_XML
-  TYPE_ATTRIBUTE_XML(getUnderlyingType())
-END_NODE_XML
-
-
-NODE_XML(RecordType, "Record")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_XML(getDecl()->getNameAsString(), "name")   // string
-  ATTRIBUTE_ENUM_XML(getDecl()->getTagKind(), "kind")
-    ENUM_XML(TTK_Struct, "struct")
-    ENUM_XML(TTK_Union, "union")
-    ENUM_XML(TTK_Class, "class")
-  END_ENUM_XML
-  CONTEXT_ATTRIBUTE_XML(getDecl()->getDeclContext())
-END_NODE_XML
-
-NODE_XML(EnumType, "Enum")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_XML(getDecl()->getNameAsString(), "name")   // string
-  CONTEXT_ATTRIBUTE_XML(getDecl()->getDeclContext())
-END_NODE_XML
-
-NODE_XML(TemplateTypeParmType, "TemplateTypeParmType")
-  ID_ATTRIBUTE_XML
-END_NODE_XML
-
-NODE_XML(TemplateSpecializationType, "TemplateSpecializationType")
-  ID_ATTRIBUTE_XML
-END_NODE_XML
-
-NODE_XML(ElaboratedType, "ElaboratedType")
-  ID_ATTRIBUTE_XML
-  ATTRIBUTE_ENUM_XML(getKeyword(), "keyword")
-    ENUM_XML(ETK_None, "none")
-    ENUM_XML(ETK_Typename, "typename")
-    ENUM_XML(ETK_Struct, "struct")
-    ENUM_XML(ETK_Union, "union")
-    ENUM_XML(ETK_Class, "class")
-    ENUM_XML(ETK_Enum, "enum")
-  END_ENUM_XML
-  TYPE_ATTRIBUTE_XML(getNamedType())
-END_NODE_XML
-
-NODE_XML(InjectedClassNameType, "InjectedClassNameType")
-  ID_ATTRIBUTE_XML
-END_NODE_XML
-
-NODE_XML(DependentNameType, "DependentNameType")
-  ID_ATTRIBUTE_XML
-END_NODE_XML
-
-NODE_XML(DependentTemplateSpecializationType,
-         "DependentTemplateSpecializationType")
-  ID_ATTRIBUTE_XML
-END_NODE_XML
-
-NODE_XML(ObjCInterfaceType, "ObjCInterfaceType")
-  ID_ATTRIBUTE_XML
-END_NODE_XML
-
-NODE_XML(ObjCObjectPointerType, "ObjCObjectPointerType")
-  ID_ATTRIBUTE_XML
-END_NODE_XML
-
-NODE_XML(SubstTemplateTypeParmType, "SubstTemplateTypeParm")
-  ID_ATTRIBUTE_XML
-END_NODE_XML
-
-NODE_XML(DependentSizedExtVectorType, "DependentSizedExtVector")
-  ID_ATTRIBUTE_XML
-END_NODE_XML
-
-NODE_XML(UnresolvedUsingType, "UnresolvedUsing")
-  ID_ATTRIBUTE_XML
-END_NODE_XML
-
-NODE_XML(DecltypeType, "Decltype")
-  ID_ATTRIBUTE_XML
-END_NODE_XML
-
-//===----------------------------------------------------------------------===//
-#undef NODE_XML
-#undef ID_ATTRIBUTE_XML                
-#undef TYPE_ATTRIBUTE_XML
-#undef CONTEXT_ATTRIBUTE_XML
-#undef ATTRIBUTE_XML
-#undef ATTRIBUTE_OPT_XML
-#undef ATTRIBUTE_ENUM_XML
-#undef ATTRIBUTE_ENUM_OPT_XML
-#undef ENUM_XML
-#undef END_ENUM_XML                    
-#undef END_NODE_XML                    
index 92fb1e8cbeb0d2ee397a5155046db8e8a2ee3e46..f198d955e864aeea760b3ae986cfcc644a22ef65 100644 (file)
@@ -12,7 +12,6 @@
 //===----------------------------------------------------------------------===//
 
 #include "clang/Frontend/ASTConsumers.h"
-#include "clang/Frontend/DocumentXML.h"
 #include "clang/Basic/Diagnostic.h"
 #include "clang/Basic/SourceManager.h"
 #include "clang/Basic/FileManager.h"
@@ -51,39 +50,6 @@ ASTConsumer *clang::CreateASTPrinter(llvm::raw_ostream* out) {
   return new ASTPrinter(out);
 }
 
-//===----------------------------------------------------------------------===//
-/// ASTPrinterXML - XML-printer of ASTs
-
-namespace {
-  class ASTPrinterXML : public ASTConsumer {
-    DocumentXML         Doc;
-
-  public:
-    ASTPrinterXML(llvm::raw_ostream& o) : Doc("CLANG_XML", o) {}
-
-    void Initialize(ASTContext &Context) {
-      Doc.initialize(Context);
-    }
-
-    virtual void HandleTranslationUnit(ASTContext &Ctx) {
-      Doc.addSubNode("TranslationUnit");
-      for (DeclContext::decl_iterator
-             D = Ctx.getTranslationUnitDecl()->decls_begin(),
-             DEnd = Ctx.getTranslationUnitDecl()->decls_end();
-           D != DEnd;
-           ++D)
-        Doc.PrintDecl(*D);
-      Doc.toParent();
-      Doc.finalize();
-    }
-  };
-} // end anonymous namespace
-
-
-ASTConsumer *clang::CreateASTPrinterXML(llvm::raw_ostream* out) {
-  return new ASTPrinterXML(out ? *out : llvm::outs());
-}
-
 ASTConsumer *clang::CreateASTDumper() {
   return new ASTPrinter(0, true);
 }
index 9f197b4f8762babb39b841f62ab34bf8f1998ed2..91c3a68dea86dfbc81fb2f6c538edbe7b4a72646 100644 (file)
@@ -16,10 +16,8 @@ add_clang_library(clangFrontend
   CacheTokens.cpp
   CompilerInstance.cpp
   CompilerInvocation.cpp
-  DeclXML.cpp
   DependencyFile.cpp
   DiagChecker.cpp
-  DocumentXML.cpp
   FrontendAction.cpp
   FrontendActions.cpp
   FrontendOptions.cpp
@@ -29,10 +27,8 @@ add_clang_library(clangFrontend
   LangStandards.cpp
   MultiplexConsumer.cpp
   PrintPreprocessedOutput.cpp
-  StmtXML.cpp
   TextDiagnosticBuffer.cpp
   TextDiagnosticPrinter.cpp
-  TypeXML.cpp
   VerifyDiagnosticsClient.cpp
   Warnings.cpp
   )
index bf4d6cd86ad25a75b7c2f7bc1442b54509381b61..8f9940392352c29c11da1934ee83ff527d397bdd 100644 (file)
@@ -322,7 +322,6 @@ static const char *getActionName(frontend::ActionKind Kind) {
   case frontend::ASTDump:                return "-ast-dump";
   case frontend::ASTDumpXML:             return "-ast-dump-xml";
   case frontend::ASTPrint:               return "-ast-print";
-  case frontend::ASTPrintXML:            return "-ast-print-xml";
   case frontend::ASTView:                return "-ast-view";
   case frontend::BoostCon:               return "-boostcon";
   case frontend::CreateModule:           return "-create-module";
@@ -1039,8 +1038,6 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
       Opts.ProgramAction = frontend::ASTDumpXML; break;
     case OPT_ast_print:
       Opts.ProgramAction = frontend::ASTPrint; break;
-    case OPT_ast_print_xml:
-      Opts.ProgramAction = frontend::ASTPrintXML; break;
     case OPT_ast_view:
       Opts.ProgramAction = frontend::ASTView; break;
     case OPT_boostcon:
diff --git a/lib/Frontend/DeclXML.cpp b/lib/Frontend/DeclXML.cpp
deleted file mode 100644 (file)
index 8d3d225..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-//===--- DeclXML.cpp - XML implementation for Decl ASTs -------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the XML document class, which provides the means to
-// dump out the AST in a XML form that exposes type details and other fields.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Frontend/DocumentXML.h"
-#include "clang/AST/DeclVisitor.h"
-#include "clang/AST/Expr.h"
-
-namespace clang {
-
-//---------------------------------------------------------
-class DocumentXML::DeclPrinter : public DeclVisitor<DocumentXML::DeclPrinter> {
-  DocumentXML& Doc;
-
-  void addSubNodes(FunctionDecl* FD) {
-    for (unsigned i = 0, e = FD->getNumParams(); i != e; ++i) {
-      Visit(FD->getParamDecl(i));
-      Doc.toParent();
-    }
-  }
-
-  void addFunctionBody(FunctionDecl* FD) {
-    if (FD->isThisDeclarationADefinition()) {
-      Doc.addSubNode("Body");
-      Doc.PrintStmt(FD->getBody());
-      Doc.toParent();
-    }
-  }
-
-  void addSubNodes(RecordDecl* RD) {
-    for (RecordDecl::decl_iterator i = RD->decls_begin(),
-                                   e = RD->decls_end(); i != e; ++i) {
-      if (!(*i)->isImplicit()) {
-        Visit(*i);
-        Doc.toParent();
-      }
-    }
-  }
-
-  void addSubNodes(CXXRecordDecl* RD) {
-    addSubNodes(cast<RecordDecl>(RD));
-
-    if (RD->isDefinition()) {
-      // FIXME: This breaks XML generation
-      //Doc.addAttribute("num_bases", RD->getNumBases());
-
-      for (CXXRecordDecl::base_class_iterator 
-             base = RD->bases_begin(),
-             bend = RD->bases_end();
-           base != bend;
-           ++base) {
-        Doc.addSubNode("Base");
-        Doc.addAttribute("id", base->getType());
-        AccessSpecifier as = base->getAccessSpecifierAsWritten();
-        const char* as_name = "";
-        switch(as) {
-        case AS_none:      as_name = ""; break;
-        case AS_public:    as_name = "public"; break;
-        case AS_protected: as_name = "protected"; break;
-        case AS_private:   as_name = "private"; break;
-        }
-        Doc.addAttributeOptional("access", as_name);
-        Doc.addAttribute("is_virtual", base->isVirtual());
-        Doc.toParent();
-      }
-    }
-  }
-
-  void addSubNodes(EnumDecl* ED) {
-    for (EnumDecl::enumerator_iterator i = ED->enumerator_begin(),
-                                       e = ED->enumerator_end(); i != e; ++i) {
-      Visit(*i);
-      Doc.toParent();
-    }
-  }
-
-  void addSubNodes(EnumConstantDecl* ECD) {
-    if (ECD->getInitExpr())
-      Doc.PrintStmt(ECD->getInitExpr());
-  }
-
-  void addSubNodes(FieldDecl* FdD)  {
-    if (FdD->isBitField())
-      Doc.PrintStmt(FdD->getBitWidth());
-  }
-
-  void addSubNodes(VarDecl* V) {
-    if (V->getInit())
-      Doc.PrintStmt(V->getInit());
-  }
-
-  void addSubNodes(ParmVarDecl* argDecl) {
-    if (argDecl->getDefaultArg())
-      Doc.PrintStmt(argDecl->getDefaultArg());
-  }
-
-  void addSubNodes(DeclContext* ns) {
-
-    for (DeclContext::decl_iterator 
-           d    = ns->decls_begin(), 
-           dend = ns->decls_end();
-         d != dend;
-         ++d) {
-      Visit(*d);
-      Doc.toParent();
-    }
-  }
-
-  void addSpecialAttribute(const char* pName, EnumDecl* ED) {
-    const QualType& enumType = ED->getIntegerType();
-    if (!enumType.isNull())
-      Doc.addAttribute(pName, enumType);
-  }
-
-  void addIdAttribute(LinkageSpecDecl* ED) {
-    Doc.addAttribute("id", ED);
-  }
-
-  void addIdAttribute(NamedDecl* ND) {
-    Doc.addAttribute("id", ND);
-  }
-
-public:
-  DeclPrinter(DocumentXML& doc) : Doc(doc) {}
-
-#define NODE_XML( CLASS, NAME )          \
-  void Visit##CLASS(CLASS* T)            \
-  {                                      \
-    Doc.addSubNode(NAME);
-
-#define ID_ATTRIBUTE_XML                  addIdAttribute(T);
-#define ATTRIBUTE_XML( FN, NAME )         Doc.addAttribute(NAME, T->FN);
-#define ATTRIBUTE_OPT_XML( FN, NAME )     Doc.addAttributeOptional(NAME, T->FN);
-#define ATTRIBUTE_FILE_LOCATION_XML       Doc.addLocation(T->getLocation());
-#define ATTRIBUTE_SPECIAL_XML( FN, NAME ) addSpecialAttribute(NAME, T);
-
-#define ATTRIBUTE_ENUM_XML( FN, NAME )  \
-  {                                     \
-    const char* pAttributeName = NAME;  \
-    const bool optional = false;             \
-    switch (T->FN) {                    \
-    default: assert(0 && "unknown enum value");
-
-#define ATTRIBUTE_ENUM_OPT_XML( FN, NAME )  \
-  {                                     \
-    const char* pAttributeName = NAME;  \
-    const bool optional = true;              \
-    switch (T->FN) {                    \
-    default: assert(0 && "unknown enum value");
-
-#define ENUM_XML( VALUE, NAME )         case VALUE: if ((!optional) || NAME[0]) Doc.addAttribute(pAttributeName, NAME); break;
-#define END_ENUM_XML                    } }
-#define END_NODE_XML                    }
-
-#define SUB_NODE_XML( CLASS )           addSubNodes(T);
-#define SUB_NODE_SEQUENCE_XML( CLASS )  addSubNodes(T);
-#define SUB_NODE_OPT_XML( CLASS )       addSubNodes(T);
-
-#define SUB_NODE_FN_BODY_XML            addFunctionBody(T);
-
-#include "clang/Frontend/DeclXML.def"
-};
-
-
-//---------------------------------------------------------
-void DocumentXML::writeDeclToXML(Decl *D) {
-  DeclPrinter(*this).Visit(D);
-  toParent();
-}
-
-//---------------------------------------------------------
-} // NS clang
-
diff --git a/lib/Frontend/DocumentXML.cpp b/lib/Frontend/DocumentXML.cpp
deleted file mode 100644 (file)
index a09db0b..0000000
+++ /dev/null
@@ -1,381 +0,0 @@
-//===--- DocumentXML.cpp - XML document for ASTs --------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the XML document class, which provides the means to
-// dump out the AST in a XML form that exposes type details and other fields.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Frontend/DocumentXML.h"
-#include "clang/AST/Decl.h"
-#include "clang/AST/DeclCXX.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/Basic/SourceManager.h"
-#include "llvm/ADT/StringExtras.h"
-#include "llvm/Config/config.h"
-#include <cstdio>
-
-namespace clang {
-
-//---------------------------------------------------------
-DocumentXML::DocumentXML(const std::string& rootName, llvm::raw_ostream& out) :
-  Out(out),
-  Ctx(0),
-  HasCurrentNodeSubNodes(false) {
-  NodeStack.push(rootName);
-  Out << "<?xml version=\"1.0\"?>\n<" << rootName;
-}
-
-//---------------------------------------------------------
-DocumentXML& DocumentXML::addSubNode(const std::string& name) {
-  if (!HasCurrentNodeSubNodes)
-    Out << ">\n";
-  NodeStack.push(name);
-  HasCurrentNodeSubNodes = false;
-  Indent();
-  Out << "<" << NodeStack.top();
-  return *this;
-}
-
-//---------------------------------------------------------
-void DocumentXML::Indent() {
-  for (size_t i = 0, e = (NodeStack.size() - 1) * 2; i < e; ++i)
-    Out << ' ';
-}
-
-//---------------------------------------------------------
-DocumentXML& DocumentXML::toParent() {
-  assert(NodeStack.size() > 1 && "too much backtracking");
-
-  if (HasCurrentNodeSubNodes) {
-    Indent();
-    Out << "</" << NodeStack.top() << ">\n";
-  } else
-    Out << "/>\n";
-  NodeStack.pop();
-  HasCurrentNodeSubNodes = true;
-  return *this;
-}
-
-//---------------------------------------------------------
-namespace {
-
-enum tIdType { ID_NORMAL, ID_FILE, ID_LABEL, ID_LAST };
-
-unsigned getNewId(tIdType idType) {
-  static unsigned int idCounts[ID_LAST] = { 0 };
-  return ++idCounts[idType];
-}
-
-//---------------------------------------------------------
-inline std::string getPrefixedId(unsigned uId, tIdType idType) {
-  static const char idPrefix[ID_LAST] = { '_', 'f', 'l' };
-  char buffer[20];
-  char* BufPtr = llvm::utohex_buffer(uId, buffer + 20);
-  *--BufPtr = idPrefix[idType];
-  return BufPtr;
-}
-
-//---------------------------------------------------------
-template<class T, class V>
-bool addToMap(T& idMap, const V& value, tIdType idType = ID_NORMAL) {
-  typename T::iterator i = idMap.find(value);
-  bool toAdd = i == idMap.end();
-  if (toAdd)
-    idMap.insert(typename T::value_type(value, getNewId(idType)));
-  return toAdd;
-}
-
-} // anon NS
-
-
-//---------------------------------------------------------
-std::string DocumentXML::escapeString(const char* pStr,
-                                      std::string::size_type len) {
-  std::string value;
-  value.reserve(len + 1);
-  char buffer[16];
-  for (unsigned i = 0; i < len; ++i) {
-    switch (char C = pStr[i]) {
-    default:
-      if (isprint(C))
-        value += C;
-      else {
-#ifdef LLVM_ON_WIN32
-        sprintf(buffer, "\\%03o", C);
-#else
-        snprintf(buffer, sizeof(buffer), "\\%03o", C);
-#endif
-        value += buffer;
-      }
-      break;
-
-    case '\n': value += "\\n"; break;
-    case '\t': value += "\\t"; break;
-    case '\a': value += "\\a"; break;
-    case '\b': value += "\\b"; break;
-    case '\r': value += "\\r"; break;
-
-    case '&': value += "&amp;"; break;
-    case '<': value += "&lt;"; break;
-    case '>': value += "&gt;"; break;
-    case '"': value += "&quot;"; break;
-    case '\'':  value += "&apos;"; break;
-
-    }
-  }
-  return value;
-}
-
-//---------------------------------------------------------
-void DocumentXML::finalize() {
-  assert(NodeStack.size() == 1 && "not completely backtracked");
-
-  addSubNode("ReferenceSection");
-  addSubNode("Types");
-
-  for (XML::IdMap<QualType>::iterator i = Types.begin(), e = Types.end();
-       i != e; ++i) {
-    if (i->first.hasLocalQualifiers()) {
-      writeTypeToXML(i->first);
-      addAttribute("id", getPrefixedId(i->second, ID_NORMAL));
-      toParent();
-    }
-  }
-
-  for (XML::IdMap<const Type*>::iterator i = BasicTypes.begin(),
-         e = BasicTypes.end(); i != e; ++i) {
-    writeTypeToXML(i->first);
-    addAttribute("id", getPrefixedId(i->second, ID_NORMAL));
-    toParent();
-  }
-
-
-  toParent().addSubNode("Contexts");
-
-  for (XML::IdMap<const DeclContext*>::iterator i = Contexts.begin(),
-         e = Contexts.end(); i != e; ++i) {
-    addSubNode(i->first->getDeclKindName());
-    addAttribute("id", getPrefixedId(i->second, ID_NORMAL));
-    if (const NamedDecl *ND = dyn_cast<NamedDecl>(i->first))
-      addAttribute("name", ND->getNameAsString());
-    if (const TagDecl *TD = dyn_cast<TagDecl>(i->first))
-      addAttribute("type", getPrefixedId(BasicTypes[TD->getTypeForDecl()], ID_NORMAL));
-    else if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(i->first))
-      addAttribute("type", getPrefixedId(BasicTypes[FD->getType()->getAs<FunctionType>()], ID_NORMAL));
-
-    if (const DeclContext* parent = i->first->getParent())
-      addAttribute("context", parent);
-    toParent();
-  }
-
-  toParent().addSubNode("Files");
-
-  for (XML::IdMap<std::string>::iterator i = SourceFiles.begin(),
-         e = SourceFiles.end(); i != e; ++i) {
-    addSubNode("File");
-    addAttribute("id", getPrefixedId(i->second, ID_FILE));
-    addAttribute("name", escapeString(i->first.c_str(), i->first.size()));
-    toParent();
-  }
-
-  toParent().toParent();
-
-  // write the root closing node (which has always subnodes)
-  Out << "</" << NodeStack.top() << ">\n";
-}
-
-//---------------------------------------------------------
-void DocumentXML::addAttribute(const char* pAttributeName,
-                               const QualType& pType) {
-  addTypeRecursively(pType);
-  addAttribute(pAttributeName, getPrefixedId(Types[pType], ID_NORMAL));
-}
-
-//---------------------------------------------------------
-void DocumentXML::addPtrAttribute(const char* pAttributeName,
-                                  const Type* pType) {
-  addTypeRecursively(pType);
-  addAttribute(pAttributeName, getPrefixedId(BasicTypes[pType], ID_NORMAL));
-}
-
-//---------------------------------------------------------
-void DocumentXML::addPtrAttribute(const char* pAttributeName,
-                                  const NestedNameSpecifier* pNNS) {
-  switch (pNNS->getKind()) {
-  case NestedNameSpecifier::Identifier: {
-    IdentifierInfo *ii = pNNS->getAsIdentifier();
-    // FIXME how should we handle those ?
-    addPtrAttribute(pAttributeName, ii->getName().data());
-    break;
-  }
-  case NestedNameSpecifier::Namespace: {
-    addPtrAttribute(pAttributeName, pNNS->getAsNamespace());
-    break;
-  }
-  case NestedNameSpecifier::NamespaceAlias: {
-    addPtrAttribute(pAttributeName, pNNS->getAsNamespaceAlias());
-    break;
-  }
-  case NestedNameSpecifier::TypeSpec: {
-    addPtrAttribute(pAttributeName, pNNS->getAsType());
-    break;
-  }
-  case NestedNameSpecifier::TypeSpecWithTemplate: {
-    addPtrAttribute(pAttributeName, pNNS->getAsType());
-    break;
-  }
-  case NestedNameSpecifier::Global: {
-    addPtrAttribute(pAttributeName, "::");
-    break;
-  }
-  }
-}
-
-//---------------------------------------------------------
-void DocumentXML::addTypeRecursively(const QualType& pType)
-{
-  if (addToMap(Types, pType))
-  {
-    addTypeRecursively(pType.getTypePtr());
-    // beautifier: a non-qualified type shall be transparent
-    if (!pType.hasLocalQualifiers())
-    {
-      Types[pType] = BasicTypes[pType.getTypePtr()];
-    }
-  }
-}
-
-//---------------------------------------------------------
-void DocumentXML::addTypeRecursively(const Type* pType)
-{
-  if (addToMap(BasicTypes, pType))
-  {
-    addParentTypes(pType);
-/*
-    // FIXME: doesn't work in the immediate streaming approach
-    if (const VariableArrayType *VAT = dyn_cast<VariableArrayType>(pType))
-    {
-      addSubNode("VariableArraySizeExpression");
-      PrintStmt(VAT->getSizeExpr());
-      toParent();
-    }
-*/
-  }
-}
-
-//---------------------------------------------------------
-void DocumentXML::addPtrAttribute(const char* pName, const DeclContext* DC)
-{
-  addContextsRecursively(DC);
-  addAttribute(pName, getPrefixedId(Contexts[DC], ID_NORMAL));
-}
-
-//---------------------------------------------------------
-void DocumentXML::addPtrAttribute(const char* pAttributeName, const NamedDecl* D)
-{
-  if (const DeclContext* DC = dyn_cast<DeclContext>(D))
-  {
-    addContextsRecursively(DC);
-    addAttribute(pAttributeName, getPrefixedId(Contexts[DC], ID_NORMAL));
-  }
-  else
-  {
-    addToMap(Decls, D);
-    addAttribute(pAttributeName, getPrefixedId(Decls[D], ID_NORMAL));
-  }
-}
-
-//---------------------------------------------------------
-void DocumentXML::addPtrAttribute(const char* pName, const NamespaceDecl* D)
-{
-  addPtrAttribute(pName, static_cast<const DeclContext*>(D));
-}
-
-//---------------------------------------------------------
-void DocumentXML::addContextsRecursively(const DeclContext *DC)
-{
-  if (DC != 0 && addToMap(Contexts, DC))
-  {
-    addContextsRecursively(DC->getParent());
-  }
-}
-
-//---------------------------------------------------------
-void DocumentXML::addSourceFileAttribute(const std::string& fileName)
-{
-  addToMap(SourceFiles, fileName, ID_FILE);
-  addAttribute("file", getPrefixedId(SourceFiles[fileName], ID_FILE));
-}
-
-
-//---------------------------------------------------------
-void DocumentXML::addPtrAttribute(const char* pName, const LabelStmt* L)
-{
-  addToMap(Labels, L, ID_LABEL);
-  addAttribute(pName, getPrefixedId(Labels[L], ID_LABEL));
-}
-
-
-//---------------------------------------------------------
-PresumedLoc DocumentXML::addLocation(const SourceLocation& Loc)
-{
-  SourceManager& SM = Ctx->getSourceManager();
-  SourceLocation SpellingLoc = SM.getSpellingLoc(Loc);
-  PresumedLoc PLoc;
-  if (!SpellingLoc.isInvalid())
-  {
-    PLoc = SM.getPresumedLoc(SpellingLoc);
-    if (PLoc.isValid()) {
-      addSourceFileAttribute(PLoc.getFilename());
-      addAttribute("line", PLoc.getLine());
-      addAttribute("col", PLoc.getColumn());
-    }
-  }
-  // else there is no error in some cases (eg. CXXThisExpr)
-  return PLoc;
-}
-
-//---------------------------------------------------------
-void DocumentXML::addLocationRange(const SourceRange& R)
-{
-  PresumedLoc PStartLoc = addLocation(R.getBegin());
-  if (R.getBegin() != R.getEnd())
-  {
-    SourceManager& SM = Ctx->getSourceManager();
-    SourceLocation SpellingLoc = SM.getSpellingLoc(R.getEnd());
-    if (!SpellingLoc.isInvalid())
-    {
-      PresumedLoc PLoc = SM.getPresumedLoc(SpellingLoc);
-      if (PLoc.isInvalid()) {
-      } else if (PStartLoc.isInvalid() ||
-                 strcmp(PLoc.getFilename(), PStartLoc.getFilename()) != 0) {
-        addToMap(SourceFiles, PLoc.getFilename(), ID_FILE);
-        addAttribute("endfile", PLoc.getFilename());
-        addAttribute("endline", PLoc.getLine());
-        addAttribute("endcol", PLoc.getColumn());
-      } else if (PLoc.getLine() != PStartLoc.getLine()) {
-        addAttribute("endline", PLoc.getLine());
-        addAttribute("endcol", PLoc.getColumn());
-      } else {
-        addAttribute("endcol", PLoc.getColumn());
-      }
-    }
-  }
-}
-
-//---------------------------------------------------------
-void DocumentXML::PrintDecl(Decl *D)
-{
-  writeDeclToXML(D);
-}
-
-//---------------------------------------------------------
-} // NS clang
-
index d8e7d2904500f8397d71cb33226c73f7a141c181..7b06c7e49acfe55ace38b2392d7a52224159eab5 100644 (file)
@@ -47,13 +47,6 @@ ASTConsumer *ASTPrintAction::CreateASTConsumer(CompilerInstance &CI,
   return 0;
 }
 
-ASTConsumer *ASTPrintXMLAction::CreateASTConsumer(CompilerInstance &CI,
-                                                  llvm::StringRef InFile) {
-  if (llvm::raw_ostream *OS = CI.createDefaultOutputFile(false, InFile, "xml"))
-    return CreateASTPrinterXML(OS);
-  return 0;
-}
-
 ASTConsumer *ASTDumpAction::CreateASTConsumer(CompilerInstance &CI,
                                               llvm::StringRef InFile) {
   return CreateASTDumper();
diff --git a/lib/Frontend/StmtXML.cpp b/lib/Frontend/StmtXML.cpp
deleted file mode 100644 (file)
index 257c1cc..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-//===--- StmtXML.cpp - XML implementation for Stmt ASTs ------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the Stmt::dumpXML methods, which dump out the
-// AST to an XML document.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Frontend/DocumentXML.h"
-#include "clang/AST/StmtVisitor.h"
-#include "clang/AST/DeclObjC.h"
-#include "clang/AST/DeclCXX.h"
-#include "clang/Basic/SourceManager.h"
-using namespace clang;
-
-//===----------------------------------------------------------------------===//
-// StmtXML Visitor
-//===----------------------------------------------------------------------===//
-
-namespace  {
-  class StmtXML : public StmtVisitor<StmtXML> {
-    DocumentXML&  Doc;
-
-    //static const char *getOpcodeStr(UnaryOperator::Opcode Op);
-    //static const char *getOpcodeStr(BinaryOperator::Opcode Op);
-
-
-  void addSpecialAttribute(const char* pName, StringLiteral* Str) {
-    Doc.addAttribute(pName, Doc.escapeString(Str->getString().data(),
-                                             Str->getString().size()));
-  }
-
-  void addSpecialAttribute(const char* pName, SizeOfAlignOfExpr* S) {
-    if (S->isArgumentType())
-      Doc.addAttribute(pName, S->getArgumentType());
-  }
-
-  void addSpecialAttribute(const char* pName, CXXTypeidExpr* S) {
-    if (S->isTypeOperand())
-      Doc.addAttribute(pName, S->getTypeOperand());
-  }
-
-
-  public:
-    StmtXML(DocumentXML& doc)
-      : Doc(doc) {
-    }
-
-    void DumpSubTree(Stmt *S) {
-      if (S) {
-        Visit(S);
-        if (DeclStmt* DS = dyn_cast<DeclStmt>(S)) {
-          for (DeclStmt::decl_iterator DI = DS->decl_begin(),
-                 DE = DS->decl_end(); DI != DE; ++DI) {
-            Doc.PrintDecl(*DI);
-          }
-        } else {
-          for (Stmt::child_range i = S->children(); i; ++i)
-            DumpSubTree(*i);
-        }
-        Doc.toParent();
-      } else {
-        Doc.addSubNode("NULL").toParent();
-      }
-    }
-
-
-#define NODE_XML( CLASS, NAME )          \
-  void Visit##CLASS(CLASS* S)            \
-  {                                      \
-    typedef CLASS tStmtType;             \
-    Doc.addSubNode(NAME);
-
-#define ATTRIBUTE_XML( FN, NAME )         Doc.addAttribute(NAME, S->FN);
-#define TYPE_ATTRIBUTE_XML( FN )          ATTRIBUTE_XML(FN, "type")
-#define ATTRIBUTE_OPT_XML( FN, NAME )     Doc.addAttributeOptional(NAME, S->FN);
-#define ATTRIBUTE_SPECIAL_XML( FN, NAME ) addSpecialAttribute(NAME, S);
-#define ATTRIBUTE_FILE_LOCATION_XML       Doc.addLocationRange(S->getSourceRange());
-
-
-#define ATTRIBUTE_ENUM_XML( FN, NAME )  \
-  {                                     \
-    const char* pAttributeName = NAME;  \
-    const bool optional = false;        \
-    switch (S->FN) {                    \
-    default: assert(0 && "unknown enum value");
-
-#define ATTRIBUTE_ENUM_OPT_XML( FN, NAME )  \
-  {                                         \
-    const char* pAttributeName = NAME;      \
-    const bool optional = true;             \
-    switch (S->FN) {                        \
-    default: assert(0 && "unknown enum value");
-
-#define ENUM_XML( VALUE, NAME )         case VALUE: if ((!optional) || NAME[0]) Doc.addAttribute(pAttributeName, NAME); break;
-#define END_ENUM_XML                    } }
-#define END_NODE_XML                    }
-
-#define ID_ATTRIBUTE_XML                Doc.addAttribute("id", S);
-#define SUB_NODE_XML( CLASS )
-#define SUB_NODE_SEQUENCE_XML( CLASS )
-#define SUB_NODE_OPT_XML( CLASS )
-
-#include "clang/Frontend/StmtXML.def"
-  };
-}
-
-//===----------------------------------------------------------------------===//
-// Stmt method implementations
-//===----------------------------------------------------------------------===//
-
-/// dumpAll - This does a dump of the specified AST fragment and all subtrees.
-void DocumentXML::PrintStmt(const Stmt *S) {
-  StmtXML P(*this);
-  P.DumpSubTree(const_cast<Stmt*>(S));
-}
-
diff --git a/lib/Frontend/TypeXML.cpp b/lib/Frontend/TypeXML.cpp
deleted file mode 100644 (file)
index a8c8f75..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-//===--- DocumentXML.cpp - XML document for ASTs --------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the XML document class, which provides the means to
-// dump out the AST in a XML form that exposes type details and other fields.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Frontend/DocumentXML.h"
-#include "clang/AST/TypeVisitor.h"
-#include "clang/AST/Type.h"
-#include "clang/AST/Decl.h"
-
-namespace clang {
-  namespace XML {
-    namespace {
-
-//---------------------------------------------------------
-class TypeWriter : public TypeVisitor<TypeWriter> {
-  DocumentXML& Doc;
-
-public:
-  TypeWriter(DocumentXML& doc) : Doc(doc) {}
-
-#define NODE_XML( CLASS, NAME )          \
-  void Visit##CLASS(const CLASS* T) {          \
-    Doc.addSubNode(NAME);
-
-#define ID_ATTRIBUTE_XML                // done by the Document class itself
-#define ATTRIBUTE_XML( FN, NAME )       Doc.addAttribute(NAME, T->FN);
-#define TYPE_ATTRIBUTE_XML( FN )        ATTRIBUTE_XML(FN, "type")
-#define CONTEXT_ATTRIBUTE_XML( FN )     ATTRIBUTE_XML(FN, "context")
-#define ATTRIBUTE_OPT_XML( FN, NAME )   Doc.addAttributeOptional(NAME, T->FN);
-
-#define ATTRIBUTE_ENUM_XML( FN, NAME )  \
-  {                                     \
-    const char* pAttributeName = NAME;  \
-    const bool optional = false;             \
-    switch (T->FN) {                    \
-    default: assert(0 && "unknown enum value");
-
-#define ATTRIBUTE_ENUM_OPT_XML( FN, NAME )  \
-  {                                     \
-    const char* pAttributeName = NAME;  \
-    const bool optional = true;              \
-    switch (T->FN) {                    \
-    default: assert(0 && "unknown enum value");
-
-#define ENUM_XML( VALUE, NAME )         case VALUE: if ((!optional) || NAME[0]) Doc.addAttribute(pAttributeName, NAME); break;
-#define END_ENUM_XML                    } }
-#define END_NODE_XML                    }
-
-#include "clang/Frontend/TypeXML.def"
-
-};
-
-//---------------------------------------------------------
-    } // anon clang
-  } // NS XML
-
-//---------------------------------------------------------
-class DocumentXML::TypeAdder : public TypeVisitor<DocumentXML::TypeAdder> {
-  DocumentXML& Doc;
-
-  void addIfType(const Type* pType) {
-    Doc.addTypeRecursively(pType);
-  }
-
-  void addIfType(const QualType& pType) {
-    Doc.addTypeRecursively(pType);
-  }
-
-  template<class T> void addIfType(T) {}
-
-public:
-  TypeAdder(DocumentXML& doc) : Doc(doc) {}
-
-#define NODE_XML( CLASS, NAME )          \
-  void Visit##CLASS(const CLASS* T) \
-  {
-
-#define ID_ATTRIBUTE_XML
-#define TYPE_ATTRIBUTE_XML( FN )        Doc.addTypeRecursively(T->FN);
-#define CONTEXT_ATTRIBUTE_XML( FN )
-#define ATTRIBUTE_XML( FN, NAME )       addIfType(T->FN);
-#define ATTRIBUTE_OPT_XML( FN, NAME )
-#define ATTRIBUTE_ENUM_XML( FN, NAME )
-#define ATTRIBUTE_ENUM_OPT_XML( FN, NAME )
-#define ENUM_XML( VALUE, NAME )
-#define END_ENUM_XML
-#define END_NODE_XML                    }
-
-#include "clang/Frontend/TypeXML.def"
-};
-
-//---------------------------------------------------------
-void DocumentXML::addParentTypes(const Type* pType) {
-  TypeAdder(*this).Visit(pType);
-}
-
-//---------------------------------------------------------
-void DocumentXML::writeTypeToXML(const Type* pType) {
-  XML::TypeWriter(*this).Visit(const_cast<Type*>(pType));
-}
-
-//---------------------------------------------------------
-void DocumentXML::writeTypeToXML(const QualType& pType) {
-  XML::TypeWriter(*this).VisitQualType(const_cast<QualType*>(&pType));
-}
-
-//---------------------------------------------------------
-} // NS clang
-
index 65fad6da51fa0d558e0b3f20800fa41b424e6592..664b53351dc123c548369ad013125022b5f77ee5 100644 (file)
@@ -37,7 +37,6 @@ static FrontendAction *CreateFrontendBaseAction(CompilerInstance &CI) {
   case ASTDump:                return new ASTDumpAction();
   case ASTDumpXML:             return new ASTDumpXMLAction();
   case ASTPrint:               return new ASTPrintAction();
-  case ASTPrintXML:            return new ASTPrintXMLAction();
   case ASTView:                return new ASTViewAction();
   case BoostCon:               return new BoostConAction();
   case CreateModule:           return 0;
index bbbc366eb711cfc8642a2a1ca1c3bed8f7247838..ecaf3abeaa8ae24e44f1bbf959d02b455c338705 100644 (file)
@@ -1,7 +1,6 @@
 // RUN: %clang_cc1 -fsyntax-only %s
 // RUN: %clang_cc1 -ast-print %s
 // RUN: %clang_cc1 -ast-dump %s
-// RUN: %clang_cc1 -ast-print-xml -o %t %s
 // RUN: %clang_cc1 -print-decl-contexts %s
 
 #include "c-language-features.inc"
index 0de56422895f3f8a9e865aaeadb954c22577b995..3205078758f187d3d691bfa251228ed291beab66 100644 (file)
@@ -1,7 +1,6 @@
 // RUN: %clang_cc1 -fsyntax-only %s
 // RUN: %clang_cc1 -ast-print %s
 // RUN: %clang_cc1 -ast-dump %s
-// RUN: %clang_cc1 -ast-print-xml -o %t %s
 // RUN: %clang_cc1 -print-decl-contexts %s
 // RUN: %clang_cc1 -fdump-record-layouts %s