Once an object meets the criteria above, we can consider it a
Primitive type in SDLT. In order for Container's to import and export the
Primitive, it has to understand its data layout. Unfortunately C++11 lacks
compile time reflection, so the user must provide SDLT with a description of
your structure's data layout. This is easily done with the SDLT_PRIMITIVE
helper macro that accepts a struct type followed by a comma separated list of
its data members.
SDLT_PRIMITIVE(STRUCT_NAME, DATA_MEMBER_1, ...)
SDLT_PRIMITIVE(UserObject, x, y, acceleration, behavior)
An object must be declared as a Primitive before it can be used in a
Container. However, built-in types like float, double, int, etc. do not need to
be declared as a Primitive before use with a Container. Built-in's are
automatically considered Primitives by SDLT.
Nested Primitives are supported, but the nested Primitive must be
declared before the outer Primitive is. Example: Axis Aligned Bounding Box made
up of two 3d points
SDLT_PRIMITIVE(Point3s, x, y, z)
SDLT_PRIMITIVE(AABB, topLeft, bottomRight)
definitions themselves do not derive from SDLT
or use any of its nomenclature. This independence allows classes to be used in
code not using SDLT and only code that does use SDLT Containers needs to see
the Primitive declarations.