diff options
Diffstat (limited to 'src/optparser.h')
-rw-r--r-- | src/optparser.h | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/optparser.h b/src/optparser.h index 2936a4b..7ec69e5 100644 --- a/src/optparser.h +++ b/src/optparser.h | |||
@@ -15,6 +15,7 @@ | |||
15 | #include "bu/array.h" | 15 | #include "bu/array.h" |
16 | #include "bu/membuf.h" | 16 | #include "bu/membuf.h" |
17 | #include "bu/formatter.h" | 17 | #include "bu/formatter.h" |
18 | #include "bu/variant.h" | ||
18 | 19 | ||
19 | namespace Bu | 20 | namespace Bu |
20 | { | 21 | { |
@@ -40,7 +41,8 @@ namespace Bu | |||
40 | _ValueProxy(); | 41 | _ValueProxy(); |
41 | virtual ~_ValueProxy(); | 42 | virtual ~_ValueProxy(); |
42 | 43 | ||
43 | virtual void setValue( const Bu::FString & )=0; | 44 | virtual void setValueFromStr( const Bu::FString & )=0; |
45 | virtual void setValue( const Bu::Variant &vVar )=0; | ||
44 | virtual _ValueProxy *clone()=0; | 46 | virtual _ValueProxy *clone()=0; |
45 | }; | 47 | }; |
46 | 48 | ||
@@ -57,12 +59,28 @@ namespace Bu | |||
57 | { | 59 | { |
58 | } | 60 | } |
59 | 61 | ||
60 | virtual void setValue( const Bu::FString &sVal ) | 62 | virtual void setValueFromStr( const Bu::FString &sVal ) |
61 | { | 63 | { |
62 | Bu::MemBuf mb( sVal ); | 64 | Bu::MemBuf mb( sVal ); |
63 | Bu::Formatter f( mb ); | 65 | Bu::Formatter f( mb ); |
64 | f >> v; | 66 | f >> v; |
65 | } | 67 | } |
68 | |||
69 | virtual void setValue( const Bu::Variant &vVar ) | ||
70 | { | ||
71 | if( vVar.getType() == typeid(ptype) ) | ||
72 | { | ||
73 | v = vVar.get<ptype>(); | ||
74 | } | ||
75 | else if( vVar.getType() == typeid(Bu::FString) ) | ||
76 | { | ||
77 | setValueFromStr( vVar.get<Bu::FString>() ); | ||
78 | } | ||
79 | else | ||
80 | { | ||
81 | setValueFromStr( vVar.toString() ); | ||
82 | } | ||
83 | } | ||
66 | 84 | ||
67 | virtual _ValueProxy *clone() | 85 | virtual _ValueProxy *clone() |
68 | { | 86 | { |
@@ -87,7 +105,7 @@ namespace Bu | |||
87 | Bu::FString sHelp; | 105 | Bu::FString sHelp; |
88 | OptionSignal sUsed; | 106 | OptionSignal sUsed; |
89 | _ValueProxy *pProxy; | 107 | _ValueProxy *pProxy; |
90 | Bu::FString sOverride; | 108 | Bu::Variant sOverride; |
91 | Bu::FString sHelpDefault; | 109 | Bu::FString sHelpDefault; |
92 | }; | 110 | }; |
93 | 111 | ||
@@ -162,9 +180,9 @@ namespace Bu | |||
162 | addOption( sUsed, cOpt, "", sHelp ); | 180 | addOption( sUsed, cOpt, "", sHelp ); |
163 | } | 181 | } |
164 | 182 | ||
165 | void setOverride( char cOpt, const Bu::FString &sOverride ); | 183 | void setOverride( char cOpt, const Bu::Variant &sOverride ); |
166 | void setOverride( const Bu::FString &sOpt, | 184 | void setOverride( const Bu::FString &sOpt, |
167 | const Bu::FString &sOverride ); | 185 | const Bu::Variant &sOverride ); |
168 | 186 | ||
169 | void setHelpDefault( const Bu::FString &sOpt, const Bu::FString &sTxt ); | 187 | void setHelpDefault( const Bu::FString &sOpt, const Bu::FString &sTxt ); |
170 | 188 | ||