From a15cf65c44d5c224169c32ef5495b68c758134b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sun, 18 May 2014 16:08:14 +0200 Subject: Imported Upstream version 3.3.0.2 --- libcult/cult/cli/options-spec.hxx | 723 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 723 insertions(+) create mode 100644 libcult/cult/cli/options-spec.hxx (limited to 'libcult/cult/cli/options-spec.hxx') diff --git a/libcult/cult/cli/options-spec.hxx b/libcult/cult/cli/options-spec.hxx new file mode 100644 index 0000000..aff4541 --- /dev/null +++ b/libcult/cult/cli/options-spec.hxx @@ -0,0 +1,723 @@ +// file : cult/cli/options-spec.hxx +// author : Boris Kolpackov +// copyright : Copyright (c) 2005-2010 Boris Kolpackov +// license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +#ifndef CULT_CLI_OPTIONS_SPEC_HXX +#define CULT_CLI_OPTIONS_SPEC_HXX + +#include + +#include + +namespace Cult +{ + namespace CLI + { + template + class OptionSpec + { + public: + static Char const* const key; + typedef T Type; + + public: + ~OptionSpec () + { + } + + OptionSpec () + : default_value_ (), + name_ ("--") + { + name_ += k; + } + + T const& + default_value () const + { + return default_value_; + } + + Void + default_value (T const& value) + { + default_value_ = value; + } + + //@@ bad name + // + Char const* + name () const + { + return name_.c_str (); + } + + private: + T default_value_; + String name_; + }; + + template + struct OptionSpecType + { + typedef OptionSpec Type; + }; + + template <> + struct OptionSpecType + { + typedef Bits::Null Type; + }; + + + template + Char const* const OptionSpec::key = k; + + template + class OptionsSpec; + + template + + class OptionsSpec > + { + public: + typedef CLI::Options Options; + + typedef typename OptionSpecType::Type o01; + typedef typename OptionSpecType::Type o02; + typedef typename OptionSpecType::Type o03; + typedef typename OptionSpecType::Type o04; + typedef typename OptionSpecType::Type o05; + typedef typename OptionSpecType::Type o06; + typedef typename OptionSpecType::Type o07; + typedef typename OptionSpecType::Type o08; + typedef typename OptionSpecType::Type o09; + typedef typename OptionSpecType::Type o10; + typedef typename OptionSpecType::Type o11; + typedef typename OptionSpecType::Type o12; + typedef typename OptionSpecType::Type o13; + typedef typename OptionSpecType::Type o14; + typedef typename OptionSpecType::Type o15; + typedef typename OptionSpecType::Type o16; + typedef typename OptionSpecType::Type o17; + typedef typename OptionSpecType::Type o18; + typedef typename OptionSpecType::Type o19; + typedef typename OptionSpecType::Type o20; + typedef typename OptionSpecType::Type o21; + typedef typename OptionSpecType::Type o22; + typedef typename OptionSpecType::Type o23; + typedef typename OptionSpecType::Type o24; + typedef typename OptionSpecType::Type o25; + typedef typename OptionSpecType::Type o26; + typedef typename OptionSpecType::Type o27; + typedef typename OptionSpecType::Type o28; + typedef typename OptionSpecType::Type o29; + typedef typename OptionSpecType::Type o30; + typedef typename OptionSpecType::Type o31; + typedef typename OptionSpecType::Type o32; + typedef typename OptionSpecType::Type o33; + typedef typename OptionSpecType::Type o34; + typedef typename OptionSpecType::Type o35; + typedef typename OptionSpecType::Type o36; + typedef typename OptionSpecType::Type o37; + typedef typename OptionSpecType::Type o38; + typedef typename OptionSpecType::Type o39; + typedef typename OptionSpecType::Type o40; + typedef typename OptionSpecType::Type o41; + typedef typename OptionSpecType::Type o42; + typedef typename OptionSpecType::Type o43; + typedef typename OptionSpecType::Type o44; + typedef typename OptionSpecType::Type o45; + typedef typename OptionSpecType::Type o46; + typedef typename OptionSpecType::Type o47; + typedef typename OptionSpecType::Type o48; + typedef typename OptionSpecType::Type o49; + typedef typename OptionSpecType::Type o50; + typedef typename OptionSpecType::Type o51; + typedef typename OptionSpecType::Type o52; + typedef typename OptionSpecType::Type o53; + typedef typename OptionSpecType::Type o54; + typedef typename OptionSpecType::Type o55; + typedef typename OptionSpecType::Type o56; + typedef typename OptionSpecType::Type o57; + typedef typename OptionSpecType::Type o58; + typedef typename OptionSpecType::Type o59; + typedef typename OptionSpecType::Type o60; + typedef typename OptionSpecType::Type o61; + typedef typename OptionSpecType::Type o62; + typedef typename OptionSpecType::Type o63; + typedef typename OptionSpecType::Type o64; + typedef typename OptionSpecType::Type o65; + typedef typename OptionSpecType::Type o66; + typedef typename OptionSpecType::Type o67; + typedef typename OptionSpecType::Type o68; + typedef typename OptionSpecType::Type o69; + typedef typename OptionSpecType::Type o70; + typedef typename OptionSpecType::Type o71; + typedef typename OptionSpecType::Type o72; + typedef typename OptionSpecType::Type o73; + typedef typename OptionSpecType::Type o74; + typedef typename OptionSpecType::Type o75; + typedef typename OptionSpecType::Type o76; + typedef typename OptionSpecType::Type o77; + typedef typename OptionSpecType::Type o78; + typedef typename OptionSpecType::Type o79; + typedef typename OptionSpecType::Type o80; + typedef typename OptionSpecType::Type o81; + typedef typename OptionSpecType::Type o82; + typedef typename OptionSpecType::Type o83; + typedef typename OptionSpecType::Type o84; + typedef typename OptionSpecType::Type o85; + typedef typename OptionSpecType::Type o86; + typedef typename OptionSpecType::Type o87; + typedef typename OptionSpecType::Type o88; + typedef typename OptionSpecType::Type o89; + typedef typename OptionSpecType::Type o90; + typedef typename OptionSpecType::Type o91; + typedef typename OptionSpecType::Type o92; + typedef typename OptionSpecType::Type o93; + typedef typename OptionSpecType::Type o94; + typedef typename OptionSpecType::Type o95; + typedef typename OptionSpecType::Type o96; + typedef typename OptionSpecType::Type o97; + typedef typename OptionSpecType::Type o98; + typedef typename OptionSpecType::Type o99; + typedef typename OptionSpecType::Type o100; + + + private: + typedef Bits::Mapper Mapper; + + public: + template + typename Mapper::template Selector::Type& + option () + { + typedef + typename Mapper::template Selector::Type + Type; + + return *reinterpret_cast (option (k)); + } + + template + typename Mapper::template Selector::Type const& + option () const + { + typedef + typename Mapper::template Selector::Type + Type; + + return *reinterpret_cast (option (k)); + } + + private: + Void* + option (Char const*) const; + + private: + o01 o01_; + o02 o02_; + o03 o03_; + o04 o04_; + o05 o05_; + o06 o06_; + o07 o07_; + o08 o08_; + o09 o09_; + o10 o10_; + o11 o11_; + o12 o12_; + o13 o13_; + o14 o14_; + o15 o15_; + o16 o16_; + o17 o17_; + o18 o18_; + o19 o19_; + o20 o20_; + o21 o21_; + o22 o22_; + o23 o23_; + o24 o24_; + o25 o25_; + o26 o26_; + o27 o27_; + o28 o28_; + o29 o29_; + o30 o30_; + o31 o31_; + o32 o32_; + o33 o33_; + o34 o34_; + o35 o35_; + o36 o36_; + o37 o37_; + o38 o38_; + o39 o39_; + o40 o40_; + o41 o41_; + o42 o42_; + o43 o43_; + o44 o44_; + o45 o45_; + o46 o46_; + o47 o47_; + o48 o48_; + o49 o49_; + o50 o50_; + o51 o51_; + o52 o52_; + o53 o53_; + o54 o54_; + o55 o55_; + o56 o56_; + o57 o57_; + o58 o58_; + o59 o59_; + o60 o60_; + o61 o61_; + o62 o62_; + o63 o63_; + o64 o64_; + o65 o65_; + o66 o66_; + o67 o67_; + o68 o68_; + o69 o69_; + o70 o70_; + o71 o71_; + o72 o72_; + o73 o73_; + o74 o74_; + o75 o75_; + o76 o76_; + o77 o77_; + o78 o78_; + o79 o79_; + o80 o80_; + o81 o81_; + o82 o82_; + o83 o83_; + o84 o84_; + o85 o85_; + o86 o86_; + o87 o87_; + o88 o88_; + o89 o89_; + o90 o90_; + o91 o91_; + o92 o92_; + o93 o93_; + o94 o94_; + o95 o95_; + o96 o96_; + o97 o97_; + o98 o98_; + o99 o99_; + o100 o100_; + }; + } +} + +#include +#include + +#endif // CULT_CLI_OPTIONS_SPEC_HXX -- cgit v1.2.3