diff options
author | Mike Buland <eichlan@xagasoft.com> | 2011-03-17 23:14:52 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2011-03-17 23:14:52 +0000 |
commit | 30e841d5b6f082bce1f98c6df198aeea28a2d95b (patch) | |
tree | 68727dcfae385733e4acebcb52bdde6486ebee88 /src/variant.cpp | |
parent | 4f96052772c46ceba8ca074e4206646661462533 (diff) | |
download | libbu++-30e841d5b6f082bce1f98c6df198aeea28a2d95b.tar.gz libbu++-30e841d5b6f082bce1f98c6df198aeea28a2d95b.tar.bz2 libbu++-30e841d5b6f082bce1f98c6df198aeea28a2d95b.tar.xz libbu++-30e841d5b6f082bce1f98c6df198aeea28a2d95b.zip |
Tweaks to the variant class make it much cooler, and there's a test/tool
called format, it's a proof of concept of a text formatter. I think it's
gonna' rock.
Diffstat (limited to '')
-rw-r--r-- | src/variant.cpp | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/src/variant.cpp b/src/variant.cpp index fd0511f..f7c87ad 100644 --- a/src/variant.cpp +++ b/src/variant.cpp | |||
@@ -7,6 +7,8 @@ | |||
7 | 7 | ||
8 | #include "bu/variant.h" | 8 | #include "bu/variant.h" |
9 | 9 | ||
10 | #include "bu/membuf.h" | ||
11 | |||
10 | namespace Bu | 12 | namespace Bu |
11 | { | 13 | { |
12 | Formatter &operator<<( Formatter &f, const String &s ); | 14 | Formatter &operator<<( Formatter &f, const String &s ); |
@@ -49,16 +51,17 @@ Bu::Variant::~Variant() | |||
49 | } | 51 | } |
50 | } | 52 | } |
51 | 53 | ||
52 | bool Bu::Variant::isSet() const | 54 | Bu::String Bu::Variant::toString() const |
53 | { | 55 | { |
54 | return pCore != NULL; | 56 | Bu::MemBuf mb; |
57 | Bu::Formatter f( mb ); | ||
58 | f << *this; | ||
59 | return mb.getString(); | ||
55 | } | 60 | } |
56 | 61 | ||
57 | Bu::String Bu::Variant::toString() const | 62 | bool Bu::Variant::isSet() const |
58 | { | 63 | { |
59 | if( !pCore ) | 64 | return pCore != NULL; |
60 | return "***NO DATA***"; | ||
61 | return pCore->toString(); | ||
62 | } | 65 | } |
63 | 66 | ||
64 | const std::type_info &Bu::Variant::getType() const | 67 | const std::type_info &Bu::Variant::getType() const |
@@ -87,18 +90,10 @@ Bu::Variant &Bu::Variant::operator=( const Bu::Variant &rhs ) | |||
87 | 90 | ||
88 | Bu::Formatter &Bu::operator<<( Bu::Formatter &f, const Bu::Variant &v ) | 91 | Bu::Formatter &Bu::operator<<( Bu::Formatter &f, const Bu::Variant &v ) |
89 | { | 92 | { |
90 | return f << v.toString(); | 93 | if( !v.pCore ) |
91 | } | 94 | return f << "(null)"; |
92 | |||
93 | template<> Bu::String Bu::VariantType<int>::toString() const | ||
94 | { | ||
95 | Bu::String s; | ||
96 | s.format("%d", data ); | ||
97 | return s; | ||
98 | } | ||
99 | 95 | ||
100 | template<> Bu::String Bu::VariantType<bool>::toString() const | 96 | v.pCore->format( f ); |
101 | { | 97 | return f; |
102 | return data?"true":"false"; | ||
103 | } | 98 | } |
104 | 99 | ||