diff options
| author | Gordon Sim <gsim@apache.org> | 2008-09-19 22:31:45 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2008-09-19 22:31:45 +0000 |
| commit | 7c70d21ca2d788d4432cfa89851c9b928c9f30aa (patch) | |
| tree | 01ec869bf97701c6de28cdf06f9db11f8782a793 /cpp/src/qpid/framing/FieldValue.h | |
| parent | ceababe179b3f80a9444eef358f7ff96c81f7a18 (diff) | |
| download | qpid-python-7c70d21ca2d788d4432cfa89851c9b928c9f30aa.tar.gz | |
Support floats and doubles in field tables.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@697269 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/framing/FieldValue.h')
| -rw-r--r-- | cpp/src/qpid/framing/FieldValue.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/cpp/src/qpid/framing/FieldValue.h b/cpp/src/qpid/framing/FieldValue.h index a38b559239..232c4a5cad 100644 --- a/cpp/src/qpid/framing/FieldValue.h +++ b/cpp/src/qpid/framing/FieldValue.h @@ -126,6 +126,10 @@ class FixedWidthValue : public FieldValue::Data { public: FixedWidthValue() {} FixedWidthValue(const uint8_t (&data)[width]) : octets(data) {} + FixedWidthValue(const uint8_t* const data) + { + for (int i = 0; i < width; i++) octets[i] = data[i]; + } FixedWidthValue(uint64_t v) { for (int i = width; i > 0; --i) { @@ -133,7 +137,6 @@ class FixedWidthValue : public FieldValue::Data { } octets[0] = (uint8_t) (0xFF & v); } - uint32_t size() const { return width; } void encode(Buffer& buffer) { buffer.putRawData(octets, width); } void decode(Buffer& buffer) { buffer.getRawData(octets, width); } @@ -153,6 +156,10 @@ class FixedWidthValue : public FieldValue::Data { v |= octets[width-1]; return v; } + void copyInto(uint8_t* const data) const + { + for (uint i = 0; i < width; ++i) data[i] = octets[i]; + } void print(std::ostream& o) const { o << "F" << width << ":"; }; }; @@ -247,6 +254,16 @@ class Struct32Value : public FieldValue { Struct32Value(const std::string& v); }; +class FloatValue : public FieldValue +{ + public: + FloatValue(float f); +}; +class DoubleValue : public FieldValue +{ + public: + DoubleValue(double f); +}; /* * Basic integer value encodes as signed 32 bit @@ -285,6 +302,7 @@ bool getEncodedValue(FieldTable::ValuePtr vptr, T& value) return false; } + }} // qpid::framing #endif |
