diff --git a/pvDataApp/factory/PVDataCreateFactory.cpp b/pvDataApp/factory/PVDataCreateFactory.cpp index 7c20509..a9efae1 100644 --- a/pvDataApp/factory/PVDataCreateFactory.cpp +++ b/pvDataApp/factory/PVDataCreateFactory.cpp @@ -28,7 +28,7 @@ using std::min; namespace epics { namespace pvData { -//template<> const ScalarType PVBoolean::typeCode = pvBoolean; +template<> const ScalarType PVBoolean::typeCode = pvBoolean; template<> const ScalarType PVByte::typeCode = pvByte; template<> const ScalarType PVShort::typeCode = pvShort; template<> const ScalarType PVInt::typeCode = pvInt; @@ -41,7 +41,7 @@ template<> const ScalarType PVFloat::typeCode = pvFloat; template<> const ScalarType PVDouble::typeCode = pvDouble; template<> const ScalarType PVScalarValue::typeCode = pvString; -//template<> const ScalarType PVBooleanArray::typeCode = pvBoolean; +template<> const ScalarType PVBooleanArray::typeCode = pvBoolean; template<> const ScalarType PVByteArray::typeCode = pvByte; template<> const ScalarType PVShortArray::typeCode = pvShort; template<> const ScalarType PVIntArray::typeCode = pvInt; diff --git a/pvDataApp/pv/pvData.h b/pvDataApp/pv/pvData.h index e8aeef5..fd7cea4 100644 --- a/pvDataApp/pv/pvData.h +++ b/pvDataApp/pv/pvData.h @@ -530,7 +530,7 @@ private: /** * typedefs for the various possible scalar types. */ -typedef PVScalarValue PVBoolean; +typedef PVScalarValue PVBoolean; typedef PVScalarValue PVByte; typedef PVScalarValue PVShort; typedef PVScalarValue PVInt; @@ -1373,8 +1373,8 @@ private: /** * Definitions for the various scalarArray types. */ -typedef PVArrayData BooleanArrayData; -typedef PVValueArray PVBooleanArray; +typedef PVArrayData BooleanArrayData; +typedef PVValueArray PVBooleanArray; typedef std::tr1::shared_ptr PVBooleanArrayPtr; typedef PVArrayData ByteArrayData; diff --git a/pvDataApp/pv/pvType.h b/pvDataApp/pv/pvType.h index b9ffce7..0dc2b81 100644 --- a/pvDataApp/pv/pvType.h +++ b/pvDataApp/pv/pvType.h @@ -33,6 +33,14 @@ typedef unsigned int uintptr_t; namespace epics { namespace pvData { +namespace detail { + // Pick either type If or type Else to not be Cond + template + struct pick_type { typedef If type; }; + template + struct pick_type { typedef Else type; }; +} + /** * This is a set of typdefs used by pvData. */ @@ -40,7 +48,9 @@ namespace epics { namespace pvData { /** * boolean, i.e. can only have the values {@code false} or {@code true} */ -typedef uint8_t boolean; +typedef detail::pick_type::type + >::type boolean; /** * A 8 bit signed integer */