00001
00018 #ifndef _ACTIVEMQ_UTIL_PRIMITIVEVALUECONVERTER_H_
00019 #define _ACTIVEMQ_UTIL_PRIMITIVEVALUECONVERTER_H_
00020
00021 #include <activemq/util/Config.h>
00022
00023 #include <activemq/util/PrimitiveValueNode.h>
00024 #include <decaf/lang/exceptions/UnsupportedOperationException.h>
00025 #include <string>
00026
00027 namespace activemq {
00028 namespace util {
00029
00054 class AMQCPP_API PrimitiveValueConverter {
00055 public:
00056
00057 PrimitiveValueConverter() {}
00058 virtual ~PrimitiveValueConverter() {}
00059
00060 template<typename TO>
00061 TO convert(const PrimitiveValueNode& value) const {
00062
00063 throw decaf::lang::exceptions::UnsupportedOperationException(
00064 __FILE__, __LINE__, "Invalid Conversion");
00065 }
00066 };
00067
00068 template<>
00069 bool PrimitiveValueConverter::convert<bool>(const PrimitiveValueNode& value) const;
00070 template<>
00071 unsigned char PrimitiveValueConverter::convert<unsigned char>(const PrimitiveValueNode& value) const;
00072 template<>
00073 char PrimitiveValueConverter::convert<char>(const PrimitiveValueNode& value) const;
00074 template<>
00075 short PrimitiveValueConverter::convert<short>(const PrimitiveValueNode& value) const;
00076 template<>
00077 int PrimitiveValueConverter::convert<int>(const PrimitiveValueNode& value) const;
00078 template<>
00079 long long PrimitiveValueConverter::convert<long long>(const PrimitiveValueNode& value) const;
00080 template<>
00081 float PrimitiveValueConverter::convert<float>(const PrimitiveValueNode& value) const;
00082 template<>
00083 double PrimitiveValueConverter::convert<double>(const PrimitiveValueNode& value) const;
00084 template<>
00085 std::string PrimitiveValueConverter::convert<std::string>(const PrimitiveValueNode& value) const;
00086 template<>
00087 std::vector<unsigned char> PrimitiveValueConverter::convert<std::vector<unsigned char> >(const PrimitiveValueNode& value) const;
00088
00089 }}
00090
00091 #endif