Single.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00028 #ifndef KEYVALUE_VALUE_SINGLE_H_
00029 #define KEYVALUE_VALUE_SINGLE_H_
00030
00031 #include <iosfwd>
00032
00033 #include "keyvalue/value/Vector.h"
00034
00035 namespace keyvalue {
00036 namespace value {
00037
00045 class Single : public Vector {
00046
00047 public:
00048
00053 Single();
00054
00062 Single(const Variant& data);
00063
00071 template <typename Rhs>
00072 Single(const Rhs& rhs);
00073
00083 template <typename Rhs>
00084 Single&
00085 operator=(const Rhs& rhs);
00086
00087 };
00088
00094 std::ostream&
00095 operator<<(std::ostream& os, const Single& rhs);
00096
00106 template <typename Rhs>
00107 struct Parent;
00108
00109 template <>
00110 struct Parent<Variant> {
00111 typedef Single Type_;
00112 };
00113
00114
00115
00116
00117
00118 template <typename Rhs>
00119 Single::Single(const Rhs& rhs) : Vector(1) {
00124 (*this)(0) = Variant(rhs);
00125 }
00126
00127
00128
00129
00130
00131 template <typename Rhs>
00132 Single&
00133 Single::operator=(const Rhs& rhs) {
00138 return *this = typename Parent<Rhs>::Type_(rhs);
00139 }
00140
00141 }
00142 }
00143
00144 #endif // KEYVALUE_VALUE_SINGLE_H_