diff options
Diffstat (limited to 'libcult/cult/cli/options-spec.hxx')
-rw-r--r-- | libcult/cult/cli/options-spec.hxx | 723 |
1 files changed, 0 insertions, 723 deletions
diff --git a/libcult/cult/cli/options-spec.hxx b/libcult/cult/cli/options-spec.hxx deleted file mode 100644 index aff4541..0000000 --- a/libcult/cult/cli/options-spec.hxx +++ /dev/null @@ -1,723 +0,0 @@ -// file : cult/cli/options-spec.hxx -// author : Boris Kolpackov <boris@kolpackov.net> -// 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 <cult/types.hxx> - -#include <cult/cli/options.hxx> - -namespace Cult -{ - namespace CLI - { - template <Char const* k, typename T> - 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 <Char const* k, typename T> - struct OptionSpecType - { - typedef OptionSpec<k, T> Type; - }; - - template <> - struct OptionSpecType<Bits::null, Bits::Null> - { - typedef Bits::Null Type; - }; - - - template <Char const* k, typename T> - Char const* const OptionSpec<k, T>::key = k; - - template <typename> - class OptionsSpec; - - template <Char const* k01, typename T01, - Char const* k02, typename T02, - Char const* k03, typename T03, - Char const* k04, typename T04, - Char const* k05, typename T05, - Char const* k06, typename T06, - Char const* k07, typename T07, - Char const* k08, typename T08, - Char const* k09, typename T09, - Char const* k10, typename T10, - Char const* k11, typename T11, - Char const* k12, typename T12, - Char const* k13, typename T13, - Char const* k14, typename T14, - Char const* k15, typename T15, - Char const* k16, typename T16, - Char const* k17, typename T17, - Char const* k18, typename T18, - Char const* k19, typename T19, - Char const* k20, typename T20, - Char const* k21, typename T21, - Char const* k22, typename T22, - Char const* k23, typename T23, - Char const* k24, typename T24, - Char const* k25, typename T25, - Char const* k26, typename T26, - Char const* k27, typename T27, - Char const* k28, typename T28, - Char const* k29, typename T29, - Char const* k30, typename T30, - Char const* k31, typename T31, - Char const* k32, typename T32, - Char const* k33, typename T33, - Char const* k34, typename T34, - Char const* k35, typename T35, - Char const* k36, typename T36, - Char const* k37, typename T37, - Char const* k38, typename T38, - Char const* k39, typename T39, - Char const* k40, typename T40, - Char const* k41, typename T41, - Char const* k42, typename T42, - Char const* k43, typename T43, - Char const* k44, typename T44, - Char const* k45, typename T45, - Char const* k46, typename T46, - Char const* k47, typename T47, - Char const* k48, typename T48, - Char const* k49, typename T49, - Char const* k50, typename T50, - Char const* k51, typename T51, - Char const* k52, typename T52, - Char const* k53, typename T53, - Char const* k54, typename T54, - Char const* k55, typename T55, - Char const* k56, typename T56, - Char const* k57, typename T57, - Char const* k58, typename T58, - Char const* k59, typename T59, - Char const* k60, typename T60, - Char const* k61, typename T61, - Char const* k62, typename T62, - Char const* k63, typename T63, - Char const* k64, typename T64, - Char const* k65, typename T65, - Char const* k66, typename T66, - Char const* k67, typename T67, - Char const* k68, typename T68, - Char const* k69, typename T69, - Char const* k70, typename T70, - Char const* k71, typename T71, - Char const* k72, typename T72, - Char const* k73, typename T73, - Char const* k74, typename T74, - Char const* k75, typename T75, - Char const* k76, typename T76, - Char const* k77, typename T77, - Char const* k78, typename T78, - Char const* k79, typename T79, - Char const* k80, typename T80, - Char const* k81, typename T81, - Char const* k82, typename T82, - Char const* k83, typename T83, - Char const* k84, typename T84, - Char const* k85, typename T85, - Char const* k86, typename T86, - Char const* k87, typename T87, - Char const* k88, typename T88, - Char const* k89, typename T89, - Char const* k90, typename T90, - Char const* k91, typename T91, - Char const* k92, typename T92, - Char const* k93, typename T93, - Char const* k94, typename T94, - Char const* k95, typename T95, - Char const* k96, typename T96, - Char const* k97, typename T97, - Char const* k98, typename T98, - Char const* k99, typename T99, - Char const* k100, typename T100> - - class OptionsSpec<Options<k01, T01, - k02, T02, - k03, T03, - k04, T04, - k05, T05, - k06, T06, - k07, T07, - k08, T08, - k09, T09, - k10, T10, - k11, T11, - k12, T12, - k13, T13, - k14, T14, - k15, T15, - k16, T16, - k17, T17, - k18, T18, - k19, T19, - k20, T20, - k21, T21, - k22, T22, - k23, T23, - k24, T24, - k25, T25, - k26, T26, - k27, T27, - k28, T28, - k29, T29, - k30, T30, - k31, T31, - k32, T32, - k33, T33, - k34, T34, - k35, T35, - k36, T36, - k37, T37, - k38, T38, - k39, T39, - k40, T40, - k41, T41, - k42, T42, - k43, T43, - k44, T44, - k45, T45, - k46, T46, - k47, T47, - k48, T48, - k49, T49, - k50, T50, - k51, T51, - k52, T52, - k53, T53, - k54, T54, - k55, T55, - k56, T56, - k57, T57, - k58, T58, - k59, T59, - k60, T60, - k61, T61, - k62, T62, - k63, T63, - k64, T64, - k65, T65, - k66, T66, - k67, T67, - k68, T68, - k69, T69, - k70, T70, - k71, T71, - k72, T72, - k73, T73, - k74, T74, - k75, T75, - k76, T76, - k77, T77, - k78, T78, - k79, T79, - k80, T80, - k81, T81, - k82, T82, - k83, T83, - k84, T84, - k85, T85, - k86, T86, - k87, T87, - k88, T88, - k89, T89, - k90, T90, - k91, T91, - k92, T92, - k93, T93, - k94, T94, - k95, T95, - k96, T96, - k97, T97, - k98, T98, - k99, T99, - k100, T100> > - { - public: - typedef CLI::Options<k01, T01, - k02, T02, - k03, T03, - k04, T04, - k05, T05, - k06, T06, - k07, T07, - k08, T08, - k09, T09, - k10, T10, - k11, T11, - k12, T12, - k13, T13, - k14, T14, - k15, T15, - k16, T16, - k17, T17, - k18, T18, - k19, T19, - k20, T20, - k21, T21, - k22, T22, - k23, T23, - k24, T24, - k25, T25, - k26, T26, - k27, T27, - k28, T28, - k29, T29, - k30, T30, - k31, T31, - k32, T32, - k33, T33, - k34, T34, - k35, T35, - k36, T36, - k37, T37, - k38, T38, - k39, T39, - k40, T40, - k41, T41, - k42, T42, - k43, T43, - k44, T44, - k45, T45, - k46, T46, - k47, T47, - k48, T48, - k49, T49, - k50, T50, - k51, T51, - k52, T52, - k53, T53, - k54, T54, - k55, T55, - k56, T56, - k57, T57, - k58, T58, - k59, T59, - k60, T60, - k61, T61, - k62, T62, - k63, T63, - k64, T64, - k65, T65, - k66, T66, - k67, T67, - k68, T68, - k69, T69, - k70, T70, - k71, T71, - k72, T72, - k73, T73, - k74, T74, - k75, T75, - k76, T76, - k77, T77, - k78, T78, - k79, T79, - k80, T80, - k81, T81, - k82, T82, - k83, T83, - k84, T84, - k85, T85, - k86, T86, - k87, T87, - k88, T88, - k89, T89, - k90, T90, - k91, T91, - k92, T92, - k93, T93, - k94, T94, - k95, T95, - k96, T96, - k97, T97, - k98, T98, - k99, T99, - k100, T100> Options; - - typedef typename OptionSpecType<k01, T01>::Type o01; - typedef typename OptionSpecType<k02, T02>::Type o02; - typedef typename OptionSpecType<k03, T03>::Type o03; - typedef typename OptionSpecType<k04, T04>::Type o04; - typedef typename OptionSpecType<k05, T05>::Type o05; - typedef typename OptionSpecType<k06, T06>::Type o06; - typedef typename OptionSpecType<k07, T07>::Type o07; - typedef typename OptionSpecType<k08, T08>::Type o08; - typedef typename OptionSpecType<k09, T09>::Type o09; - typedef typename OptionSpecType<k10, T10>::Type o10; - typedef typename OptionSpecType<k11, T11>::Type o11; - typedef typename OptionSpecType<k12, T12>::Type o12; - typedef typename OptionSpecType<k13, T13>::Type o13; - typedef typename OptionSpecType<k14, T14>::Type o14; - typedef typename OptionSpecType<k15, T15>::Type o15; - typedef typename OptionSpecType<k16, T16>::Type o16; - typedef typename OptionSpecType<k17, T17>::Type o17; - typedef typename OptionSpecType<k18, T18>::Type o18; - typedef typename OptionSpecType<k19, T19>::Type o19; - typedef typename OptionSpecType<k20, T20>::Type o20; - typedef typename OptionSpecType<k21, T21>::Type o21; - typedef typename OptionSpecType<k22, T22>::Type o22; - typedef typename OptionSpecType<k23, T23>::Type o23; - typedef typename OptionSpecType<k24, T24>::Type o24; - typedef typename OptionSpecType<k25, T25>::Type o25; - typedef typename OptionSpecType<k26, T26>::Type o26; - typedef typename OptionSpecType<k27, T27>::Type o27; - typedef typename OptionSpecType<k28, T28>::Type o28; - typedef typename OptionSpecType<k29, T29>::Type o29; - typedef typename OptionSpecType<k30, T30>::Type o30; - typedef typename OptionSpecType<k31, T31>::Type o31; - typedef typename OptionSpecType<k32, T32>::Type o32; - typedef typename OptionSpecType<k33, T33>::Type o33; - typedef typename OptionSpecType<k34, T34>::Type o34; - typedef typename OptionSpecType<k35, T35>::Type o35; - typedef typename OptionSpecType<k36, T36>::Type o36; - typedef typename OptionSpecType<k37, T37>::Type o37; - typedef typename OptionSpecType<k38, T38>::Type o38; - typedef typename OptionSpecType<k39, T39>::Type o39; - typedef typename OptionSpecType<k40, T40>::Type o40; - typedef typename OptionSpecType<k41, T41>::Type o41; - typedef typename OptionSpecType<k42, T42>::Type o42; - typedef typename OptionSpecType<k43, T43>::Type o43; - typedef typename OptionSpecType<k44, T44>::Type o44; - typedef typename OptionSpecType<k45, T45>::Type o45; - typedef typename OptionSpecType<k46, T46>::Type o46; - typedef typename OptionSpecType<k47, T47>::Type o47; - typedef typename OptionSpecType<k48, T48>::Type o48; - typedef typename OptionSpecType<k49, T49>::Type o49; - typedef typename OptionSpecType<k50, T50>::Type o50; - typedef typename OptionSpecType<k51, T51>::Type o51; - typedef typename OptionSpecType<k52, T52>::Type o52; - typedef typename OptionSpecType<k53, T53>::Type o53; - typedef typename OptionSpecType<k54, T54>::Type o54; - typedef typename OptionSpecType<k55, T55>::Type o55; - typedef typename OptionSpecType<k56, T56>::Type o56; - typedef typename OptionSpecType<k57, T57>::Type o57; - typedef typename OptionSpecType<k58, T58>::Type o58; - typedef typename OptionSpecType<k59, T59>::Type o59; - typedef typename OptionSpecType<k60, T60>::Type o60; - typedef typename OptionSpecType<k61, T61>::Type o61; - typedef typename OptionSpecType<k62, T62>::Type o62; - typedef typename OptionSpecType<k63, T63>::Type o63; - typedef typename OptionSpecType<k64, T64>::Type o64; - typedef typename OptionSpecType<k65, T65>::Type o65; - typedef typename OptionSpecType<k66, T66>::Type o66; - typedef typename OptionSpecType<k67, T67>::Type o67; - typedef typename OptionSpecType<k68, T68>::Type o68; - typedef typename OptionSpecType<k69, T69>::Type o69; - typedef typename OptionSpecType<k70, T70>::Type o70; - typedef typename OptionSpecType<k71, T71>::Type o71; - typedef typename OptionSpecType<k72, T72>::Type o72; - typedef typename OptionSpecType<k73, T73>::Type o73; - typedef typename OptionSpecType<k74, T74>::Type o74; - typedef typename OptionSpecType<k75, T75>::Type o75; - typedef typename OptionSpecType<k76, T76>::Type o76; - typedef typename OptionSpecType<k77, T77>::Type o77; - typedef typename OptionSpecType<k78, T78>::Type o78; - typedef typename OptionSpecType<k79, T79>::Type o79; - typedef typename OptionSpecType<k80, T80>::Type o80; - typedef typename OptionSpecType<k81, T81>::Type o81; - typedef typename OptionSpecType<k82, T82>::Type o82; - typedef typename OptionSpecType<k83, T83>::Type o83; - typedef typename OptionSpecType<k84, T84>::Type o84; - typedef typename OptionSpecType<k85, T85>::Type o85; - typedef typename OptionSpecType<k86, T86>::Type o86; - typedef typename OptionSpecType<k87, T87>::Type o87; - typedef typename OptionSpecType<k88, T88>::Type o88; - typedef typename OptionSpecType<k89, T89>::Type o89; - typedef typename OptionSpecType<k90, T90>::Type o90; - typedef typename OptionSpecType<k91, T91>::Type o91; - typedef typename OptionSpecType<k92, T92>::Type o92; - typedef typename OptionSpecType<k93, T93>::Type o93; - typedef typename OptionSpecType<k94, T94>::Type o94; - typedef typename OptionSpecType<k95, T95>::Type o95; - typedef typename OptionSpecType<k96, T96>::Type o96; - typedef typename OptionSpecType<k97, T97>::Type o97; - typedef typename OptionSpecType<k98, T98>::Type o98; - typedef typename OptionSpecType<k99, T99>::Type o99; - typedef typename OptionSpecType<k100, T100>::Type o100; - - - private: - typedef Bits::Mapper<k01, o01, - k02, o02, - k03, o03, - k04, o04, - k05, o05, - k06, o06, - k07, o07, - k08, o08, - k09, o09, - k10, o10, - k11, o11, - k12, o12, - k13, o13, - k14, o14, - k15, o15, - k16, o16, - k17, o17, - k18, o18, - k19, o19, - k20, o20, - k21, o21, - k22, o22, - k23, o23, - k24, o24, - k25, o25, - k26, o26, - k27, o27, - k28, o28, - k29, o29, - k30, o30, - k31, o31, - k32, o32, - k33, o33, - k34, o34, - k35, o35, - k36, o36, - k37, o37, - k38, o38, - k39, o39, - k40, o40, - k41, o41, - k42, o42, - k43, o43, - k44, o44, - k45, o45, - k46, o46, - k47, o47, - k48, o48, - k49, o49, - k50, o50, - k51, o51, - k52, o52, - k53, o53, - k54, o54, - k55, o55, - k56, o56, - k57, o57, - k58, o58, - k59, o59, - k60, o60, - k61, o61, - k62, o62, - k63, o63, - k64, o64, - k65, o65, - k66, o66, - k67, o67, - k68, o68, - k69, o69, - k70, o70, - k71, o71, - k72, o72, - k73, o73, - k74, o74, - k75, o75, - k76, o76, - k77, o77, - k78, o78, - k79, o79, - k80, o80, - k81, o81, - k82, o82, - k83, o83, - k84, o84, - k85, o85, - k86, o86, - k87, o87, - k88, o88, - k89, o89, - k90, o90, - k91, o91, - k92, o92, - k93, o93, - k94, o94, - k95, o95, - k96, o96, - k97, o97, - k98, o98, - k99, o99, - k100, o100> Mapper; - - public: - template <Char const* k> - typename Mapper::template Selector<k>::Type& - option () - { - typedef - typename Mapper::template Selector<k>::Type - Type; - - return *reinterpret_cast<Type*> (option (k)); - } - - template <Char const* k> - typename Mapper::template Selector<k>::Type const& - option () const - { - typedef - typename Mapper::template Selector<k>::Type - Type; - - return *reinterpret_cast<Type const*> (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 <cult/cli/options-spec.ixx> -#include <cult/cli/options-spec.txx> - -#endif // CULT_CLI_OPTIONS_SPEC_HXX |