3.2 Object Model and Data Types

SDDS++ represents the header separately from page data and uses typed C++ values instead of untyped allocation routines. The principal types are:

The relationship between SDDS types and exact C++ value types is shown below.

SDDS typesdds::Type value Exact C++ type



longdouble Type::LongDoublelong double
double Type::Double double
float Type::Float float
long64 Type::Int64 std::int64_t
ulong64 Type::UInt64 std::uint64_t
long Type::Int32 std::int32_t
ulong Type::UInt32 std::uint32_t
short Type::Int16 std::int16_t
ushort Type::UInt16 std::uint16_t
string Type::String std::string
character Type::Character char

typeOf returns the SDDS type represented by a Scalar or Values object, and typeName returns its protocol name. Exact typed access is available through methods such as parameterAs<T>, columnAs<T>, and arrayAs<T>. The corresponding parameterConverted<T>, columnConverted<T>, and arrayConverted<T> methods perform checked numeric conversion. Overflow or invalid narrowing throws TypeError; floating-point-to-integer conversion requires an explicit RoundingMode unless the value is already integral.