PVData C++  8.0.3
typemap.h
1 /* #define CASE(BASETYPE, PVATYPE, DBFTYPE, PVACODE)
2  *
3  * Helper for switch() on type code
4  *
5  * BASETYPE is suffix of type from epicsTypes.h
6  * epics ## BASETYPE -> eg. epicsUInt8
7  * PVATYPE is storage type
8  * PVATYPE -> eg epics::pvData::uint8
9  * DBFTYPE is suffix of DBF_*
10  * DBF_ ## DBFTYPE -> eg. DBF_UCHAR
11  * PVACODE is suffix of ScalarType enum
12  * epics::pvData::pv ## PVACODE -> epics::pvData::pvUByte
13  */
14 CASE(UInt8, epics::pvData::uint8, UCHAR, UByte)
15 CASE(Int8, epics::pvData::int8, CHAR, Byte)
16 CASE(UInt16, epics::pvData::uint16, USHORT, UShort)
17 CASE(Int16, epics::pvData::int16, SHORT, Short)
18 CASE(UInt32, epics::pvData::uint32, ULONG, UInt)
19 CASE(Int32, epics::pvData::int32, LONG, Int)
20 CASE(Float32, float, FLOAT, Float)
21 CASE(Float64, double, DOUBLE, Double)
22 #ifndef CASE_SKIP_BOOL
23 CASE(UInt8, epics::pvData::boolean, UCHAR, Boolean)
24 #endif
25 #ifdef CASE_REAL_INT64
26 CASE(UInt64, epics::pvData::uint64, UINT64, ULong)
27 CASE(Int64, epics::pvData::int64, INT64, Long)
28 #elif defined(CASE_SQUEEZE_INT64)
29 CASE(UInt32, epics::pvData::uint64, ULONG, ULong)
30 CASE(Int32, epics::pvData::int64, LONG, Long)
31 #else
32 /* nothing */
33 #endif
34 #ifdef CASE_ENUM
35 // yes really, Base uses SHORT (16-bit) while PVD uses Int (32-bit)
36 CASE(Enum16, epics::pvData::int32, ENUM, Int)
37 #endif
38 #ifdef CASE_STRING
39 CASE(Int8, std::string, CHAR, String)
40 #endif
41 /* #undef CASE */