mirror of
https://github.com/opnsense/src.git
synced 2026-02-23 18:00:31 -05:00
113 lines
4.1 KiB
C++
113 lines
4.1 KiB
C++
//===-- 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
|