Added streamable conversions

This commit is contained in:
Jesse Beder
2011-09-08 00:48:40 -05:00
parent a95baeafd6
commit a7ebb3615a
2 changed files with 38 additions and 2 deletions

View File

@@ -1,7 +1,9 @@
#include "yaml-cpp/value.h"
#include <sstream>
namespace YAML
{
// std::string
template<>
Value convert(const std::string& rhs) {
return Value(rhs);
@@ -14,4 +16,36 @@ namespace YAML
rhs = value.scalar();
return true;
}
#define YAML_DEFINE_CONVERT_STREAMABLE(type)\
template<> Value convert(const type& rhs) {\
std::stringstream stream;\
stream << rhs;\
return Value(stream.str());\
}\
template<> bool convert(const Value& value, type& rhs) {\
if(value.Type() != ValueType::Scalar)\
return false;\
std::stringstream stream(value.scalar());\
stream >> rhs;\
return !!stream;\
}
YAML_DEFINE_CONVERT_STREAMABLE(int)
YAML_DEFINE_CONVERT_STREAMABLE(unsigned)
YAML_DEFINE_CONVERT_STREAMABLE(short)
YAML_DEFINE_CONVERT_STREAMABLE(unsigned short)
YAML_DEFINE_CONVERT_STREAMABLE(long)
YAML_DEFINE_CONVERT_STREAMABLE(unsigned long)
YAML_DEFINE_CONVERT_STREAMABLE(long long)
YAML_DEFINE_CONVERT_STREAMABLE(unsigned long long)
YAML_DEFINE_CONVERT_STREAMABLE(char)
YAML_DEFINE_CONVERT_STREAMABLE(unsigned char)
YAML_DEFINE_CONVERT_STREAMABLE(float)
YAML_DEFINE_CONVERT_STREAMABLE(double)
YAML_DEFINE_CONVERT_STREAMABLE(long double)
#undef YAML_DEFINE_CONVERT_STREAMABLE
}