diff options
Diffstat (limited to 'odb/options.cli')
-rw-r--r-- | odb/options.cli | 1082 |
1 files changed, 0 insertions, 1082 deletions
diff --git a/odb/options.cli b/odb/options.cli deleted file mode 100644 index bb8797b..0000000 --- a/odb/options.cli +++ /dev/null @@ -1,1082 +0,0 @@ -// file : odb/options.cli -// license : GNU GPL v3; see accompanying LICENSE file - -include <set>; -include <vector>; -include <string>; -include <cstddef>; -include <cstdint>; - -include <odb/option-types.hxx>; - -class options -{ - // - // Wrapper options. These are not passed to the plugin. - // - - std::uint64_t --build2-metadata; // Leave undocumented/hidden. - - bool --help {"Print usage information and exit."}; - bool --version {"Print version and exit."}; - - // - // C++ preprocessor options. Also not passed to the plugin. - // - std::vector<std::string> -I - { - "<dir>", - "Add <dir> to the beginning of the list of directories to be searched - for included header files." - }; - - std::vector<std::string> -D - { - "<name>[=<def>]", - "Define macro <name> with definition <def>. If definition is omitted, - define <name> to be 1." - }; - - std::vector<std::string> -U - { - "<name>", - "Cancel any previous definitions of macro <name>, either built-in or - provided with the \cb{-D} option." - }; - - // - // Plugin options. - // - std::vector< ::database> --database | -d - { - "<db>", - "Generate code for the <db> database. Valid values are \cb{mssql}, - \cb{mysql}, \cb{oracle}, \cb{pgsql}, \cb{sqlite}, and \cb{common} - (multi-database mode only)." - }; - - ::multi_database --multi-database | -m = ::multi_database::disabled - { - "<type>", - "Enable multi-database support and specify its type. Valid values - for this option are \cb{static} and \cb{dynamic}. - - In the multi-database mode, options that determine the kind (for - example, \cb{--schema-format}), names (for example, - \cb{--odb-file-suffix}), or content (for example, prologue and - epilogue options) of the output files can be prefixed with the - database name followed by a colon, for example, \cb{mysql:value}. - This restricts the value of such an option to only apply to - generated files corresponding to this database." - }; - - ::database --default-database - { - "<db>", - "When static multi-database support is used, specify the database that - should be made the default. When dynamic multi-database support is used, - \cb{common} is always made the default database." - }; - - bool --generate-query | -q - { - "Generate query support code. Without this support you cannot use views - and can only load objects via their ids." - }; - - bool --generate-prepared - { - "Generate prepared query execution support code." - }; - - bool --omit-unprepared - { - "Omit un-prepared (once-off) query execution support code." - }; - - bool --generate-session | -e - { - "Generate session support code. With this option session support will - be enabled by default for all the persistent classes except those for - which it was explicitly disabled using the \cb{db session} pragma." - }; - - bool --generate-schema | -s - { - "Generate the database schema. The database schema contains SQL - statements that create database tables necessary to store persistent - classes defined in the file being compiled. Note that by applying - this schema, all the existing information stored in such tables will - be lost. - - Depending on the database being used (\cb{--database} option), the - schema is generated either as a standalone SQL file or embedded into - the generated C++ code. By default the SQL file is generated for - the MySQL, PostgreSQL, Oracle, and Microsoft SQL Server databases - and the schema is embedded into the C++ code for the SQLite database. - Use the \cb{--schema-format} option to alter the default schema format. - - If database schema evolution support is enabled (that is, the object - model version is specified), then this option also triggers the - generation of database schema migration statements, again either as - standalong SQL files or embedded into the generated C++ code. You can - suppress the generation of schema migration statements by specifying - the \cb{--suppress-migration} option." - }; - - bool --generate-schema-only - { - "Generate only the database schema. Note that this option is only valid - when generating schema as a standalone SQL file (see \cb{--schema-format} - for details)." - }; - - bool --suppress-migration - { - "Suppress the generation of database schema migration statements." - }; - - bool --suppress-schema-version - { - "Suppress the generation of schema version table. If you specify this - option then you are also expected to manually specify the database - schema version and migration state at runtime using the - \cb{odb::database::schema_version()} function." - }; - - database_map<qname> --schema-version-table - { - "<name>", - "Specify the alternative schema version table name instead of the default - \cb{schema_version}. If you specify this option then you are also - expected to manually specify the schema version table name at runtime - using the \cb{odb::database::schema_version_table()} function. The table - name can be qualified." - }; - - database_map<std::set< ::schema_format> > --schema-format - { - "<format>", - "Generate the database schema in the specified format. Pass \cb{sql} as - <format> to generate the database schema as a standalone SQL file or - pass \cb{embedded} to embed the schema into the generated C++ code. - The \cb{separate} value is similar to \cb{embedded} except the schema - creation code is generated into a separate C++ file (\cb{name-schema.cxx} - by default). This value is primarily useful if you want to place the - schema creation functionality into a separate program or library. - Repeat this option to generate the same database schema in multiple - formats." - }; - - bool --omit-drop - { - "Omit \cb{DROP} statements from the generated database schema." - }; - - bool --omit-create - { - "Omit \cb{CREATE} statements from the generated database schema." - }; - - database_map<std::string> --schema-name - { - "<name>", - "Use <name> as the database schema name. Schema names are primarily - used to distinguish between multiple embedded schemas in the schema - catalog. They are not to be confused with database schemas (database - namespaces) which are specified with the \cb{--schema} option. If - this option is not specified, the empty name, which is the default - schema name, is used." - }; - - database_map<deferrable> --fkeys-deferrable-mode - { - "<m>", - "Use constraint checking mode <m> in foreign keys generated for object - relationships. Valid values for this option are \cb{not_deferrable}, - \cb{immediate}, and \cb{deferred} (default). MySQL and SQL Server do - not support deferrable foreign keys and for these databases such keys - are generated commented out. Other foreign keys generated by the ODB - compiler (such as the ones used to support containers and polymorphic - hierarchies) are always generated as not deferrable. - - Note also that if you use either \cb{not_deferrable} or \cb{immediate} - mode, then the order in which you persist, update, and erase objects - within a transaction becomes important." - }; - - std::string --default-pointer = "*" - { - "<ptr>", - "Use <ptr> as the default pointer for persistent objects and views. - Objects and views that do not have a pointer assigned with the - \cb{db pointer} pragma will use this pointer by default. The value - of this option can be '\cb{*}' which denotes the raw pointer and is - the default, or qualified name of a smart pointer class template, - for example, \cb{std::shared_ptr}. In the latter case, the ODB compiler - constructs the object or view pointer by adding a single template - argument of the object or view type to the qualified name, for example - \cb{std::shared_ptr<object>}. The ODB runtime uses object and view - pointers to return, and, in case of objects, pass and cache - dynamically allocated instances of object and view types. - - Except for the raw pointer and the standard smart pointers defined - in the \cb{<memory>} header file, you are expected to include the - definition of the default pointer at the beginning of the generated - header file. There are two common ways to achieve this: you can either - include the necessary header in the file being compiled or you can use - the \cb{--hxx-prologue} option to add the necessary \cb{#include} - directive to the generated code." - }; - - std::string --session-type = "odb::session" - { - "<type>", - "Use <type> as the alternative session type instead of the default - \cb{odb::session}. This option can be used to specify a custom - session implementation to be use by the persistent classes. Note - that you will also need to include the definition of the custom - session type into the generated header file. This is normally - achieved with the \cb{--hxx-prologue*} options." - }; - - // The following option is "fake" in that it is actually handled by - // argv_file_scanner. We have it here to get the documentation. - // - std::string --profile | -p - { - "<name>", - "Specify a profile that should be used during compilation. A - profile is an options file. The ODB compiler first looks for - a database-specific version with the name constructed by appending - the \cb{-}\ci{database}\cb{.options} suffix to <name>, where - \ci{database} is the database name as specified with the - \cb{--database} option. If this file is not found, then the - ODB compiler looks for a database-independant version with the - name constructed by appending just the \cb{.options} suffix. - - The profile options files are searched for in the same set of - directories as C++ headers included with the \cb{#include <...>} - directive (built-in paths plus those specified with the \cb{-I} - options). The options file is first searched for in the directory - itself and then in its \cb{odb/} subdirectory. - - For the format of the options file refer to the \cb{--options-file} - option below. You can repeat this option to specify more than one - profile." - }; - - bool --at-once - { - "Generate code for all the input files as well as for all the files that - they include at once. The result is a single set of source/schema files - that contain all the generated code. If more than one input file is - specified together with this option, then the \cb{--input-name} option - must also be specified in order to provide the base name for the output - files. In this case, the directory part of such a base name is used as - the location of the combined file. This can be important for the - \cb{#include} directive resolution." - }; - - database_map<qname> --schema - { - "<schema>", - "Specify a database schema (database namespace) that should be - assigned to the persistent classes in the file being compiled. - Database schemas are not to be confused with database schema - names (schema catalog names) which are specified with the - \cb{--schema-name} option." - }; - - // Export control. - // - database_map<std::string> --export-symbol - { - "<symbol>", - "Insert <symbol> in places where DLL export/import control statements - (\cb{__declspec(dllexport/dllimport)}) are necessary. See also the - \cb{--extern-symbol} option below." - }; - - database_map<std::string> --extern-symbol - { - "<symbol>", - "If <symbol> is defined, insert it in places where a template - instantiation must be declared \cb{extern}. This option is normally - used together with \cb{--export-symbol} when both multi-database - support and queries are enabled." - }; - - // Language. - // - cxx_version --std = cxx_version::cxx98 - { - "<version>", - "Specify the C++ standard that should be used during compilation. - Valid values are \cb{c++98} (default), \cb{c++11}, and \cb{c++14}." - }; - - // Diagnostics. - // - bool --warn-hard-add - { - "Warn about hard-added data members." - }; - - bool --warn-hard-delete - { - "Warn about hard-deleted data members and persistent classes." - }; - - bool --warn-hard - { - "Warn about both hard-added and hard-deleted data members and - persistent classes." - }; - - // Output. - // - std::string --output-dir | -o - { - "<dir>", - "Write the generated files to <dir> instead of the current directory." - }; - - std::string --input-name - { - "<name>", - "Use <name> instead of the input file to derive the names of the - generated files. If the \cb{--at-once} option is specified, then - the directory part of <name> is used as the location of the - combined file. Refer to the \cb{--at-once} option for details." - }; - - database_map<std::string> --changelog - { - "<file>", - "Read/write changelog from/to <file> instead of the default changelog - file. The default changelog file name is derived from the input file - name and it is placed into the same directory as the input file. Note - that the \cb{--output-dir} option does not affect the changelog file - location. In other words, by default, the changelog file is treated - as another input rather than output even though the ODB compiler may - modify it. Use the \cb{--changelog-in} and \cb{--changelog-out} - options to specify different input and output chaneglog files." - }; - - database_map<std::string> --changelog-in - { - "<file>", - "Read changelog from <file> instead of the default changelog file. If - this option is specified, then you must also specify the output - chanegelog file with \cb{--changelog-out}." - }; - - database_map<std::string> --changelog-out - { - "<file>", - "Write changelog to <file> instead of the default changelog file. If - this option is specified, then you must also specify the input - chanegelog file with \cb{--changelog-in}." - }; - - database_map<std::string> --changelog-dir - { - "<dir>", - "Use <dir> instead of the input file directory as the changelog file - directory. This directory is also added to changelog files specified - with the \cb{--changelog}, \cb{--changelog-in}, and \cb{--changelog-in} - options unless they are absolute paths." - }; - - bool --init-changelog - { - "Force re-initialization of the changelog even if one exists (all the - existing change history will be lost). This option is primarily useful - for automated testing." - }; - - database_map<std::string> --odb-file-suffix - { - "<suffix>", - "Use <suffix> to construct the names of the generated C++ files. In - the single-database mode the default value for this option is \cb{-odb}. - In the multi-database mode it is \cb{-odb} for the files corresponding - to the \cb{common} database and \c{\b{-odb-}\i{db}} (where \ci{db} is - the database name) for other databases." - }; - - database_map<std::string> --sql-file-suffix - { - "<suffix>", - "Use <suffix> to construct the name of the generated schema SQL file. - In the single-database mode by default no suffix is used. In the - multi-database mode the default value for this option is - \c{\b{-}\i{db}} (where \ci{db} is the database name)." - }; - - database_map<std::string> --schema-file-suffix - { - "<suffix>", - "Use <suffix> to construct the name of the generated schema C++ source - file. In the single-database mode the default value for this option is - \cb{-schema}. In the multi-database mode it is \c{\b{-schema-}\i{db}} - (where \ci{db} is the database name). See the \cb{--schema-format} - option for details." - }; - - database_map<std::string> --changelog-file-suffix - { - "<sfx>", - "Use <sfx> to construct the name of the changelog file. In the - single-database mode by default no suffix is used. In the - multi-database mode the default value for this option is - \c{\b{-}\i{db}} (where \ci{db} is the database name)." - }; - - std::string --hxx-suffix = ".hxx" - { - "<suffix>", - "Use <suffix> instead of the default \cb{.hxx} to construct the name of - the generated C++ header file." - }; - - std::string --ixx-suffix = ".ixx" - { - "<suffix>", - "Use <suffix> instead of the default \cb{.ixx} to construct the name of - the generated C++ inline file." - }; - - std::string --cxx-suffix = ".cxx" - { - "<suffix>", - "Use <suffix> instead of the default \cb{.cxx} to construct the name of - the generated C++ source file." - }; - - std::string --sql-suffix = ".sql" - { - "<suffix>", - "Use <suffix> instead of the default \cb{.sql} to construct the name of - the generated database schema file." - }; - - std::string --changelog-suffix = ".xml" - { - "<suffix>", - "Use <suffix> instead of the default \cb{.xml} to construct the name of - the changelog file." - }; - - // Prologues. - // - database_map<std::vector<std::string> > --hxx-prologue - { - "<text>", - "Insert <text> at the beginning of the generated C++ header file." - }; - - database_map<std::vector<std::string> > --ixx-prologue - { - "<text>", - "Insert <text> at the beginning of the generated C++ inline file." - }; - - database_map<std::vector<std::string> > --cxx-prologue - { - "<text>", - "Insert <text> at the beginning of the generated C++ source file." - }; - - database_map<std::vector<std::string> > --schema-prologue - { - "<text>", - "Insert <text> at the beginning of the generated schema C++ source file." - }; - - database_map<std::vector<std::string> > --sql-prologue - { - "<text>", - "Insert <text> at the beginning of the generated database schema file." - }; - - database_map<std::vector<std::string> > --migration-prologue - { - "<text>", - "Insert <text> at the beginning of the generated database migration file." - }; - - // Interludes. - // - database_map<std::vector<std::string> > --sql-interlude - { - "<text>", - "Insert <text> after all the \cb{DROP} and before any \cb{CREATE} - statements in the generated database schema file." - }; - - // Epilogues. - // - database_map<std::vector<std::string> > --hxx-epilogue - { - "<text>", - "Insert <text> at the end of the generated C++ header file." - }; - - database_map<std::vector<std::string> > --ixx-epilogue - { - "<text>", - "Insert <text> at the end of the generated C++ inline file." - }; - - database_map<std::vector<std::string> > --cxx-epilogue - { - "<text>", - "Insert <text> at the end of the generated C++ source file." - }; - - database_map<std::vector<std::string> > --schema-epilogue - { - "<text>", - "Insert <text> at the end of the generated schema C++ source file." - }; - - database_map<std::vector<std::string> > --sql-epilogue - { - "<text>", - "Insert <text> at the end of the generated database schema file." - }; - - database_map<std::vector<std::string> > --migration-epilogue - { - "<text>", - "Insert <text> at the end of the generated database migration file." - }; - - // Prologue files. - // - database_map<std::vector<std::string> > --hxx-prologue-file - { - "<file>", - "Insert the content of <file> at the beginning of the generated C++ - header file." - }; - - database_map<std::vector<std::string> > --ixx-prologue-file - { - "<file>", - "Insert the content of <file> at the beginning of the generated C++ - inline file." - }; - - database_map<std::vector<std::string> > --cxx-prologue-file - { - "<file>", - "Insert the content of <file> at the beginning of the generated C++ - source file." - }; - - database_map<std::vector<std::string> > --schema-prologue-file - { - "<file>", - "Insert the content of <file> at the beginning of the generated schema - C++ source file." - }; - - database_map<std::vector<std::string> > --sql-prologue-file - { - "<file>", - "Insert the content of <file> at the beginning of the generated - database schema file." - }; - - database_map<std::vector<std::string> > --migration-prologue-file - { - "<f>", - "Insert the content of file <f> at the beginning of the generated database - migration file." - }; - - // Interlude files. - // - database_map<std::vector<std::string> > --sql-interlude-file - { - "<file>", - "Insert the content of <file> after all the \cb{DROP} and before any - \cb{CREATE} statements in the generated database schema file." - }; - - // Epilogue files. - // - database_map<std::vector<std::string> > --hxx-epilogue-file - { - "<file>", - "Insert the content of <file> at the end of the generated C++ header - file." - }; - - database_map<std::vector<std::string> > --ixx-epilogue-file - { - "<file>", - "Insert the content of <file> at the end of the generated C++ inline - file." - }; - - database_map<std::vector<std::string> > --cxx-epilogue-file - { - "<file>", - "Insert the content of <file> at the end of the generated C++ source - file." - }; - - database_map<std::vector<std::string> > --schema-epilogue-file - { - "<file>", - "Insert the content of <file> at the end of the generated schema C++ - source file." - }; - - database_map<std::vector<std::string> > --sql-epilogue-file - { - "<file>", - "Insert the content of <file> at the end of the generated database - schema file." - }; - - database_map<std::vector<std::string> > --migration-epilogue-file - { - "<f>", - "Insert the content of file <f> at the end of the generated database - migration file." - }; - - // ODB compilation prologue/epilogue. - // - database_map<std::vector<std::string> > --odb-prologue - { - "<text>", - "Compile <text> before the input header file. This option allows you - to add additional declarations, such as custom traits specializations, - to the ODB compilation process." - }; - - database_map<std::vector<std::string> > --odb-prologue-file - { - "<file>", - "Compile <file> contents before the input header file. Prologue files - are compiled after all the prologue text fragments (\cb{--odb-prologue} - option)." - }; - - database_map<std::vector<std::string> > --odb-epilogue - { - "<text>", - "Compile <text> after the input header file. This option allows you - to add additional declarations, such as custom traits specializations, - to the ODB compilation process." - }; - - database_map<std::vector<std::string> > --odb-epilogue-file - { - "<file>", - "Compile <file> contents after the input header file. Epilogue files - are compiled after all the epilogue text fragments (\cb{--odb-epilogue} - option)." - }; - - // SQL names. - // - database_map<std::string> --table-prefix - { - "<prefix>", - "Add <prefix> to table names and, for databases that have global index - and/or foreign key names, to those names as well. The prefix is added to - both names that were specified with the \cb{db table} and \cb{db index} - pragmas and those that were automatically derived from class and data - member names. If you require a separator, such as an underscore, - between the prefix and the name, then you should include it into the - prefix value." - }; - - database_map<std::string> --index-suffix - { - "<suffix>", - "Use <suffix> instead of the default \cb{_i} to construct index names. - The suffix is only added to names that were automatically derived from - data member names. If you require a separator, such as an underscore, - between the name and the suffix, then you should include it into the - suffix value." - }; - - database_map<std::string> --fkey-suffix - { - "<suffix>", - "Use <suffix> instead of the default \cb{_fk} to construct foreign key - names. If you require a separator, such as an underscore, between the - name and the suffix, then you should include it into the suffix value." - }; - - database_map<std::string> --sequence-suffix - { - "<suffix>", - "Use <suffix> instead of the default \cb{_seq} to construct sequence - names. If you require a separator, such as an underscore, between the - name and the suffix, then you should include it into the suffix value." - }; - - database_map<name_case> --sql-name-case - { - "<case>", - "Convert all automatically-derived SQL names to upper or lower case. - Valid values for this option are \cb{upper} and \cb{lower}." - }; - - database_map<std::vector<std::string> > --table-regex - { - "<regex>", - "Add <regex> to the list of regular expressions that is used to - transform automatically-derived table names. See the SQL NAME - TRANSFORMATIONS section below for details." - }; - - database_map<std::vector<std::string> > --column-regex - { - "<regex>", - "Add <regex> to the list of regular expressions that is used to - transform automatically-derived column names. See the SQL NAME - TRANSFORMATIONS section below for details." - }; - - database_map<std::vector<std::string> > --index-regex - { - "<regex>", - "Add <regex> to the list of regular expressions that is used to - transform automatically-derived index names. See the SQL NAME - TRANSFORMATIONS section below for details." - }; - - database_map<std::vector<std::string> > --fkey-regex - { - "<regex>", - "Add <regex> to the list of regular expressions that is used to - transform automatically-derived foreign key names. See the SQL NAME - TRANSFORMATIONS section below for details." - }; - - database_map<std::vector<std::string> > --sequence-regex - { - "<regex>", - "Add <regex> to the list of regular expressions that is used to - transform automatically-derived sequence names. See the SQL NAME - TRANSFORMATIONS section below for details." - }; - - database_map<std::vector<std::string> > --statement-regex - { - "<regex>", - "Add <regex> to the list of regular expressions that is used to - transform automatically-derived prepared statement names. See - the SQL NAME TRANSFORMATIONS section below for details." - }; - - database_map<std::vector<std::string> > --sql-name-regex - { - "<regex>", - "Add <regex> to the list of regular expressions that is used to - transform all automatically-derived SQL names. See the SQL NAME - TRANSFORMATIONS section below for details." - }; - - bool --sql-name-regex-trace - { - "Trace the process of applying regular expressions specified with the - SQL name \cb{--*-regex} options. Use this option to find out why your - regular expressions don't do what you expected them to do." - }; - - // Accessor/modifier options. - // - std::vector<std::string> --accessor-regex - { - "<regex>", - "Add <regex> to the list of regular expressions used to transform - data member names to function names when searching for a suitable - accessor function. The argument to this option is a Perl-like regular - expression in the form \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. - Any character can be used as a delimiter instead of '\cb{/}' and the - delimiter can be escaped inside \ci{pattern} and \ci{replacement} - with a backslash (\cb{\\}). You can specify multiple regular - expressions by repeating this option. - - All the regular expressions are tried in the order specified and - the first expression that produces a suitable accessor function is - used. Each expression is tried twice: first with the actual member - name and then with the member's \i{public name} which is obtained by - removing the common member name decorations, such as leading and - trailing underscores, the \cb{m_} prefix, etc. The ODB compiler also - includes a number of built-in expressions for commonly used accessor - names, such as \cb{get_foo}, \cb{getFoo}, \cb{getfoo}, and just - \cb{foo}. The built-in expressions are tried last. - - As an example, the following expression transforms data members with - public names in the form \cb{foo} to accessor names in the form - \cb{GetFoo}: - - \cb{/(.+)/Get\\u$1/} - - See also the REGEX AND SHELL QUOTING section below." - }; - - bool --accessor-regex-trace - { - "Trace the process of applying regular expressions specified with the - \cb{--accessor-regex} option. Use this option to find out why your - regular expressions don't do what you expected them to do." - }; - - std::vector<std::string> --modifier-regex - { - "<regex>", - "Add <regex> to the list of regular expressions used to transform - data member names to function names when searching for a suitable - modifier function. The argument to this option is a Perl-like regular - expression in the form \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. - Any character can be used as a delimiter instead of '\cb{/}' and the - delimiter can be escaped inside \ci{pattern} and \ci{replacement} - with a backslash (\cb{\\}). You can specify multiple regular - expressions by repeating this option. - - All the regular expressions are tried in the order specified and - the first expression that produces a suitable modifier function is - used. Each expression is tried twice: first with the actual member - name and then with the member's \i{public name} which is obtained by - removing the common member name decorations, such as leading and - trailing underscores, the \cb{m_} prefix, etc. The ODB compiler also - includes a number of built-in expressions for commonly used modifier - names, such as \cb{set_foo}, \cb{setFoo}, \cb{setfoo}, and just - \cb{foo}. The built-in expressions are tried last. - - As an example, the following expression transforms data members with - public names in the form \cb{foo} to modifier names in the form - \cb{SetFoo}: - - \cb{/(.+)/Set\\u$1/} - - See also the REGEX AND SHELL QUOTING section below." - }; - - bool --modifier-regex-trace - { - "Trace the process of applying regular expressions specified with the - \cb{--modifier-regex} option. Use this option to find out why your - regular expressions don't do what you expected them to do." - }; - - // Include options. - // - bool --include-with-brackets - { - "Use angle brackets (<>) instead of quotes (\"\") in the generated - \cb{#include} directives." - }; - - std::string --include-prefix - { - "<prefix>", - "Add <prefix> to the generated \cb{#include} directive paths." - }; - - std::vector<std::string> --include-regex - { - "<regex>", - "Add <regex> to the list of regular expressions used to transform - generated \cb{#include} directive paths. The argument to this option - is a Perl-like regular expression in the form - \c{\b{/}\i{pattern}\b{/}\i{replacement}\b{/}}. Any character can be - used as a delimiter instead of '\cb{/}' and the delimiter can be escaped - inside \ci{pattern} and \ci{replacement} with a backslash (\cb{\\}). - You can specify multiple regular expressions by repeating this option. - All the regular expressions are tried in the order specified and the - first expression that matches is used. - - As an example, the following expression transforms include paths in - the form \cb{foo/bar-odb.h} to paths in the form - \cb{foo/generated/bar-odb.h}: - - \cb{%foo/(.+)-odb.h%foo/generated/$1-odb.h%} - - See also the REGEX AND SHELL QUOTING section below." - }; - - bool --include-regex-trace - { - "Trace the process of applying regular expressions specified with the - \cb{--include-regex} option. Use this option to find out why your - regular expressions don't do what you expected them to do." - }; - - std::string --guard-prefix - { - "<prefix>", - "Add <prefix> to the generated header inclusion guards. The prefix is - transformed to upper case and characters that are illegal in a - preprocessor macro name are replaced with underscores." - }; - - bool --show-sloc - { - "Print the number of generated physical source lines of code (SLOC)." - }; - - std::size_t --sloc-limit - { - "<num>", - "Check that the number of generated physical source lines of code (SLOC) - does not exceed <num>." - }; - - // The following option is "fake" in that it is actually handled by - // argv_file_scanner. We have it here to get the documentation. - // - std::string --options-file - { - "<file>", - "Read additional options from <file>. Each option should appear on a - separate line optionally followed by space or equal sign (\cb{=}) and an - option value. Empty lines and lines starting with \cb{#} are ignored. - Option values can be enclosed in double (\cb{\"}) or single (\cb{'}) - quotes to preserve leading and trailing whitespaces as well as to specify - empty values. If the value itself contains trailing or leading quotes, - enclose it with an extra pair of quotes, for example \cb{'\"x\"'}. - Non-leading and non-trailing quotes are interpreted as being part of the - option value. - - The semantics of providing options in a file is equivalent to providing - the same set of options in the same order on the command line at the - point where the \cb{--options-file} option is specified except that - the shell escaping and quoting is not required. Repeat this option - to specify more than one options file." - }; - - std::vector<std::string> -x - { - "<option>", - "Pass <option> to the underlying C++ compiler (\cb{g++}). The <option> - value that doesn't start with '\cb{-}' is considered the \cb{g++} - executable name." - }; - - bool -v {"Print the commands executed to run the stages of compilation."}; - - bool --trace {"Trace the compilation process."}; - - // - // MySQL-specific options. - // - - std::string --mysql-engine = "InnoDB" - { - "<engine>", - "Use <engine> instead of the default \cb{InnoDB} in the generated - database schema file. For more information on the storage engine - options see the MySQL documentation. If you would like to use the - database-default engine, pass \cb{default} as the value for this - option." - }; - - // - // SQLite-specific options. - // - - bool --sqlite-override-null - { - "Make all columns in the generated database schema allow \cb{NULL} - values. This is primarily useful in schema migration since SQLite - does not support dropping of columns. By making all columns \cb{NULL} - we can later \"delete\" them by setting their values to \cb{NULL}. - Note that this option overrides even the \cb{not_null} pragma." - }; - - bool --sqlite-lax-auto-id - { - "Do not force monotonically increasing automatically-assigned - object ids. In this mode the generated database schema omits the - \cb{AUTOINCREMENT} keyword which results in faster object persistence - but may lead to automatically-assigned ids not being in a strictly - ascending order. Refer to the SQLite documentation for details." - }; - - // - // PostgreSQL-specific options. - // - - ::pgsql_version --pgsql-server-version (7, 4) - { - "<ver>", - "Specify the minimum PostgreSQL server version with which the generated - C++ code and schema will be used. This information is used to enable - version-specific optimizations and workarounds in the generated C++ - code and schema. The version must be in the \c{\i{major}\b{.}\i{minor}} - form, for example, \cb{9.1}. If this option is not specified, then - \cb{7.4} or later is assumed." - }; - - // - // Oracle-specific options. - // - - ::oracle_version --oracle-client-version (10, 1) - { - "<ver>", - "Specify the minimum Oracle client library (OCI) version with which the - generated C++ code will be linked. This information is used to enable - version-specific optimizations and workarounds in the generated C++ - code. The version must be in the \c{\i{major}\b{.}\i{minor}} form, - for example, \cb{11.2}. If this option is not specified, then - \cb{10.1} or later is assumed." - }; - - bool --oracle-warn-truncation - { - "Warn about SQL names that are longer than 30 characters and are - therefore truncated. Note that during database schema generation - (\cb{--generate-schema}) ODB detects when such truncations lead - to name conflicts and issues diagnostics even without this option - specified." - }; - - // - // SQL Server-specific options. - // - - ::mssql_version --mssql-server-version (10, 0) - { - "<ver>", - "Specify the minimum SQL Server server version with which the generated - C++ code and schema will be used. This information is used to enable - version-specific optimizations and workarounds in the generated C++ - code and schema. The version must be in the \c{\i{major}\b{.}\i{minor}} - form, for example, \cb{9.0} (SQL Server 2005), \cb{10.5} (2008R2), or - \cb{11.0} (2012). If this option is not specified, then \cb{10.0} (SQL - Server 2008) or later is assumed." - }; - - unsigned int --mssql-short-limit = 1024 - { - "<size>", - "Specify the short data size limit. If a character, national character, or - binary data type has a maximum length (in bytes) less than or equal to - this limit, then it is treated as \i{short data}, otherwise it is \i{long - data}. For short data ODB pre-allocates an intermediate buffer of - the maximum size and binds it directly to a parameter or result - column. This way the underlying API (ODBC) can read/write directly - from/to this buffer. In the case of long data, the data is read/written - in chunks using the \cb{SQLGetData()}/\cb{SQLPutData()} ODBC functions. - While the long data approach reduces the amount of memory used by the - application, it may require greater CPU resources. The default short - data limit is 1024 bytes. When setting a custom short data limit, make - sure that it is sufficiently large so that no object id in the - application is treated as long data." - }; -}; |