diff options
Diffstat (limited to 'xsde/cxx/hybrid/options.cli')
-rw-r--r-- | xsde/cxx/hybrid/options.cli | 353 |
1 files changed, 353 insertions, 0 deletions
diff --git a/xsde/cxx/hybrid/options.cli b/xsde/cxx/hybrid/options.cli new file mode 100644 index 0000000..40df945 --- /dev/null +++ b/xsde/cxx/hybrid/options.cli @@ -0,0 +1,353 @@ +// file : xsde/cxx/hybrid/options.cli +// author : Boris Kolpackov <boris@codesynthesis.com> +// copyright : Copyright (c) 2005-2011 Code Synthesis Tools CC +// license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +include <vector>; +include <string>; +include <cstddef>; // std::size_t + +include <cult/types.hxx>; // NarrowString + +include <cxx/options.cli>; + +namespace CXX +{ + namespace Hybrid + { + class options: CXX::options + { + // Features. + // + bool --generate-parser + { + "Generate XML parsing code." + }; + + bool --generate-serializer + { + "Generate XML serialization code." + }; + + bool --generate-aggregate + { + "Generate parser/serializer aggregates for root elements and/or types. + See also the \cb{--root-element-*} and \cb{--root-type} options." + }; + + bool --suppress-validation + { + "Suppress the generation of validation code in parser and serializer." + }; + + bool --suppress-parser-val + { + "Suppress the generation of validation code in parser." + }; + + bool --suppress-serializer-val + { + "Suppress the generation of validation code in serializer." + }; + + bool --omit-default-attributes + { + "Omit attributes with default and fixed values from serialized + XML documents." + }; + + bool --suppress-enum + { + "Suppress the generation of the XML Schema enumeration to C++ + \cb{enum} mapping." + }; + + bool --generate-clone + { + "Generate clone functions for variable-length types. These + functions allow you to make dynamically-allocated copies of + variable-length objects." + }; + + bool --generate-detach + { + "Generate detach functions for elements and attributes of + variable-length types. These functions, for example, allow + you to move sub-trees in the object model either within the + same tree or between different trees." + }; + + std::vector<Cult::Types::NarrowString> --generate-insertion + { + "<os>", + "Generate data representation stream insertion operators for the + <os> output stream type. Repeat this option to specify more than + one stream type. The special \cb{CDR} and \cb{XDR} arguments are + recognized as ACE CDR and Sun RPC XDR stream types and the + corresponding stream wrappers provided by the XSD/e runtime are + automatically used. For custom stream types use the + \cb{--hxx-prologue*} options to include the necessary declarations." + }; + + std::vector<Cult::Types::NarrowString> --generate-extraction + { + "<is>", + "Generate data representation stream extraction operators for the + <is> input stream type. Repeat this option to specify more than + one stream type. The special \cb{CDR} and \cb{XDR} arguments are + recognized as ACE CDR and Sun RPC XDR stream types and the + corresponding stream wrappers provided by the XSD/e runtime are + automatically used. For custom stream types use the + \cb{--hxx-prologue*} options to include the necessary declarations." + }; + + bool --generate-forward + { + "Generate forward declaration file." + }; + + // 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} + option to specify which type hierarchies are polymorphic." + }; + + bool --runtime-polymorphic + { + "Generate non-polymorphic code that uses the runtime library + configured with polymorphism support." + }; + + std::vector<Cult::Types::NarrowString> --polymorphic-type + { + "<type>", + "Indicate that <type> is a root of a polymorphic type hierarchy. The + XSD/e 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 <type>." + }; + + bool --generate-typeinfo + { + "Generate custom type information querying functions for polymorphic + object model types. These functions can be used instead of the + standard C++ RTTI mechanism to determine object's type at runtime." + }; + + std::vector<Cult::Types::NarrowString> --polymorphic-schema + { + "<file>", + "Indicate that <file> contains derivations of polymorphic types that + are not otherwise visible from the schema being compiled. This + option is used to make sure that during the generation of parser + and serializer aggregates the compiler is aware of all possible + derivations of polymorphic types. Repeat this option to specify + more than one schema file." + }; + + // Reuse style. + // + bool --reuse-style-mixin + { + "Generate code that supports the mixin base parser/serializer + implementation reuse style. Note that this reuse style relies on + virtual inheritance and may result in a substantial object code + size increase for large vocabularies. By default the tiein reuse + style is used." + }; + + // Custom data/type. + // + std::vector<Cult::Types::NarrowString> --custom-data + { + "<type>", + "Add the ability to store custom data to the C++ class generated for + XML Schema type <type>. To add custom data to a nested compositor + class use the qualified name starting from the XML Schema type + containing the compositor, for example, \cb{foo::sequence::choise1}." + }; + + std::vector<Cult::Types::NarrowString> --custom-type + { + "<map>", + "Use a custom type implementation instead of the generated version. + The <map> argument is in the form + \c{\i{name}[\b{=}[\i{flags}][\b{/}[\i{type}][\b{/}[\i{base}][\b{/}\i{include}]]]]}, + where the \ci{name} component is the XML Schema type name being + customized. Optional \ci{flags} allow you to specify whether the + custom type is fixed or variable-length. The \cb{f} flag indicates + the type is fixed-length and the \cb{v} flag indicates the type is + variable-length. If omitted, the default rules are used to determine + the type length. Optional \ci{type} is a C++ type name that should + be used instead. If specified, the object model type is defined as + a \cb{typedef} alias for this C++ type. Optional \ci{base} is a C++ + name that should be given to the generated version. It is normally + used as a base for the custom implementation. Optional \ci{include} + is the header file that defines the custom implementation. It is + \cb{#include}'ed into the generated code immediately after (if + \ci{base} is specified) or instead of the generated version." + }; + + std::vector<Cult::Types::NarrowString> --custom-parser + { + "<map>", + "Use a custom parser implementation instead of the generated version. + The <map> argument is in the form + \c{\i{name}[\b{=}[\i{base}][\b{/}\i{include}]]}, where the \ci{name} + component is the XML Schema type name being customized. Optional + \ci{base} is a C++ name that should be given to the generated + version. It is normally used as a base for the custom implementation. + Optional \ci{include} is the header file that defines the custom + implementation. It is \cb{#include}'ed into the generated code + immediately after (if \ci{base} is specified) or instead of the + generated version." + }; + + std::vector<Cult::Types::NarrowString> --custom-serializer + { + "<map>", + "Use a custom serializer implementation instead of the generated + version. The <map> argument is in the form + \c{\i{name}[\b{=}[\i{base}][\b{/}\i{include}]]}, where The \ci{name} + component is the XML Schema type name being customized. Optional + \ci{base} is a C++ name that should be given to the generated + version. It is normally used as a base for the custom implementation. + Optional \ci{include} is the header file that defines the custom + implementation. It is \cb{#include}'ed into the generated code + immediately after (if \ci{base} is specified) or instead of the + generated version." + }; + + // Root element/type. + // + + bool --root-element-first + { + "Treat only the first global element as a document root. This + determines for which elements parser and serializer aggregates + are generated. By default all global elements are considered + document roots. See also the \cb{--generate-aggregate} option." + }; + + bool --root-element-last + { + "Treat only the last global element as a document root. This + determines for which elements parser and serializer aggregates + are generated. By default all global elements are considered + document roots. See also the \cb{--generate-aggregate} option." + }; + + bool --root-element-all + { + "Treat all global elements as document roots (the default behavior). + This determines for which elements parser and serializer aggregates + are generated. By explicitly specifying this option you can suppress + the warning that is issued if more than one global element is + defined. See also the \cb{--generate-aggregate} option." + }; + + bool --root-element-none + { + "Do not treat any global elements as document roots. This determines + for which elements parser and serializer aggregates are generated. + By default all global elements are considered document roots. See + also the \cb{--generate-aggregate} option." + }; + + std::vector<Cult::Types::NarrowString> --root-element + { + "<element>", + "Treat only <element> as a document root. This determines for which + elements parser and serializer aggregates are generated. Repeat + this option to specify more than one root element. See also the + \cb{--generate-aggregate} option." + }; + + std::vector<Cult::Types::NarrowString> --root-type + { + "<type>", + "Generate parser/serializer aggregate for <type>. Repeat this option + to specify more than one type. See also the \cb{--generate-aggregate} + option." + }; + + // Suffixes. + // + Cult::Types::NarrowString --pskel-type-suffix = "_pskel" + { + "<suffix>", + "Use <suffix> instead of the default \cb{_pskel} to construct the + names of generated parser skeletons." + }; + + Cult::Types::NarrowString --sskel-type-suffix = "_sskel" + { + "<suffix>", + "Use <suffix> instead of the default \cb{_sskel} to construct the + names of generated serializer skeletons." + }; + + Cult::Types::NarrowString --pskel-file-suffix = "-pskel" + { + "<suffix>", + "Use <suffix> instead of the default \cb{-pskel} to construct the + names of generated parser skeleton files." + }; + + Cult::Types::NarrowString --sskel-file-suffix = "-sskel" + { + "<suffix>", + "Use <suffix> instead of the default \cb{-sskel} to construct the + names of generated serializer skeleton files." + }; + + Cult::Types::NarrowString --pimpl-type-suffix = "_pimpl" + { + "<suffix>", + "Use <suffix> instead of the default \cb{_pimpl} to construct the + names of generated parser implementations." + }; + + Cult::Types::NarrowString --simpl-type-suffix = "_simpl" + { + "<suffix>", + "Use <suffix> instead of the default \cb{_simpl} to construct the + names of generated serializer implementations." + }; + + Cult::Types::NarrowString --pimpl-file-suffix = "-pimpl" + { + "<suffix>", + "Use <suffix> instead of the default \cb{-pimpl} to construct the + names of generated parser implementation files." + }; + + Cult::Types::NarrowString --simpl-file-suffix = "-simpl" + { + "<suffix>", + "Use <suffix> instead of the default \cb{-simpl} to construct the + names of generated serializer implementation files." + }; + + Cult::Types::NarrowString --paggr-type-suffix = "_paggs" + { + "<suffix>", + "Use <suffix> instead of the default \cb{_paggs} to construct the + names of generated parser aggregates." + }; + + Cult::Types::NarrowString --saggr-type-suffix = "_saggr" + { + "<suffix>", + "Use <suffix> instead of the default \cb{_saggr} to construct the + names of generated serializer aggregates." + }; + }; + } +} |