<?xml-stylesheet href="dialect.xsl" type="text/xsl"?>

<Dialect>
	<Stylesheet>visualize.css</Stylesheet>
	<Directory></Directory>
	<Category>
		<Name>uclass</Name>
		<Modifier>
			<Name>ini</Name>
			<Type>Data</Type>
			<Value></Value>
			
		</Modifier>
		<Location>
			<Name>body</Name>
			<Note>
				<Name>super</Name>
				<Argument>
					<Name>scope</Name>
					<Description>Modifier value containing the scope of the object (e.g., namespace A { opclass B { ... } } -&gt; A::).</Description>
					
				</Argument>
				<Argument>
					<Name>namespace_start</Name>
					<Description>Argument specifying the start of all surrounding namespaces (e.g., namespace A { namespace B { } } -&gt; namespace A { namespace B {).  Use in conjunction with namespace_end.</Description>
					
				</Argument>
				<Argument>
					<Name>namespace_end</Name>
					<Description>Argument specifying the end of all surrounding namespaces.</Description>
					
				</Argument>
				<Argument>
					<Name>source_line</Name>
					<Description>Argument specifying the source line of the category (notes) or the data/function member (maps).</Description>
					
				</Argument>
				<Argument>
					<Name>source_file</Name>
					<Description>Argument specifying the source file of the category (notes) or the data/function member (maps).</Description>
					
				</Argument>
				<Argument>
					<Name>alt_scope</Name>
					<Description>Argument specifying the scope of the object prefixed with underscores (e.g., namespace A { opclass B { ... } } -&gt; _A::).</Description>
					
				</Argument>
				<Argument>
					<Name>alt_namespace_start</Name>
					<Description>Argument specifying the start of all surrounding namespaces, prefixed with underscores (e.g., namespace A { namespace B { } } -&gt; namespace _A { namespace _B {).  Use in conjunction with alt_namespace_end.</Description>
					
				</Argument>
				<Argument>
					<Name>alt_namespace_end</Name>
					<Description>Argument specifying the end of all surrounding namespaces.</Description>
					
				</Argument>
				<Argument>
					<Name>class_name</Name>
					<Description>Modifier value containing the name of the category.</Description>
					
				</Argument>
				<Argument>
					<Name>parent_name</Name>
					<Description>Modifier value containing the name of the category`s parents, separated by commas (e.g., opclass A : public B -&gt; B).</Description>
					
				</Argument>
				<Argument>
					<Name>alt_class_name</Name>
					<Description>Argument specifying the name of the object, prefixed with underscores (e.g., opclass A -&gt; _A).</Description>
					
				</Argument>
				<Modifier>
					<Name>category_abstract</Name>
					<Description>Specifies that the category is abstract (has a pure virtual function).</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_baseclass</Name>
					<Description>Specifies that the category is a base class (no inheritance).</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_complex_constructor</Name>
					<Description>Specifies that the category has a complex constructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_has_constructor</Name>
					<Description>Specifies that the category has a constructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_has_destructor</Name>
					<Description>Specifies that the category has a destructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_multiple_inheritance</Name>
					<Description>Specifies that the category has multiple inheritance.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_simple_constructor</Name>
					<Description>Specifies that the category has a simple constructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_single_inheritance</Name>
					<Description>Specifies that the category has single inheritance.</Description>
					
				</Modifier>
				<Modifier>
					<Name>class_name()</Name>
					<Description>Modifier value containing the name of the category.</Description>
					
				</Modifier>
				<Modifier>
					<Name>inner_type</Name>
					<Description>Specifies that the construct is an inner type of another category.</Description>
					
				</Modifier>
				<Modifier>
					<Name>parent_name()</Name>
					<Description>Modifier value containing the name of the category`s parents, separated by commas (e.g., opclass A : public B -&gt; B).</Description>
					
				</Modifier>
				<Modifier>
					<Name>scope()</Name>
					<Description>Modifier value containing the scope of the object (e.g., namespace A { opclass B { ... } } -&gt; A::).</Description>
					
				</Modifier>
				
			</Note>
			<Map>
				<Name>all_data</Name>
				<Type>Data</Type>
				<Note>
					<Name>start</Name>
					<Argument>
						<Name>scope</Name>
						<Description>Modifier value containing the scope of the object (e.g., namespace A { opclass B { ... } } -&gt; A::).</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces (e.g., namespace A { namespace B { } } -&gt; namespace A { namespace B {).  Use in conjunction with namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>source_line</Name>
						<Description>Argument specifying the source line of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>source_file</Name>
						<Description>Argument specifying the source file of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_scope</Name>
						<Description>Argument specifying the scope of the object prefixed with underscores (e.g., namespace A { opclass B { ... } } -&gt; _A::).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces, prefixed with underscores (e.g., namespace A { namespace B { } } -&gt; namespace _A { namespace _B {).  Use in conjunction with alt_namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>class_name</Name>
						<Description>Modifier value containing the name of the category.</Description>
						
					</Argument>
					<Argument>
						<Name>parent_name</Name>
						<Description>Modifier value containing the name of the category`s parents, separated by commas (e.g., opclass A : public B -&gt; B).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_class_name</Name>
						<Description>Argument specifying the name of the object, prefixed with underscores (e.g., opclass A -&gt; _A).</Description>
						
					</Argument>
					
				</Note>
				<Note>
					<Name>mapping</Name>
					<Argument>
						<Name>member_name</Name>
						<Description>Modifier value containing the name of the statement (e.g., void Foo() { ... } -&gt; Foo).</Description>
						
					</Argument>
					<Argument>
						<Name>all_modifiers</Name>
						<Description>Modifier value that contains all modifiers attached to the statement (e.g., private native int x; -&gt; private native).</Description>
						
					</Argument>
					<Argument>
						<Name>data_type</Name>
						<Description>Modifier value that contains the data type.</Description>
						
					</Argument>
					<Argument>
						<Name>data_full_type</Name>
						<Description>Modifier value that contains the data type, including array brackets (e.g., int A[10] -&gt; int[10]).</Description>
						
					</Argument>
					<Argument>
						<Name>map_index</Name>
						<Description>Argument specifying the index of the current statement in a map.</Description>
						
					</Argument>
					<Argument>
						<Name>scope</Name>
						<Description>Modifier value containing the scope of the object (e.g., namespace A { opclass B { ... } } -&gt; A::).</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces (e.g., namespace A { namespace B { } } -&gt; namespace A { namespace B {).  Use in conjunction with namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>source_line</Name>
						<Description>Argument specifying the source line of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>source_file</Name>
						<Description>Argument specifying the source file of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_scope</Name>
						<Description>Argument specifying the scope of the object prefixed with underscores (e.g., namespace A { opclass B { ... } } -&gt; _A::).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces, prefixed with underscores (e.g., namespace A { namespace B { } } -&gt; namespace _A { namespace _B {).  Use in conjunction with alt_namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>class_name</Name>
						<Description>Modifier value containing the name of the category.</Description>
						
					</Argument>
					<Argument>
						<Name>parent_name</Name>
						<Description>Modifier value containing the name of the category`s parents, separated by commas (e.g., opclass A : public B -&gt; B).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_class_name</Name>
						<Description>Argument specifying the name of the object, prefixed with underscores (e.g., opclass A -&gt; _A).</Description>
						
					</Argument>
					
				</Note>
				<Note>
					<Name>end</Name>
					<Argument>
						<Name>map_count</Name>
						<Description>Argument specifying the number of statements in a map.</Description>
						
					</Argument>
					<Argument>
						<Name>scope</Name>
						<Description>Modifier value containing the scope of the object (e.g., namespace A { opclass B { ... } } -&gt; A::).</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces (e.g., namespace A { namespace B { } } -&gt; namespace A { namespace B {).  Use in conjunction with namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>source_line</Name>
						<Description>Argument specifying the source line of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>source_file</Name>
						<Description>Argument specifying the source file of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_scope</Name>
						<Description>Argument specifying the scope of the object prefixed with underscores (e.g., namespace A { opclass B { ... } } -&gt; _A::).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces, prefixed with underscores (e.g., namespace A { namespace B { } } -&gt; namespace _A { namespace _B {).  Use in conjunction with alt_namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>class_name</Name>
						<Description>Modifier value containing the name of the category.</Description>
						
					</Argument>
					<Argument>
						<Name>parent_name</Name>
						<Description>Modifier value containing the name of the category`s parents, separated by commas (e.g., opclass A : public B -&gt; B).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_class_name</Name>
						<Description>Argument specifying the name of the object, prefixed with underscores (e.g., opclass A -&gt; _A).</Description>
						
					</Argument>
					
				</Note>
				<Modifier>
					<Name>all_modifiers()</Name>
					<Description>Modifier value that contains all modifiers attached to the statement (e.g., private native int x; -&gt; private native).</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_abstract</Name>
					<Description>Specifies that the category is abstract (has a pure virtual function).</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_baseclass</Name>
					<Description>Specifies that the category is a base class (no inheritance).</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_complex_constructor</Name>
					<Description>Specifies that the category has a complex constructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_has_constructor</Name>
					<Description>Specifies that the category has a constructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_has_destructor</Name>
					<Description>Specifies that the category has a destructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_multiple_inheritance</Name>
					<Description>Specifies that the category has multiple inheritance.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_simple_constructor</Name>
					<Description>Specifies that the category has a simple constructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_single_inheritance</Name>
					<Description>Specifies that the category has single inheritance.</Description>
					
				</Modifier>
				<Modifier>
					<Name>class_name()</Name>
					<Description>Modifier value containing the name of the category.</Description>
					
				</Modifier>
				<Modifier>
					<Name>const</Name>
					<Description>Specifies that the statement is const.</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_array</Name>
					<Description>Specifies that the data type is an array.</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_array_brackets()</Name>
					<Description>Modifier value that contains the brackets from the array declaration (e.g., A[3][4] -&gt; [3][4]).</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_array_commas()</Name>
					<Description>Modifier value that contains the dimensions of an array, separated by commas (e.g., A[3][4] -&gt; 3,4).</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_base_type()</Name>
					<Description>Modifier value that contains the base data type (e.g., A* -&gt; A).</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_basic</Name>
					<Description>Specifies that the data type is a basic type. (e.g., int, double).</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_bits()</Name>
					<Description>Modifier value that contains the number of bits in a bit specifier (e.g., int A:3; -&gt; 3).</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_full_type()</Name>
					<Description>Modifier value that contains the data type, including array brackets (e.g., int A[10] -&gt; int[10]).</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_function_pointer</Name>
					<Description>Specifies that the data type is a function pointer.</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_initialized()</Name>
					<Description>Modifier value that contains the expression on the right side of an assignment statement (e.g., int x = 3; -&gt; 3).</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_pointer</Name>
					<Description>Specifies that the data type is a pointer.</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_pointer_level()</Name>
					<Description>Modifier value that contains the number of indirections if the data type is a pointer (e.g., A*** -&gt; 3).</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_qualified</Name>
					<Description>Specifies that the data type contains a qualified name.</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_reference</Name>
					<Description>Specifies that the data type is a reference.</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_statement</Name>
					<Description>Specifies that the statement is a data statement.</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_template</Name>
					<Description>Specifies that the data type is a template type.</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_type()</Name>
					<Description>Modifier value that contains the data type.</Description>
					
				</Modifier>
				<Modifier>
					<Name>default</Name>
					<Description>Specifies that the statement has the default visibility.</Description>
					
				</Modifier>
				<Modifier>
					<Name>ini()</Name>
					<Description>This is a custom modifier description, ini is used to specify where this class takes its defaults from</Description>
					
				</Modifier>
				<Modifier>
					<Name>inner_type</Name>
					<Description>Specifies that the construct is an inner type of another category.</Description>
					
				</Modifier>
				<Modifier>
					<Name>member_name()</Name>
					<Description>Modifier value containing the name of the statement (e.g., void Foo() { ... } -&gt; Foo).</Description>
					
				</Modifier>
				<Modifier>
					<Name>mutable</Name>
					<Description>Specifies that the statement is mutable.</Description>
					
				</Modifier>
				<Modifier>
					<Name>parent_name()</Name>
					<Description>Modifier value containing the name of the category`s parents, separated by commas (e.g., opclass A : public B -&gt; B).</Description>
					
				</Modifier>
				<Modifier>
					<Name>private</Name>
					<Description>Specifies that the statement has private visibility.</Description>
					
				</Modifier>
				<Modifier>
					<Name>protected</Name>
					<Description>Specifies that the statement has protected visibility.</Description>
					
				</Modifier>
				<Modifier>
					<Name>public</Name>
					<Description>Specifies that the statement has public visibility.</Description>
					
				</Modifier>
				<Modifier>
					<Name>scope()</Name>
					<Description>Modifier value containing the scope of the object (e.g., namespace A { opclass B { ... } } -&gt; A::).</Description>
					
				</Modifier>
				<Modifier>
					<Name>static</Name>
					<Description>Specifies that the statement is static.</Description>
					
				</Modifier>
				<Modifier>
					<Name>visibility_mode()</Name>
					<Description>Modifier value containing the visibility of the statement (e.g., private int x; -&gt; private).</Description>
					
				</Modifier>
				<Modifier>
					<Name>volatile</Name>
					<Description>Specifies that the statement is volatile.</Description>
					
				</Modifier>
				
			</Map>
			<Map>
				<Name>ini_data</Name>
				<Type>Data</Type>
				<Note>
					<Name>start</Name>
					<Argument>
						<Name>scope</Name>
						<Description>Modifier value containing the scope of the object (e.g., namespace A { opclass B { ... } } -&gt; A::).</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces (e.g., namespace A { namespace B { } } -&gt; namespace A { namespace B {).  Use in conjunction with namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>source_line</Name>
						<Description>Argument specifying the source line of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>source_file</Name>
						<Description>Argument specifying the source file of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_scope</Name>
						<Description>Argument specifying the scope of the object prefixed with underscores (e.g., namespace A { opclass B { ... } } -&gt; _A::).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces, prefixed with underscores (e.g., namespace A { namespace B { } } -&gt; namespace _A { namespace _B {).  Use in conjunction with alt_namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>class_name</Name>
						<Description>Modifier value containing the name of the category.</Description>
						
					</Argument>
					<Argument>
						<Name>parent_name</Name>
						<Description>Modifier value containing the name of the category`s parents, separated by commas (e.g., opclass A : public B -&gt; B).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_class_name</Name>
						<Description>Argument specifying the name of the object, prefixed with underscores (e.g., opclass A -&gt; _A).</Description>
						
					</Argument>
					
				</Note>
				<Note>
					<Name>mapping</Name>
					<Argument>
						<Name>ini</Name>
						<Description>This is a custom modifier description, ini is used to specify where this class takes its defaults from</Description>
						
					</Argument>
					<Argument>
						<Name>member_name</Name>
						<Description>Modifier value containing the name of the statement (e.g., void Foo() { ... } -&gt; Foo).</Description>
						
					</Argument>
					<Argument>
						<Name>all_modifiers</Name>
						<Description>Modifier value that contains all modifiers attached to the statement (e.g., private native int x; -&gt; private native).</Description>
						
					</Argument>
					<Argument>
						<Name>data_type</Name>
						<Description>Modifier value that contains the data type.</Description>
						
					</Argument>
					<Argument>
						<Name>data_full_type</Name>
						<Description>Modifier value that contains the data type, including array brackets (e.g., int A[10] -&gt; int[10]).</Description>
						
					</Argument>
					<Argument>
						<Name>map_index</Name>
						<Description>Argument specifying the index of the current statement in a map.</Description>
						
					</Argument>
					<Argument>
						<Name>scope</Name>
						<Description>Modifier value containing the scope of the object (e.g., namespace A { opclass B { ... } } -&gt; A::).</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces (e.g., namespace A { namespace B { } } -&gt; namespace A { namespace B {).  Use in conjunction with namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>source_line</Name>
						<Description>Argument specifying the source line of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>source_file</Name>
						<Description>Argument specifying the source file of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_scope</Name>
						<Description>Argument specifying the scope of the object prefixed with underscores (e.g., namespace A { opclass B { ... } } -&gt; _A::).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces, prefixed with underscores (e.g., namespace A { namespace B { } } -&gt; namespace _A { namespace _B {).  Use in conjunction with alt_namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>class_name</Name>
						<Description>Modifier value containing the name of the category.</Description>
						
					</Argument>
					<Argument>
						<Name>parent_name</Name>
						<Description>Modifier value containing the name of the category`s parents, separated by commas (e.g., opclass A : public B -&gt; B).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_class_name</Name>
						<Description>Argument specifying the name of the object, prefixed with underscores (e.g., opclass A -&gt; _A).</Description>
						
					</Argument>
					
				</Note>
				<Note>
					<Name>end</Name>
					<Argument>
						<Name>map_count</Name>
						<Description>Argument specifying the number of statements in a map.</Description>
						
					</Argument>
					<Argument>
						<Name>scope</Name>
						<Description>Modifier value containing the scope of the object (e.g., namespace A { opclass B { ... } } -&gt; A::).</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces (e.g., namespace A { namespace B { } } -&gt; namespace A { namespace B {).  Use in conjunction with namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>source_line</Name>
						<Description>Argument specifying the source line of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>source_file</Name>
						<Description>Argument specifying the source file of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_scope</Name>
						<Description>Argument specifying the scope of the object prefixed with underscores (e.g., namespace A { opclass B { ... } } -&gt; _A::).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces, prefixed with underscores (e.g., namespace A { namespace B { } } -&gt; namespace _A { namespace _B {).  Use in conjunction with alt_namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>class_name</Name>
						<Description>Modifier value containing the name of the category.</Description>
						
					</Argument>
					<Argument>
						<Name>parent_name</Name>
						<Description>Modifier value containing the name of the category`s parents, separated by commas (e.g., opclass A : public B -&gt; B).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_class_name</Name>
						<Description>Argument specifying the name of the object, prefixed with underscores (e.g., opclass A -&gt; _A).</Description>
						
					</Argument>
					
				</Note>
				<Modifier>
					<Name>all_modifiers()</Name>
					<Description>Modifier value that contains all modifiers attached to the statement (e.g., private native int x; -&gt; private native).</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_abstract</Name>
					<Description>Specifies that the category is abstract (has a pure virtual function).</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_baseclass</Name>
					<Description>Specifies that the category is a base class (no inheritance).</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_complex_constructor</Name>
					<Description>Specifies that the category has a complex constructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_has_constructor</Name>
					<Description>Specifies that the category has a constructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_has_destructor</Name>
					<Description>Specifies that the category has a destructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_multiple_inheritance</Name>
					<Description>Specifies that the category has multiple inheritance.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_simple_constructor</Name>
					<Description>Specifies that the category has a simple constructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_single_inheritance</Name>
					<Description>Specifies that the category has single inheritance.</Description>
					
				</Modifier>
				<Modifier>
					<Name>class_name()</Name>
					<Description>Modifier value containing the name of the category.</Description>
					
				</Modifier>
				<Modifier>
					<Name>const</Name>
					<Description>Specifies that the statement is const.</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_array</Name>
					<Description>Specifies that the data type is an array.</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_array_brackets()</Name>
					<Description>Modifier value that contains the brackets from the array declaration (e.g., A[3][4] -&gt; [3][4]).</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_array_commas()</Name>
					<Description>Modifier value that contains the dimensions of an array, separated by commas (e.g., A[3][4] -&gt; 3,4).</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_base_type()</Name>
					<Description>Modifier value that contains the base data type (e.g., A* -&gt; A).</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_basic</Name>
					<Description>Specifies that the data type is a basic type. (e.g., int, double).</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_bits()</Name>
					<Description>Modifier value that contains the number of bits in a bit specifier (e.g., int A:3; -&gt; 3).</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_full_type()</Name>
					<Description>Modifier value that contains the data type, including array brackets (e.g., int A[10] -&gt; int[10]).</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_function_pointer</Name>
					<Description>Specifies that the data type is a function pointer.</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_initialized()</Name>
					<Description>Modifier value that contains the expression on the right side of an assignment statement (e.g., int x = 3; -&gt; 3).</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_pointer</Name>
					<Description>Specifies that the data type is a pointer.</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_pointer_level()</Name>
					<Description>Modifier value that contains the number of indirections if the data type is a pointer (e.g., A*** -&gt; 3).</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_qualified</Name>
					<Description>Specifies that the data type contains a qualified name.</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_reference</Name>
					<Description>Specifies that the data type is a reference.</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_statement</Name>
					<Description>Specifies that the statement is a data statement.</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_template</Name>
					<Description>Specifies that the data type is a template type.</Description>
					
				</Modifier>
				<Modifier>
					<Name>data_type()</Name>
					<Description>Modifier value that contains the data type.</Description>
					
				</Modifier>
				<Modifier>
					<Name>default</Name>
					<Description>Specifies that the statement has the default visibility.</Description>
					
				</Modifier>
				<Modifier>
					<Name>ini()</Name>
					<Description>This is a custom modifier description, ini is used to specify where this class takes its defaults from</Description>
					
				</Modifier>
				<Modifier>
					<Name>inner_type</Name>
					<Description>Specifies that the construct is an inner type of another category.</Description>
					
				</Modifier>
				<Modifier>
					<Name>member_name()</Name>
					<Description>Modifier value containing the name of the statement (e.g., void Foo() { ... } -&gt; Foo).</Description>
					
				</Modifier>
				<Modifier>
					<Name>mutable</Name>
					<Description>Specifies that the statement is mutable.</Description>
					
				</Modifier>
				<Modifier>
					<Name>parent_name()</Name>
					<Description>Modifier value containing the name of the category`s parents, separated by commas (e.g., opclass A : public B -&gt; B).</Description>
					
				</Modifier>
				<Modifier>
					<Name>private</Name>
					<Description>Specifies that the statement has private visibility.</Description>
					
				</Modifier>
				<Modifier>
					<Name>protected</Name>
					<Description>Specifies that the statement has protected visibility.</Description>
					
				</Modifier>
				<Modifier>
					<Name>public</Name>
					<Description>Specifies that the statement has public visibility.</Description>
					
				</Modifier>
				<Modifier>
					<Name>scope()</Name>
					<Description>Modifier value containing the scope of the object (e.g., namespace A { opclass B { ... } } -&gt; A::).</Description>
					
				</Modifier>
				<Modifier>
					<Name>static</Name>
					<Description>Specifies that the statement is static.</Description>
					
				</Modifier>
				<Modifier>
					<Name>visibility_mode()</Name>
					<Description>Modifier value containing the visibility of the statement (e.g., private int x; -&gt; private).</Description>
					
				</Modifier>
				<Modifier>
					<Name>volatile</Name>
					<Description>Specifies that the statement is volatile.</Description>
					
				</Modifier>
				
			</Map>
			<Map>
				<Name>all_functions</Name>
				<Type>Function</Type>
				<Note>
					<Name>start</Name>
					<Argument>
						<Name>scope</Name>
						<Description>Modifier value containing the scope of the object (e.g., namespace A { opclass B { ... } } -&gt; A::).</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces (e.g., namespace A { namespace B { } } -&gt; namespace A { namespace B {).  Use in conjunction with namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>source_line</Name>
						<Description>Argument specifying the source line of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>source_file</Name>
						<Description>Argument specifying the source file of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_scope</Name>
						<Description>Argument specifying the scope of the object prefixed with underscores (e.g., namespace A { opclass B { ... } } -&gt; _A::).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces, prefixed with underscores (e.g., namespace A { namespace B { } } -&gt; namespace _A { namespace _B {).  Use in conjunction with alt_namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>class_name</Name>
						<Description>Modifier value containing the name of the category.</Description>
						
					</Argument>
					<Argument>
						<Name>parent_name</Name>
						<Description>Modifier value containing the name of the category`s parents, separated by commas (e.g., opclass A : public B -&gt; B).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_class_name</Name>
						<Description>Argument specifying the name of the object, prefixed with underscores (e.g., opclass A -&gt; _A).</Description>
						
					</Argument>
					
				</Note>
				<Note>
					<Name>mapping</Name>
					<Argument>
						<Name>member_name</Name>
						<Description>Modifier value containing the name of the statement (e.g., void Foo() { ... } -&gt; Foo).</Description>
						
					</Argument>
					<Argument>
						<Name>all_modifiers</Name>
						<Description>Modifier value that contains all modifiers attached to the statement (e.g., private native int x; -&gt; private native).</Description>
						
					</Argument>
					<Argument>
						<Name>function_return_type</Name>
						<Description>Modifier value that contains the function`s return type.</Description>
						
					</Argument>
					<Argument>
						<Name>function_arguments</Name>
						<Description>Modifier value that contains the function`s argument list (e.g., void Foo(bool b = true) -&gt; bool b).</Description>
						
					</Argument>
					<Argument>
						<Name>function_arguments_count</Name>
						<Description>Modifier value that contains the number of function arguments.</Description>
						
					</Argument>
					<Argument>
						<Name>map_index</Name>
						<Description>Argument specifying the index of the current statement in a map.</Description>
						
					</Argument>
					<Argument>
						<Name>scope</Name>
						<Description>Modifier value containing the scope of the object (e.g., namespace A { opclass B { ... } } -&gt; A::).</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces (e.g., namespace A { namespace B { } } -&gt; namespace A { namespace B {).  Use in conjunction with namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>source_line</Name>
						<Description>Argument specifying the source line of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>source_file</Name>
						<Description>Argument specifying the source file of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_scope</Name>
						<Description>Argument specifying the scope of the object prefixed with underscores (e.g., namespace A { opclass B { ... } } -&gt; _A::).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces, prefixed with underscores (e.g., namespace A { namespace B { } } -&gt; namespace _A { namespace _B {).  Use in conjunction with alt_namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>class_name</Name>
						<Description>Modifier value containing the name of the category.</Description>
						
					</Argument>
					<Argument>
						<Name>parent_name</Name>
						<Description>Modifier value containing the name of the category`s parents, separated by commas (e.g., opclass A : public B -&gt; B).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_class_name</Name>
						<Description>Argument specifying the name of the object, prefixed with underscores (e.g., opclass A -&gt; _A).</Description>
						
					</Argument>
					
				</Note>
				<Note>
					<Name>end</Name>
					<Argument>
						<Name>map_count</Name>
						<Description>Argument specifying the number of statements in a map.</Description>
						
					</Argument>
					<Argument>
						<Name>scope</Name>
						<Description>Modifier value containing the scope of the object (e.g., namespace A { opclass B { ... } } -&gt; A::).</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces (e.g., namespace A { namespace B { } } -&gt; namespace A { namespace B {).  Use in conjunction with namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>source_line</Name>
						<Description>Argument specifying the source line of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>source_file</Name>
						<Description>Argument specifying the source file of the category (notes) or the data/function member (maps).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_scope</Name>
						<Description>Argument specifying the scope of the object prefixed with underscores (e.g., namespace A { opclass B { ... } } -&gt; _A::).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_start</Name>
						<Description>Argument specifying the start of all surrounding namespaces, prefixed with underscores (e.g., namespace A { namespace B { } } -&gt; namespace _A { namespace _B {).  Use in conjunction with alt_namespace_end.</Description>
						
					</Argument>
					<Argument>
						<Name>alt_namespace_end</Name>
						<Description>Argument specifying the end of all surrounding namespaces.</Description>
						
					</Argument>
					<Argument>
						<Name>class_name</Name>
						<Description>Modifier value containing the name of the category.</Description>
						
					</Argument>
					<Argument>
						<Name>parent_name</Name>
						<Description>Modifier value containing the name of the category`s parents, separated by commas (e.g., opclass A : public B -&gt; B).</Description>
						
					</Argument>
					<Argument>
						<Name>alt_class_name</Name>
						<Description>Argument specifying the name of the object, prefixed with underscores (e.g., opclass A -&gt; _A).</Description>
						
					</Argument>
					
				</Note>
				<Modifier>
					<Name>all_modifiers()</Name>
					<Description>Modifier value that contains all modifiers attached to the statement (e.g., private native int x; -&gt; private native).</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_abstract</Name>
					<Description>Specifies that the category is abstract (has a pure virtual function).</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_baseclass</Name>
					<Description>Specifies that the category is a base class (no inheritance).</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_complex_constructor</Name>
					<Description>Specifies that the category has a complex constructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_has_constructor</Name>
					<Description>Specifies that the category has a constructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_has_destructor</Name>
					<Description>Specifies that the category has a destructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_multiple_inheritance</Name>
					<Description>Specifies that the category has multiple inheritance.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_simple_constructor</Name>
					<Description>Specifies that the category has a simple constructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>category_single_inheritance</Name>
					<Description>Specifies that the category has single inheritance.</Description>
					
				</Modifier>
				<Modifier>
					<Name>class_name()</Name>
					<Description>Modifier value containing the name of the category.</Description>
					
				</Modifier>
				<Modifier>
					<Name>const</Name>
					<Description>Specifies that the statement is const.</Description>
					
				</Modifier>
				<Modifier>
					<Name>default</Name>
					<Description>Specifies that the statement has the default visibility.</Description>
					
				</Modifier>
				<Modifier>
					<Name>explicit</Name>
					<Description>Specifies that the function is explicit.</Description>
					
				</Modifier>
				<Modifier>
					<Name>function_arguments()</Name>
					<Description>Modifier value that contains the function`s argument list (e.g., void Foo(bool b = true) -&gt; bool b).</Description>
					
				</Modifier>
				<Modifier>
					<Name>function_arguments_count()</Name>
					<Description>Modifier value that contains the number of function arguments.</Description>
					
				</Modifier>
				<Modifier>
					<Name>function_arguments_defaults()</Name>
					<Description>Modifier value that contains the function`s argument list, including default arguments (e.g., void Foo(bool b = true) -&gt; bool b = true).</Description>
					
				</Modifier>
				<Modifier>
					<Name>function_arguments_signature()</Name>
					<Description>Modifier value that contains the function`s argument signature (e.g., void Foo(int x, int y) -&gt; (int,int)).</Description>
					
				</Modifier>
				<Modifier>
					<Name>function_body()</Name>
					<Description>Modifier value that contains the function`s body.</Description>
					
				</Modifier>
				<Modifier>
					<Name>function_const</Name>
					<Description>Specifies that the function is a constant function (e.g., void Foo() const).</Description>
					
				</Modifier>
				<Modifier>
					<Name>function_constructor</Name>
					<Description>Specifies that the function is a constructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>function_definition</Name>
					<Description>Specifies that the function is a function definition.</Description>
					
				</Modifier>
				<Modifier>
					<Name>function_destructor</Name>
					<Description>Specifies that the function is a destructor.</Description>
					
				</Modifier>
				<Modifier>
					<Name>function_operator</Name>
					<Description>Specifies that the function is an operator overload.</Description>
					
				</Modifier>
				<Modifier>
					<Name>function_operator_type()</Name>
					<Description>Modifier value that contains an operator overload`s operator type (e.g., bool operator== ( ... ) { ... } -&gt; ==).</Description>
					
				</Modifier>
				<Modifier>
					<Name>function_prototype</Name>
					<Description>Specifies that the function is a function prototype.</Description>
					
				</Modifier>
				<Modifier>
					<Name>function_pure</Name>
					<Description>Specifies that the function is a pure function (e.g., virtual void Foo() = 0;).</Description>
					
				</Modifier>
				<Modifier>
					<Name>function_return_type()</Name>
					<Description>Modifier value that contains the function`s return type.</Description>
					
				</Modifier>
				<Modifier>
					<Name>function_signature()</Name>
					<Description>Modifier value that contains the function`s signature.</Description>
					
				</Modifier>
				<Modifier>
					<Name>function_statement</Name>
					<Description>Specifies that the statement is a function statement.</Description>
					
				</Modifier>
				<Modifier>
					<Name>inline</Name>
					<Description>Specifies that the function is inline.</Description>
					
				</Modifier>
				<Modifier>
					<Name>inner_type</Name>
					<Description>Specifies that the construct is an inner type of another category.</Description>
					
				</Modifier>
				<Modifier>
					<Name>member_name()</Name>
					<Description>Modifier value containing the name of the statement (e.g., void Foo() { ... } -&gt; Foo).</Description>
					
				</Modifier>
				<Modifier>
					<Name>parent_name()</Name>
					<Description>Modifier value containing the name of the category`s parents, separated by commas (e.g., opclass A : public B -&gt; B).</Description>
					
				</Modifier>
				<Modifier>
					<Name>private</Name>
					<Description>Specifies that the statement has private visibility.</Description>
					
				</Modifier>
				<Modifier>
					<Name>protected</Name>
					<Description>Specifies that the statement has protected visibility.</Description>
					
				</Modifier>
				<Modifier>
					<Name>public</Name>
					<Description>Specifies that the statement has public visibility.</Description>
					
				</Modifier>
				<Modifier>
					<Name>scope()</Name>
					<Description>Modifier value containing the scope of the object (e.g., namespace A { opclass B { ... } } -&gt; A::).</Description>
					
				</Modifier>
				<Modifier>
					<Name>static</Name>
					<Description>Specifies that the statement is static.</Description>
					
				</Modifier>
				<Modifier>
					<Name>uninline</Name>
					<Description>Specifies that the function is uninline (function definition will be moved to source).</Description>
					
				</Modifier>
				<Modifier>
					<Name>virtual</Name>
					<Description>Specifies that the function is virtual.</Description>
					
				</Modifier>
				<Modifier>
					<Name>visibility_mode()</Name>
					<Description>Modifier value containing the visibility of the statement (e.g., private int x; -&gt; private).</Description>
					
				</Modifier>
				<Modifier>
					<Name>volatile</Name>
					<Description>Specifies that the statement is volatile.</Description>
					
				</Modifier>
				
			</Map>
			
		</Location>
		
	</Category>
	
</Dialect>
