Binary String Types
The type of structure used depends on whether or not a length facet is applied to the type. If a length facet is not used, or the length is a very large value (> 32K), a built-in type containing a pointer to a dynamic memory buffer is used to hold the binary data. The definition of this type in osSysTypes.h is as follows:
typedef struct OSDynOctStr { OSUINT32 numocts; const OSOCTET* data; } OSDynOctStr;class OSDynOctStrClass : public OSRTBaseType { protected: OSUINT32 numocts; const OSOCTET* data; public: ... } ;This class provides methods for getting and setting the data values as well as initialization through constructors and other utility methods.
If a length facet is used that restricts the size of the binary string to a value less than 32K, a custom type is generated that contains a static array to hold the data. The general form of this type is as follows:
typedef struct TypeName { OSUINT32 numocts; OSOCTET data[length]; } TypeName;In this case, TypeName would be the name of the type defined in the XSD specification and length would be the value of the length facet.
class TypeName : public OSRTBaseType { OSUINT32 numocts; OSOCTET data[length]; ... } ;
<xsd:simpleType name="TypeName"> <restriction base="xsd:hexBinary"/> </xsd:simpleType> typedef OSDynOctStr TypeName; class TypeName : public OSDynOctStrClass { ... } ;
Copyright © Objective Systems 2002-2008 This document may be distributed in any form, electronic or otherwise, provided that it is distributed in its entirety and that the copyright and this notice are included. |
Objective Systems, Inc.55 Dowlin Forge RoadExton, Pennsylvania 19341 http://www.obj-sys.com Phone: (484) 875-9841 Toll-free: (877) 307-6855 (US only) Fax: (484) 875-9830 info@obj-sys.com |