// file : xsd/cxx/tree/options.cli // copyright : Copyright (c) 2005-2017 Code Synthesis Tools CC // license : GNU GPL v2 + exceptions; see accompanying LICENSE file include ; // std::size_t include ; // NarrowString, NarrowStrings include ; namespace CXX { namespace Tree { class options: CXX::options { // Polymorphism. // bool --generate-polymorphic { "Generate polymorphism-aware code. Specify this option if you use substitution groups or \cb{xsi:type}. Use the \cb{--polymorphic-type} or \cb{--polymorphic-type-all} option to specify which type hierarchies are polymorphic." }; NarrowStrings --polymorphic-type { "", "Indicate that is a root of a polymorphic type hierarchy. The compiler can often automatically determine which types are polymorphic based on the substitution group declarations. However, you may need to use this option if you are not using substitution groups or if substitution groups are defined in another schema. You need to specify this option when compiling every schema file that references . The argument is an XML Schema type name that can be optionally qualified with a namespace in the \c{\i{namespace}\b{#}\i{name}} form." }; bool --polymorphic-type-all { "Indicate that all types should be treated as polymorphic." }; unsigned long --polymorphic-plate = 0 { "", "Specify the polymorphic map plate the generated code should register on. This functionality is primarily useful to segregate multiple schemas that define the same polymorphic types." }; // Ordered content. // NarrowStrings --ordered-type { "", "Indicate that element order in is significant. An example would be a complex type with unbounded choice as a content model where the element order in XML has application-specific semantics. For ordered types the compiler generates a special container data member and a corresponding set of accessors and modifiers that are used to capture the order of elements and, for mixed content, of text. The argument is an XML Schema type name that can be optionally qualified with a namespace in the \c{\i{namespace}\b{#}\i{name}} form. Note also that you will need to specify this option when compiling every schema file that has other ordered types derived from this type." }; bool --ordered-type-derived { "Automatically treat types derived from ordered bases as also ordered. This is primarily useful if you would like to be able to iterate over the complete content using the content order container." }; bool --ordered-type-mixed { "Automatically treat complex types with mixed content as ordered." }; bool --ordered-type-all { "Indicate that element order in all types is significant." }; NarrowString --order-container { "", "Specify a custom class template that should be used as a container for the content order in ordered types instead of the default \cb{std::vector}. See \cb{--ordered-type} for more information on ordered type. This option is primarily useful if you need to perform more complex lookups in the content order container, for example by element id. In this case, a container like Boost multi-index may be more convenient. Note that if using a custom container, you will also most likely need to include the relevant headers using the \cb{--hxx-prologue*} options." }; // Features. // bool --generate-serialization { "Generate serialization functions. Serialization functions convert the object model back to XML." }; bool --generate-ostream { "Generate ostream insertion operators (\cb{operator<<}) for generated types. This allows one to easily print a fragment or the whole object model for debugging or logging." }; bool --generate-doxygen { "Generate documentation comments suitable for extraction by the Doxygen documentation system. Documentation from annotations is added to the comments if present in the schema." }; bool --generate-comparison { "Generate comparison operators (\cb{operator==} and \cb{operator!=}) for complex types. Comparison is performed member-wise." }; bool --generate-default-ctor { "Generate default constructors even for types that have required members. Required members of an instance constructed using such a constructor are not initialized and accessing them results in undefined behavior." }; bool --generate-from-base-ctor { "Generate constructors that expect an instance of a base type followed by all required members." }; bool --suppress-assignment { "Suppress the generation of copy assignment operators for complex types. If this option is specified, the copy assignment operators for such types are declared private and left unimplemented." }; bool --generate-detach { "Generate detach functions for required elements and attributes. Detach functions for optional and sequence cardinalities are provided by the respective containers. These functions, for example, allow you to move sub-trees in the object model either within the same tree or between different trees." }; bool --generate-wildcard { "Generate accessors and modifiers as well as parsing and serialization code for XML Schema wildcards (\cb{any} and \cb{anyAttribute}). XML content matched by wildcards is presented as DOM fragments. Note that you need to initialize the Xerces-C++ runtime if you are using this option." }; bool --generate-any-type { "Extract and store content of the XML Schema \cb{anyType} type as a DOM fragment. Note that you need to initialize the Xerces-C++ runtime if you are using this option." }; NarrowStrings --generate-insertion { "", "Generate data representation stream insertion operators for the output stream type. Repeat this option to specify more than one stream type. The ACE CDR stream (\cb{ACE_OutputCDR}) and RPC XDR are recognized by the compiler and the necessary \cb{#include} directives are automatically generated. For custom stream types use the \cb{--hxx-prologue*} options to provide the necessary declarations." }; NarrowStrings --generate-extraction { "", "Generate data representation stream extraction constructors for the input stream type. Repeat this option to specify more than one stream type. The ACE CDR stream (\cb{ACE_InputCDR}) and RPC XDR are recognized by the compiler and the necessary \cb{#include} directives are automatically generated. For custom stream types use the \cb{--hxx-prologue*} options to provide the necessary declarations." }; bool --generate-forward { "Generate a separate header file with forward declarations for the types being generated." }; bool --suppress-parsing { "Suppress the generation of the parsing functions and constructors. Use this option to reduce the generated code size when parsing from XML is not needed." }; bool --generate-element-type { "Generate types instead of parsing and serialization functions for root elements. This is primarily useful to distinguish object models with the same root type but with different root elements." }; bool --generate-element-map { "Generate a root element map that allows uniform parsing and serialization of multiple root elements. This option is only valid together with \cb{--generate-element-type}." }; bool --generate-intellisense { "Generate workarounds for IntelliSense bugs in Visual Studio 2005 (8.0). When this option is used, the resulting code is slightly more verbose. IntelliSense in Visual Studio 2008 (9.0) and later does not require these workarounds. Support for IntelliSense in Visual Studio 2003 (7.1) is improved with this option but is still incomplete." }; bool --omit-default-attributes { "Omit attributes with default and fixed values from serialized XML documents." }; // Naming. // NarrowString --type-naming = "knr" { "