aboutsummaryrefslogtreecommitdiff
path: root/xsde/cxx/hybrid/cli.hxx
blob: f69724736547986820c6dad2012d1a9d803df084 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
// file      : xsde/cxx/hybrid/cli.hxx
// author    : Boris Kolpackov <boris@codesynthesis.com>
// copyright : Copyright (c) 2005-2011 Code Synthesis Tools CC
// license   : GNU GPL v2 + exceptions; see accompanying LICENSE file

#ifndef CXX_HYBRID_CLI_HXX
#define CXX_HYBRID_CLI_HXX

#include <cult/types.hxx>

#include <cult/containers/vector.hxx>

#include <cult/cli/options.hxx>
#include <cult/cli/options-spec.hxx>

namespace CXX
{
  namespace Hybrid
  {
    namespace CLI
    {
      using namespace Cult::Types;

      typedef Char const Key[];

      extern Key char_encoding;
      extern Key no_stl;
      extern Key no_iostream;
      extern Key no_exceptions;
      extern Key no_long_long;
      extern Key generate_parser;
      extern Key generate_serializer;
      extern Key generate_aggregate;
      extern Key suppress_validation;
      extern Key suppress_parser_val;
      extern Key suppress_serializer_val;
      extern Key omit_default_attributes;
      extern Key suppress_enum;
      extern Key generate_clone;
      extern Key generate_detach;
      extern Key generate_insertion;
      extern Key generate_extraction;
      extern Key generate_inline;
      extern Key generate_forward;
      extern Key generate_xml_schema;
      extern Key extern_xml_schema;
      extern Key suppress_reset;
      extern Key custom_allocator;
      extern Key generate_polymorphic;
      extern Key runtime_polymorphic;
      extern Key polymorphic_type;
      extern Key generate_typeinfo;
      extern Key polymorphic_schema;
      extern Key reuse_style_mixin;
      extern Key custom_data;
      extern Key custom_type;
      extern Key custom_parser;
      extern Key custom_serializer;
      extern Key root_element_first;
      extern Key root_element_last;
      extern Key root_element_all;
      extern Key root_element_none;
      extern Key root_element;
      extern Key root_type;
      extern Key output_dir;
      extern Key pskel_type_suffix;
      extern Key sskel_type_suffix;
      extern Key pskel_file_suffix;
      extern Key sskel_file_suffix;
      extern Key pimpl_type_suffix;
      extern Key simpl_type_suffix;
      extern Key pimpl_file_suffix;
      extern Key simpl_file_suffix;
      extern Key paggr_type_suffix;
      extern Key saggr_type_suffix;
      extern Key namespace_map;
      extern Key namespace_regex;
      extern Key namespace_regex_trace;
      extern Key reserved_name;
      extern Key include_with_brackets;
      extern Key include_prefix;
      extern Key include_regex;
      extern Key include_regex_trace;
      extern Key guard_prefix;
      extern Key hxx_suffix;
      extern Key ixx_suffix;
      extern Key cxx_suffix;
      extern Key fwd_suffix;
      extern Key hxx_regex;
      extern Key ixx_regex;
      extern Key cxx_regex;
      extern Key fwd_regex;
      extern Key hxx_prologue;
      extern Key ixx_prologue;
      extern Key cxx_prologue;
      extern Key fwd_prologue;
      extern Key prologue;
      extern Key hxx_epilogue;
      extern Key ixx_epilogue;
      extern Key cxx_epilogue;
      extern Key fwd_epilogue;
      extern Key epilogue;
      extern Key hxx_prologue_file;
      extern Key ixx_prologue_file;
      extern Key cxx_prologue_file;
      extern Key fwd_prologue_file;
      extern Key prologue_file;
      extern Key hxx_epilogue_file;
      extern Key ixx_epilogue_file;
      extern Key cxx_epilogue_file;
      extern Key fwd_epilogue_file;
      extern Key epilogue_file;
      extern Key show_anonymous;
      extern Key show_sloc;
      extern Key proprietary_license;

      typedef Cult::CLI::Options<
        char_encoding,            NarrowString,
        no_stl,                   Boolean,
        no_iostream,              Boolean,
        no_exceptions,            Boolean,
        no_long_long,             Boolean,
        generate_parser,          Boolean,
        generate_serializer,      Boolean,
        generate_aggregate,       Boolean,
        suppress_validation,      Boolean,
        suppress_parser_val,      Boolean,
        suppress_serializer_val,  Boolean,
        omit_default_attributes,  Boolean,
        suppress_enum,            Boolean,
        generate_clone,           Boolean,
        generate_detach,          Boolean,
        generate_insertion,       Cult::Containers::Vector<NarrowString>,
        generate_extraction,      Cult::Containers::Vector<NarrowString>,
        generate_inline,          Boolean,
        generate_forward,         Boolean,
        generate_xml_schema,      Boolean,
        extern_xml_schema,        NarrowString,
        suppress_reset,           Boolean,
        custom_allocator,         Boolean,
        generate_polymorphic,     Boolean,
        runtime_polymorphic,      Boolean,
        polymorphic_type,         Cult::Containers::Vector<NarrowString>,
        generate_typeinfo,        Boolean,
        polymorphic_schema,       Cult::Containers::Vector<NarrowString>,
        reuse_style_mixin,        Boolean,
        custom_data,              Cult::Containers::Vector<NarrowString>,
        custom_type,              Cult::Containers::Vector<NarrowString>,
        custom_parser,            Cult::Containers::Vector<NarrowString>,
        custom_serializer,        Cult::Containers::Vector<NarrowString>,
        root_element_first,       Boolean,
        root_element_last,        Boolean,
        root_element_all,         Boolean,
        root_element_none,        Boolean,
        root_element,             Cult::Containers::Vector<NarrowString>,
        root_type,                Cult::Containers::Vector<NarrowString>,
        output_dir,               NarrowString,
        pskel_type_suffix,        NarrowString,
        sskel_type_suffix,        NarrowString,
        pskel_file_suffix,        NarrowString,
        sskel_file_suffix,        NarrowString,
        pimpl_type_suffix,        NarrowString,
        simpl_type_suffix,        NarrowString,
        pimpl_file_suffix,        NarrowString,
        simpl_file_suffix,        NarrowString,
        paggr_type_suffix,        NarrowString,
        saggr_type_suffix,        NarrowString,
        namespace_map,            Cult::Containers::Vector<NarrowString>,
        namespace_regex,          Cult::Containers::Vector<NarrowString>,
        namespace_regex_trace,    Boolean,
        reserved_name,            Cult::Containers::Vector<NarrowString>,
        include_with_brackets,    Boolean,
        include_prefix,           NarrowString,
        include_regex,            Cult::Containers::Vector<NarrowString>,
        include_regex_trace,      Boolean,
        guard_prefix,             NarrowString,
        hxx_suffix,               NarrowString,
        ixx_suffix,               NarrowString,
        cxx_suffix,               NarrowString,
        fwd_suffix,               NarrowString,
        hxx_regex,                Cult::Containers::Vector<NarrowString>,
        ixx_regex,                Cult::Containers::Vector<NarrowString>,
        cxx_regex,                Cult::Containers::Vector<NarrowString>,
        fwd_regex,                NarrowString,
        hxx_prologue,             Cult::Containers::Vector<NarrowString>,
        ixx_prologue,             Cult::Containers::Vector<NarrowString>,
        cxx_prologue,             Cult::Containers::Vector<NarrowString>,
        fwd_prologue,             Cult::Containers::Vector<NarrowString>,
        prologue,                 Cult::Containers::Vector<NarrowString>,
        hxx_epilogue,             Cult::Containers::Vector<NarrowString>,
        ixx_epilogue,             Cult::Containers::Vector<NarrowString>,
        cxx_epilogue,             Cult::Containers::Vector<NarrowString>,
        fwd_epilogue,             Cult::Containers::Vector<NarrowString>,
        epilogue,                 Cult::Containers::Vector<NarrowString>,
        hxx_prologue_file,        Cult::Containers::Vector<NarrowString>,
        ixx_prologue_file,        Cult::Containers::Vector<NarrowString>,
        cxx_prologue_file,        Cult::Containers::Vector<NarrowString>,
        fwd_prologue_file,        NarrowString,
        prologue_file,            Cult::Containers::Vector<NarrowString>,
        hxx_epilogue_file,        Cult::Containers::Vector<NarrowString>,
        ixx_epilogue_file,        Cult::Containers::Vector<NarrowString>,
        cxx_epilogue_file,        Cult::Containers::Vector<NarrowString>,
        fwd_epilogue_file,        NarrowString,
        epilogue_file,            Cult::Containers::Vector<NarrowString>,
        show_anonymous,           Boolean,
        show_sloc,                Boolean,
        proprietary_license,      Boolean

        > Options;

      struct OptionsSpec: Cult::CLI::OptionsSpec<Options> {};
    }
  }
}

#endif // CXX_HYBRID_CLI_HXX