summaryrefslogtreecommitdiff
path: root/cpp/include
diff options
context:
space:
mode:
authorAndrew Stitcher <astitcher@apache.org>2011-05-09 19:56:11 +0000
committerAndrew Stitcher <astitcher@apache.org>2011-05-09 19:56:11 +0000
commit0a103a150a50c5e233f29b69db79cac884925e58 (patch)
tree4efe0fef321cb69e26ecc652c887af33b6062c8b /cpp/include
parentd5dfdb1858be769350ada946df7c3b03db1564b3 (diff)
downloadqpid-python-0a103a150a50c5e233f29b69db79cac884925e58.tar.gz
QPID-3004: Get Clang to compile qpid c++
- Add new template function for FieldValue::getIntegerValue() to avoid compile error when extracting into 1 byte ints. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1101183 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/include')
-rw-r--r--cpp/include/qpid/framing/FieldValue.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/cpp/include/qpid/framing/FieldValue.h b/cpp/include/qpid/framing/FieldValue.h
index 19220e74d5..e6255066c4 100644
--- a/cpp/include/qpid/framing/FieldValue.h
+++ b/cpp/include/qpid/framing/FieldValue.h
@@ -98,6 +98,7 @@ class FieldValue {
template <typename T> T get() const { throw InvalidConversionException(); }
template <class T, int W> T getIntegerValue() const;
+ template <class T> T getIntegerValue() const;
template <class T, int W> T getFloatingPointValue() const;
template <int W> void getFixedWidthValue(unsigned char*) const;
template <class T> bool get(T&) const;
@@ -196,6 +197,18 @@ inline T FieldValue::getIntegerValue() const
}
}
+template <class T>
+inline T FieldValue::getIntegerValue() const
+{
+ FixedWidthValue<1>* const fwv = dynamic_cast< FixedWidthValue<1>* const>(data.get());
+ if (fwv) {
+ uint8_t* octets = fwv->rawOctets();
+ return octets[0];
+ } else {
+ throw InvalidConversionException();
+ }
+}
+
template <class T, int W>
inline T FieldValue::getFloatingPointValue() const {
FixedWidthValue<W>* const fwv = dynamic_cast< FixedWidthValue<W>* const>(data.get());