diff options
Diffstat (limited to 'src/tclap/StandardTraits.h')
-rw-r--r--[-rwxr-xr-x] | src/tclap/StandardTraits.h | 302 |
1 files changed, 158 insertions, 144 deletions
diff --git a/src/tclap/StandardTraits.h b/src/tclap/StandardTraits.h index 151b851..4129c7e 100755..100644 --- a/src/tclap/StandardTraits.h +++ b/src/tclap/StandardTraits.h @@ -27,160 +27,174 @@ #define TCLAP_STANDARD_TRAITS_H #ifdef HAVE_CONFIG_H -#include <config.h> // To check for long long + #include <config.h> // To check for long long #endif -namespace TCLAP { - -// ====================================================================== -// Integer types -// ====================================================================== - -/** - * longs have value-like semantics. - */ -template<> -struct ArgTraits<long> { - typedef ValueLike ValueCategory; -}; - -/** - * ints have value-like semantics. - */ -template<> -struct ArgTraits<int> { - typedef ValueLike ValueCategory; -}; - -/** - * shorts have value-like semantics. - */ -template<> -struct ArgTraits<short> { - typedef ValueLike ValueCategory; -}; - -/** - * chars have value-like semantics. - */ -template<> -struct ArgTraits<char> { - typedef ValueLike ValueCategory; -}; +namespace TCLAP +{ + // ====================================================================== + // Integer types + // ====================================================================== + + /** + * longs have value-like semantics. + */ + template<> + struct ArgTraits<long> + { + typedef ValueLike ValueCategory; + }; + + /** + * ints have value-like semantics. + */ + template<> + struct ArgTraits<int> + { + typedef ValueLike ValueCategory; + }; + + /** + * shorts have value-like semantics. + */ + template<> + struct ArgTraits<short> + { + typedef ValueLike ValueCategory; + }; + + /** + * chars have value-like semantics. + */ + template<> + struct ArgTraits<char> + { + typedef ValueLike ValueCategory; + }; #ifdef HAVE_LONG_LONG -/** - * long longs have value-like semantics. - */ -template<> -struct ArgTraits<long long> { - typedef ValueLike ValueCategory; -}; + /** + * long longs have value-like semantics. + */ + template<> + struct ArgTraits<long long> + { + typedef ValueLike ValueCategory; + }; + #endif -// ====================================================================== -// Unsigned integer types -// ====================================================================== - -/** - * unsigned longs have value-like semantics. - */ -template<> -struct ArgTraits<unsigned long> { - typedef ValueLike ValueCategory; -}; - -/** - * unsigned ints have value-like semantics. - */ -template<> -struct ArgTraits<unsigned int> { - typedef ValueLike ValueCategory; -}; - -/** - * unsigned shorts have value-like semantics. - */ -template<> -struct ArgTraits<unsigned short> { - typedef ValueLike ValueCategory; -}; - -/** - * unsigned chars have value-like semantics. - */ -template<> -struct ArgTraits<unsigned char> { - typedef ValueLike ValueCategory; -}; + // ====================================================================== + // Unsigned integer types + // ====================================================================== + + /** + * unsigned longs have value-like semantics. + */ + template<> + struct ArgTraits<unsigned long> + { + typedef ValueLike ValueCategory; + }; + + /** + * unsigned ints have value-like semantics. + */ + template<> + struct ArgTraits<unsigned int> + { + typedef ValueLike ValueCategory; + }; + + /** + * unsigned shorts have value-like semantics. + */ + template<> + struct ArgTraits<unsigned short> + { + typedef ValueLike ValueCategory; + }; + + /** + * unsigned chars have value-like semantics. + */ + template<> + struct ArgTraits<unsigned char> + { + typedef ValueLike ValueCategory; + }; #ifdef HAVE_LONG_LONG -/** - * unsigned long longs have value-like semantics. - */ -template<> -struct ArgTraits<unsigned long long> { - typedef ValueLike ValueCategory; -}; -#endif + /** + * unsigned long longs have value-like semantics. + */ + template<> + struct ArgTraits<unsigned long long> + { + typedef ValueLike ValueCategory; + }; -// ====================================================================== -// Float types -// ====================================================================== - -/** - * floats have value-like semantics. - */ -template<> -struct ArgTraits<float> { - typedef ValueLike ValueCategory; -}; - -/** - * doubles have value-like semantics. - */ -template<> -struct ArgTraits<double> { - typedef ValueLike ValueCategory; -}; - -// ====================================================================== -// Other types -// ====================================================================== - -/** - * bools have value-like semantics. - */ -template<> -struct ArgTraits<bool> { - typedef ValueLike ValueCategory; -}; - -/** - * wchar_ts have value-like semantics. - */ -/* -template<> -struct ArgTraits<wchar_t> { - typedef ValueLike ValueCategory; -}; -*/ - -/** - * Strings have string like argument traits. - */ -template<> -struct ArgTraits<std::string> { - typedef StringLike ValueCategory; -}; - -template<typename T> -void SetString(T &dst, const std::string &src) -{ - dst = src; -} +#endif + // ====================================================================== + // Float types + // ====================================================================== + + /** + * floats have value-like semantics. + */ + template<> + struct ArgTraits<float> + { + typedef ValueLike ValueCategory; + }; + + /** + * doubles have value-like semantics. + */ + template<> + struct ArgTraits<double> + { + typedef ValueLike ValueCategory; + }; + + // ====================================================================== + // Other types + // ====================================================================== + + /** + * bools have value-like semantics. + */ + template<> + struct ArgTraits<bool> + { + typedef ValueLike ValueCategory; + }; + + /** + * wchar_ts have value-like semantics. + */ + /* + template<> + struct ArgTraits<wchar_t> { + typedef ValueLike ValueCategory; + }; + */ + + /** + * Strings have string like argument traits. + */ + template<> + struct ArgTraits<std::string> + { + typedef StringLike ValueCategory; + }; + + template<typename T> + void SetString(T &dst, const std::string &src) + { + dst = src; + } } // namespace #endif - |