X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=folly%2FDynamicConverter.h;h=08b7260be46d2c5e992c87c87e8b6f9cd0908dc1;hb=c39c808c014719f905bd9080a13f7824268bb485;hp=8d61048debb2c40f368cc4468fadce0a2e0bdf39;hpb=321542683a01c3f334047531e9b487f047129775;p=folly.git diff --git a/folly/DynamicConverter.h b/folly/DynamicConverter.h index 8d61048d..08b7260b 100644 --- a/folly/DynamicConverter.h +++ b/folly/DynamicConverter.h @@ -16,8 +16,7 @@ // @author Nicholas Ormrod -#ifndef DYNAMIC_CONVERTER_H -#define DYNAMIC_CONVERTER_H +#pragma once #include namespace folly { @@ -30,7 +29,9 @@ namespace folly { * * Example: * - * dynamic d = { { 1, 2, 3 }, { 4, 5 } }; // a vector of vector of int + * dynamic d = dynamic::array( + * dynamic::array(1, 2, 3), + * dynamic::array(4, 5)); // a vector of vector of int * auto vvi = convertTo>>(d); * * See docs/DynamicConverter.md for supported types and customization @@ -211,6 +212,16 @@ struct DynamicConverter +struct DynamicConverter::value>::type> { + static T convert(const dynamic& d) { + using type = typename std::underlying_type::type; + return static_cast(DynamicConverter::convert(d)); + } +}; + // floating point template struct DynamicConverter { template <> struct DynamicConverter { static std::string convert(const dynamic& d) { - return d.asString().toStdString(); + return d.asString(); } }; @@ -309,7 +320,7 @@ struct DynamicConstructor::value && dynamicconverter_detail::is_range::value>::type> { static dynamic construct(const C& x) { - dynamic d = {}; + dynamic d = dynamic::array; for (auto& item : x) { d.push_back(toDynamic(item)); } @@ -321,7 +332,7 @@ struct DynamicConstructor struct DynamicConstructor, void> { static dynamic construct(const std::pair& x) { - dynamic d = {}; + dynamic d = dynamic::array; d.push_back(toDynamic(x.first)); d.push_back(toDynamic(x.second)); return d; @@ -342,5 +353,3 @@ dynamic toDynamic(const T& x) { } } // namespace folly - -#endif // DYNAMIC_CONVERTER_H