/* This work is licensed under a Creative Commons CCZero 1.0 Universal License. * See http://creativecommons.org/publicdomain/zero/1.0/ for more information. */ typedef struct { UA_Float x; UA_Float y; UA_Float z; } Point; /* The datatype description for the Point datatype */ #define Point_padding_y offsetof(Point,y) - offsetof(Point,x) - sizeof(UA_Float) #define Point_padding_z offsetof(Point,z) - offsetof(Point,y) - sizeof(UA_Float) static UA_DataTypeMember Point_members[3] = { /* x */ { UA_TYPENAME("x") /* .memberName */ UA_TYPES_FLOAT, /* .memberTypeIndex, points into UA_TYPES since namespaceZero is true */ 0, /* .padding */ true, /* .namespaceZero, see .memberTypeIndex */ false /* .isArray */ }, /* y */ { UA_TYPENAME("y") UA_TYPES_FLOAT, Point_padding_y, true, false }, /* z */ { UA_TYPENAME("z") UA_TYPES_FLOAT, Point_padding_z, true, false } }; static const UA_DataType PointType = { UA_TYPENAME("Point") /* .typeName */ {1, UA_NODEIDTYPE_NUMERIC, {4242}}, /* .typeId */ sizeof(Point), /* .memSize */ 0, /* .typeIndex, in the array of custom types */ 3, /* .membersSize */ false, /* .builtin */ true, /* .pointerFree */ false, /* .overlayable (depends on endianness and the absence of padding) */ 0, /* .binaryEncodingId, the numeric identifier used on the wire (the namespaceindex is from .typeId) */ Point_members };