blob: e9445de5d19c766553233449f295fd593797adc7 [file] [log] [blame]
#include "generated_code.h"
#include <math.h> // for NAN
#include <stdbool.h> // for bool, true, false
#include <stddef.h> // for NULL, size_t
#include "errors.h" // for Error, PState, UState, ERR_CHOICE_KEY, UNUSED
#include "parsers.h" // for parse_be_float, parse_be_int16, parse_be_bool32, parse_validate_fixed, parse_be_bool16, parse_be_int32, parse_be_uint32, parse_le_bool32, parse_le_int64, parse_le_uint8, parse_be_bool8, parse_be_double, parse_be_int64, parse_be_int8, parse_be_uint16, parse_be_uint64, parse_be_uint8, parse_le_bool16, parse_le_bool8, parse_le_double, parse_le_float, parse_le_int16, parse_le_int32, parse_le_int8, parse_le_uint16, parse_le_uint32, parse_le_uint64
#include "unparsers.h" // for unparse_be_float, unparse_be_int16, unparse_be_bool32, unparse_validate_fixed, unparse_be_bool16, unparse_be_int32, unparse_be_uint32, unparse_le_bool32, unparse_le_int64, unparse_le_uint8, unparse_be_bool8, unparse_be_double, unparse_be_int64, unparse_be_int8, unparse_be_uint16, unparse_be_uint64, unparse_be_uint8, unparse_le_bool16, unparse_le_bool8, unparse_le_double, unparse_le_float, unparse_le_int16, unparse_le_int32, unparse_le_int8, unparse_le_uint16, unparse_le_uint32, unparse_le_uint64
// Initialize our program's name and version
const char *daffodil_program_version = "daffodil-runtime2 3.1.0";
// Declare prototypes for easier compilation
static void array_initSelf(array *instance);
static void array_parseSelf(array *instance, PState *pstate);
static void array_unparseSelf(const array *instance, UState *ustate);
static void bigEndian_initSelf(bigEndian *instance);
static void bigEndian_parseSelf(bigEndian *instance, PState *pstate);
static void bigEndian_unparseSelf(const bigEndian *instance, UState *ustate);
static void littleEndian_initSelf(littleEndian *instance);
static void littleEndian_parseSelf(littleEndian *instance, PState *pstate);
static void littleEndian_unparseSelf(const littleEndian *instance, UState *ustate);
static void fixed_initSelf(fixed *instance);
static void fixed_parseSelf(fixed *instance, PState *pstate);
static void fixed_unparseSelf(const fixed *instance, UState *ustate);
static void ex_nums_initSelf(ex_nums *instance);
static void ex_nums_parseSelf(ex_nums *instance, PState *pstate);
static void ex_nums_unparseSelf(const ex_nums *instance, UState *ustate);
// Define metadata for the infoset
static const ERD be_bool16_array_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_bool16", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_BOOLEAN, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_float_array_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_float", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_FLOAT, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_int16_array_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_int16", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_INT16, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const array array_compute_offsets;
static const size_t array_offsets[8] = {
(const char *)&array_compute_offsets.be_bool16[0] - (const char *)&array_compute_offsets,
(const char *)&array_compute_offsets.be_bool16[1] - (const char *)&array_compute_offsets,
(const char *)&array_compute_offsets.be_float[0] - (const char *)&array_compute_offsets,
(const char *)&array_compute_offsets.be_float[1] - (const char *)&array_compute_offsets,
(const char *)&array_compute_offsets.be_float[2] - (const char *)&array_compute_offsets,
(const char *)&array_compute_offsets.be_int16[0] - (const char *)&array_compute_offsets,
(const char *)&array_compute_offsets.be_int16[1] - (const char *)&array_compute_offsets,
(const char *)&array_compute_offsets.be_int16[2] - (const char *)&array_compute_offsets
};
static const ERD *array_childrenERDs[8] = {
&be_bool16_array_ex_nums_ERD,
&be_bool16_array_ex_nums_ERD,
&be_float_array_ex_nums_ERD,
&be_float_array_ex_nums_ERD,
&be_float_array_ex_nums_ERD,
&be_int16_array_ex_nums_ERD,
&be_int16_array_ex_nums_ERD,
&be_int16_array_ex_nums_ERD
};
static const ERD array_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"array", // namedQName.local
NULL, // namedQName.ns
},
COMPLEX, // typeCode
8, // numChildren
array_offsets, // offsets
array_childrenERDs, // childrenERDs
(ERDInitSelf)&array_initSelf, // initSelf
(ERDParseSelf)&array_parseSelf, // parseSelf
(ERDUnparseSelf)&array_unparseSelf, // unparseSelf
NULL // initChoice
};
static const ERD be_bool16_bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_bool16", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_BOOLEAN, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_bool32_bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_bool32", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_BOOLEAN, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_bool8_bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_bool8", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_BOOLEAN, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_boolean_bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_boolean", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_BOOLEAN, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_double_bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_double", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_DOUBLE, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_float_bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_float", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_FLOAT, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_int16_bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_int16", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_INT16, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_int32_bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_int32", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_INT32, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_int64_bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_int64", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_INT64, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_int8_bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_int8", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_INT8, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_integer16_bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_integer16", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_INT16, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_uint16_bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_uint16", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_UINT16, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_uint32_bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_uint32", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_UINT32, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_uint64_bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_uint64", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_UINT64, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_uint8_bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_uint8", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_UINT8, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD be_nonNegativeInteger32_bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"be_nonNegativeInteger32", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_UINT32, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const bigEndian bigEndian_compute_offsets;
static const size_t bigEndian_offsets[16] = {
(const char *)&bigEndian_compute_offsets.be_bool16 - (const char *)&bigEndian_compute_offsets,
(const char *)&bigEndian_compute_offsets.be_bool32 - (const char *)&bigEndian_compute_offsets,
(const char *)&bigEndian_compute_offsets.be_bool8 - (const char *)&bigEndian_compute_offsets,
(const char *)&bigEndian_compute_offsets.be_boolean - (const char *)&bigEndian_compute_offsets,
(const char *)&bigEndian_compute_offsets.be_double - (const char *)&bigEndian_compute_offsets,
(const char *)&bigEndian_compute_offsets.be_float - (const char *)&bigEndian_compute_offsets,
(const char *)&bigEndian_compute_offsets.be_int16 - (const char *)&bigEndian_compute_offsets,
(const char *)&bigEndian_compute_offsets.be_int32 - (const char *)&bigEndian_compute_offsets,
(const char *)&bigEndian_compute_offsets.be_int64 - (const char *)&bigEndian_compute_offsets,
(const char *)&bigEndian_compute_offsets.be_int8 - (const char *)&bigEndian_compute_offsets,
(const char *)&bigEndian_compute_offsets.be_integer16 - (const char *)&bigEndian_compute_offsets,
(const char *)&bigEndian_compute_offsets.be_uint16 - (const char *)&bigEndian_compute_offsets,
(const char *)&bigEndian_compute_offsets.be_uint32 - (const char *)&bigEndian_compute_offsets,
(const char *)&bigEndian_compute_offsets.be_uint64 - (const char *)&bigEndian_compute_offsets,
(const char *)&bigEndian_compute_offsets.be_uint8 - (const char *)&bigEndian_compute_offsets,
(const char *)&bigEndian_compute_offsets.be_nonNegativeInteger32 - (const char *)&bigEndian_compute_offsets
};
static const ERD *bigEndian_childrenERDs[16] = {
&be_bool16_bigEndian_ex_nums_ERD,
&be_bool32_bigEndian_ex_nums_ERD,
&be_bool8_bigEndian_ex_nums_ERD,
&be_boolean_bigEndian_ex_nums_ERD,
&be_double_bigEndian_ex_nums_ERD,
&be_float_bigEndian_ex_nums_ERD,
&be_int16_bigEndian_ex_nums_ERD,
&be_int32_bigEndian_ex_nums_ERD,
&be_int64_bigEndian_ex_nums_ERD,
&be_int8_bigEndian_ex_nums_ERD,
&be_integer16_bigEndian_ex_nums_ERD,
&be_uint16_bigEndian_ex_nums_ERD,
&be_uint32_bigEndian_ex_nums_ERD,
&be_uint64_bigEndian_ex_nums_ERD,
&be_uint8_bigEndian_ex_nums_ERD,
&be_nonNegativeInteger32_bigEndian_ex_nums_ERD
};
static const ERD bigEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"bigEndian", // namedQName.local
NULL, // namedQName.ns
},
COMPLEX, // typeCode
16, // numChildren
bigEndian_offsets, // offsets
bigEndian_childrenERDs, // childrenERDs
(ERDInitSelf)&bigEndian_initSelf, // initSelf
(ERDParseSelf)&bigEndian_parseSelf, // parseSelf
(ERDUnparseSelf)&bigEndian_unparseSelf, // unparseSelf
NULL // initChoice
};
static const ERD le_bool16_littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"le_bool16", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_BOOLEAN, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD le_bool32_littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"le_bool32", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_BOOLEAN, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD le_bool8_littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"le_bool8", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_BOOLEAN, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD le_boolean_littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"le_boolean", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_BOOLEAN, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD le_double_littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"le_double", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_DOUBLE, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD le_float_littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"le_float", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_FLOAT, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD le_int16_littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"le_int16", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_INT16, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD le_int32_littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"le_int32", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_INT32, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD le_int64_littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"le_int64", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_INT64, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD le_int8_littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"le_int8", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_INT8, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD le_integer64_littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"le_integer64", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_INT64, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD le_uint16_littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"le_uint16", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_UINT16, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD le_uint32_littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"le_uint32", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_UINT32, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD le_uint64_littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"le_uint64", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_UINT64, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD le_uint8_littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"le_uint8", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_UINT8, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD le_nonNegativeInteger8_littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"le_nonNegativeInteger8", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_UINT8, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const littleEndian littleEndian_compute_offsets;
static const size_t littleEndian_offsets[16] = {
(const char *)&littleEndian_compute_offsets.le_bool16 - (const char *)&littleEndian_compute_offsets,
(const char *)&littleEndian_compute_offsets.le_bool32 - (const char *)&littleEndian_compute_offsets,
(const char *)&littleEndian_compute_offsets.le_bool8 - (const char *)&littleEndian_compute_offsets,
(const char *)&littleEndian_compute_offsets.le_boolean - (const char *)&littleEndian_compute_offsets,
(const char *)&littleEndian_compute_offsets.le_double - (const char *)&littleEndian_compute_offsets,
(const char *)&littleEndian_compute_offsets.le_float - (const char *)&littleEndian_compute_offsets,
(const char *)&littleEndian_compute_offsets.le_int16 - (const char *)&littleEndian_compute_offsets,
(const char *)&littleEndian_compute_offsets.le_int32 - (const char *)&littleEndian_compute_offsets,
(const char *)&littleEndian_compute_offsets.le_int64 - (const char *)&littleEndian_compute_offsets,
(const char *)&littleEndian_compute_offsets.le_int8 - (const char *)&littleEndian_compute_offsets,
(const char *)&littleEndian_compute_offsets.le_integer64 - (const char *)&littleEndian_compute_offsets,
(const char *)&littleEndian_compute_offsets.le_uint16 - (const char *)&littleEndian_compute_offsets,
(const char *)&littleEndian_compute_offsets.le_uint32 - (const char *)&littleEndian_compute_offsets,
(const char *)&littleEndian_compute_offsets.le_uint64 - (const char *)&littleEndian_compute_offsets,
(const char *)&littleEndian_compute_offsets.le_uint8 - (const char *)&littleEndian_compute_offsets,
(const char *)&littleEndian_compute_offsets.le_nonNegativeInteger8 - (const char *)&littleEndian_compute_offsets
};
static const ERD *littleEndian_childrenERDs[16] = {
&le_bool16_littleEndian_ex_nums_ERD,
&le_bool32_littleEndian_ex_nums_ERD,
&le_bool8_littleEndian_ex_nums_ERD,
&le_boolean_littleEndian_ex_nums_ERD,
&le_double_littleEndian_ex_nums_ERD,
&le_float_littleEndian_ex_nums_ERD,
&le_int16_littleEndian_ex_nums_ERD,
&le_int32_littleEndian_ex_nums_ERD,
&le_int64_littleEndian_ex_nums_ERD,
&le_int8_littleEndian_ex_nums_ERD,
&le_integer64_littleEndian_ex_nums_ERD,
&le_uint16_littleEndian_ex_nums_ERD,
&le_uint32_littleEndian_ex_nums_ERD,
&le_uint64_littleEndian_ex_nums_ERD,
&le_uint8_littleEndian_ex_nums_ERD,
&le_nonNegativeInteger8_littleEndian_ex_nums_ERD
};
static const ERD littleEndian_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"littleEndian", // namedQName.local
NULL, // namedQName.ns
},
COMPLEX, // typeCode
16, // numChildren
littleEndian_offsets, // offsets
littleEndian_childrenERDs, // childrenERDs
(ERDInitSelf)&littleEndian_initSelf, // initSelf
(ERDParseSelf)&littleEndian_parseSelf, // parseSelf
(ERDUnparseSelf)&littleEndian_unparseSelf, // unparseSelf
NULL // initChoice
};
static const ERD boolean_false_fixed_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"boolean_false", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_BOOLEAN, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD boolean_true_fixed_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"boolean_true", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_BOOLEAN, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD float_1_5_fixed_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"float_1_5", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_FLOAT, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const ERD int_32_fixed_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"int_32", // namedQName.local
NULL, // namedQName.ns
},
PRIMITIVE_INT32, // typeCode
0, NULL, NULL, NULL, NULL, NULL, NULL
};
static const fixed fixed_compute_offsets;
static const size_t fixed_offsets[4] = {
(const char *)&fixed_compute_offsets.boolean_false - (const char *)&fixed_compute_offsets,
(const char *)&fixed_compute_offsets.boolean_true - (const char *)&fixed_compute_offsets,
(const char *)&fixed_compute_offsets.float_1_5 - (const char *)&fixed_compute_offsets,
(const char *)&fixed_compute_offsets.int_32 - (const char *)&fixed_compute_offsets
};
static const ERD *fixed_childrenERDs[4] = {
&boolean_false_fixed_ex_nums_ERD,
&boolean_true_fixed_ex_nums_ERD,
&float_1_5_fixed_ex_nums_ERD,
&int_32_fixed_ex_nums_ERD
};
static const ERD fixed_ex_nums_ERD = {
{
NULL, // namedQName.prefix
"fixed", // namedQName.local
NULL, // namedQName.ns
},
COMPLEX, // typeCode
4, // numChildren
fixed_offsets, // offsets
fixed_childrenERDs, // childrenERDs
(ERDInitSelf)&fixed_initSelf, // initSelf
(ERDParseSelf)&fixed_parseSelf, // parseSelf
(ERDUnparseSelf)&fixed_unparseSelf, // unparseSelf
NULL // initChoice
};
static const ex_nums ex_nums_compute_offsets;
static const size_t ex_nums_offsets[4] = {
(const char *)&ex_nums_compute_offsets.array - (const char *)&ex_nums_compute_offsets,
(const char *)&ex_nums_compute_offsets.bigEndian - (const char *)&ex_nums_compute_offsets,
(const char *)&ex_nums_compute_offsets.littleEndian - (const char *)&ex_nums_compute_offsets,
(const char *)&ex_nums_compute_offsets.fixed - (const char *)&ex_nums_compute_offsets
};
static const ERD *ex_nums_childrenERDs[4] = {
&array_ex_nums_ERD,
&bigEndian_ex_nums_ERD,
&littleEndian_ex_nums_ERD,
&fixed_ex_nums_ERD
};
static const ERD ex_nums_ERD = {
{
NULL, // namedQName.prefix
"ex_nums", // namedQName.local
"http://example.com", // namedQName.ns
},
COMPLEX, // typeCode
4, // numChildren
ex_nums_offsets, // offsets
ex_nums_childrenERDs, // childrenERDs
(ERDInitSelf)&ex_nums_initSelf, // initSelf
(ERDParseSelf)&ex_nums_parseSelf, // parseSelf
(ERDUnparseSelf)&ex_nums_unparseSelf, // unparseSelf
NULL // initChoice
};
// Return a root element for parsing or unparsing the infoset
InfosetBase *
rootElement(void)
{
static bool initialized;
static ex_nums root;
if (!initialized)
{
ex_nums_initSelf(&root);
initialized = true;
}
return &root._base;
}
// Initialize, parse, and unparse nodes of the infoset
static void
array_initSelf(array *instance)
{
instance->_base.erd = &array_ex_nums_ERD;
instance->be_bool16[0] = true;
instance->be_bool16[1] = true;
instance->be_float[0] = NAN;
instance->be_float[1] = NAN;
instance->be_float[2] = NAN;
instance->be_int16[0] = 0xCCCC;
instance->be_int16[1] = 0xCCCC;
instance->be_int16[2] = 0xCCCC;
}
static void
array_parseSelf(array *instance, PState *pstate)
{
parse_be_bool16(&instance->be_bool16[0], -1, 0, pstate);
if (pstate->error) return;
parse_be_bool16(&instance->be_bool16[1], -1, 0, pstate);
if (pstate->error) return;
parse_be_float(&instance->be_float[0], pstate);
if (pstate->error) return;
parse_be_float(&instance->be_float[1], pstate);
if (pstate->error) return;
parse_be_float(&instance->be_float[2], pstate);
if (pstate->error) return;
parse_be_int16(&instance->be_int16[0], pstate);
if (pstate->error) return;
parse_be_int16(&instance->be_int16[1], pstate);
if (pstate->error) return;
parse_be_int16(&instance->be_int16[2], pstate);
if (pstate->error) return;
}
static void
array_unparseSelf(const array *instance, UState *ustate)
{
unparse_be_bool16(instance->be_bool16[0], ~0, 0, ustate);
if (ustate->error) return;
unparse_be_bool16(instance->be_bool16[1], ~0, 0, ustate);
if (ustate->error) return;
unparse_be_float(instance->be_float[0], ustate);
if (ustate->error) return;
unparse_be_float(instance->be_float[1], ustate);
if (ustate->error) return;
unparse_be_float(instance->be_float[2], ustate);
if (ustate->error) return;
unparse_be_int16(instance->be_int16[0], ustate);
if (ustate->error) return;
unparse_be_int16(instance->be_int16[1], ustate);
if (ustate->error) return;
unparse_be_int16(instance->be_int16[2], ustate);
if (ustate->error) return;
}
static void
bigEndian_initSelf(bigEndian *instance)
{
instance->_base.erd = &bigEndian_ex_nums_ERD;
instance->be_bool16 = true;
instance->be_bool32 = true;
instance->be_bool8 = true;
instance->be_boolean = true;
instance->be_double = NAN;
instance->be_float = NAN;
instance->be_int16 = 0xCCCC;
instance->be_int32 = 0xCCCCCCCC;
instance->be_int64 = 0xCCCCCCCCCCCCCCCC;
instance->be_int8 = 0xCC;
instance->be_integer16 = 0xCCCC;
instance->be_uint16 = 0xCCCC;
instance->be_uint32 = 0xCCCCCCCC;
instance->be_uint64 = 0xCCCCCCCCCCCCCCCC;
instance->be_uint8 = 0xCC;
instance->be_nonNegativeInteger32 = 0xCCCCCCCC;
}
static void
bigEndian_parseSelf(bigEndian *instance, PState *pstate)
{
parse_be_bool16(&instance->be_bool16, 1, 0, pstate);
if (pstate->error) return;
parse_be_bool32(&instance->be_bool32, -1, 0, pstate);
if (pstate->error) return;
parse_be_bool8(&instance->be_bool8, -1, 0, pstate);
if (pstate->error) return;
parse_be_bool32(&instance->be_boolean, -1, 0, pstate);
if (pstate->error) return;
parse_be_double(&instance->be_double, pstate);
if (pstate->error) return;
parse_be_float(&instance->be_float, pstate);
if (pstate->error) return;
parse_be_int16(&instance->be_int16, pstate);
if (pstate->error) return;
parse_be_int32(&instance->be_int32, pstate);
if (pstate->error) return;
parse_be_int64(&instance->be_int64, pstate);
if (pstate->error) return;
parse_be_int8(&instance->be_int8, pstate);
if (pstate->error) return;
parse_be_int16(&instance->be_integer16, pstate);
if (pstate->error) return;
parse_be_uint16(&instance->be_uint16, pstate);
if (pstate->error) return;
parse_be_uint32(&instance->be_uint32, pstate);
if (pstate->error) return;
parse_be_uint64(&instance->be_uint64, pstate);
if (pstate->error) return;
parse_be_uint8(&instance->be_uint8, pstate);
if (pstate->error) return;
parse_be_uint32(&instance->be_nonNegativeInteger32, pstate);
if (pstate->error) return;
}
static void
bigEndian_unparseSelf(const bigEndian *instance, UState *ustate)
{
unparse_be_bool16(instance->be_bool16, 1, 0, ustate);
if (ustate->error) return;
unparse_be_bool32(instance->be_bool32, ~0, 0, ustate);
if (ustate->error) return;
unparse_be_bool8(instance->be_bool8, ~0, 0, ustate);
if (ustate->error) return;
unparse_be_bool32(instance->be_boolean, ~0, 0, ustate);
if (ustate->error) return;
unparse_be_double(instance->be_double, ustate);
if (ustate->error) return;
unparse_be_float(instance->be_float, ustate);
if (ustate->error) return;
unparse_be_int16(instance->be_int16, ustate);
if (ustate->error) return;
unparse_be_int32(instance->be_int32, ustate);
if (ustate->error) return;
unparse_be_int64(instance->be_int64, ustate);
if (ustate->error) return;
unparse_be_int8(instance->be_int8, ustate);
if (ustate->error) return;
unparse_be_int16(instance->be_integer16, ustate);
if (ustate->error) return;
unparse_be_uint16(instance->be_uint16, ustate);
if (ustate->error) return;
unparse_be_uint32(instance->be_uint32, ustate);
if (ustate->error) return;
unparse_be_uint64(instance->be_uint64, ustate);
if (ustate->error) return;
unparse_be_uint8(instance->be_uint8, ustate);
if (ustate->error) return;
unparse_be_uint32(instance->be_nonNegativeInteger32, ustate);
if (ustate->error) return;
}
static void
littleEndian_initSelf(littleEndian *instance)
{
instance->_base.erd = &littleEndian_ex_nums_ERD;
instance->le_bool16 = true;
instance->le_bool32 = true;
instance->le_bool8 = true;
instance->le_boolean = true;
instance->le_double = NAN;
instance->le_float = NAN;
instance->le_int16 = 0xCCCC;
instance->le_int32 = 0xCCCCCCCC;
instance->le_int64 = 0xCCCCCCCCCCCCCCCC;
instance->le_int8 = 0xCC;
instance->le_integer64 = 0xCCCCCCCCCCCCCCCC;
instance->le_uint16 = 0xCCCC;
instance->le_uint32 = 0xCCCCCCCC;
instance->le_uint64 = 0xCCCCCCCCCCCCCCCC;
instance->le_uint8 = 0xCC;
instance->le_nonNegativeInteger8 = 0xCC;
}
static void
littleEndian_parseSelf(littleEndian *instance, PState *pstate)
{
parse_le_bool16(&instance->le_bool16, 1, 0, pstate);
if (pstate->error) return;
parse_le_bool32(&instance->le_bool32, -1, 0, pstate);
if (pstate->error) return;
parse_le_bool8(&instance->le_bool8, -1, 0, pstate);
if (pstate->error) return;
parse_le_bool32(&instance->le_boolean, -1, 0, pstate);
if (pstate->error) return;
parse_le_double(&instance->le_double, pstate);
if (pstate->error) return;
parse_le_float(&instance->le_float, pstate);
if (pstate->error) return;
parse_le_int16(&instance->le_int16, pstate);
if (pstate->error) return;
parse_le_int32(&instance->le_int32, pstate);
if (pstate->error) return;
parse_le_int64(&instance->le_int64, pstate);
if (pstate->error) return;
parse_le_int8(&instance->le_int8, pstate);
if (pstate->error) return;
parse_le_int64(&instance->le_integer64, pstate);
if (pstate->error) return;
parse_le_uint16(&instance->le_uint16, pstate);
if (pstate->error) return;
parse_le_uint32(&instance->le_uint32, pstate);
if (pstate->error) return;
parse_le_uint64(&instance->le_uint64, pstate);
if (pstate->error) return;
parse_le_uint8(&instance->le_uint8, pstate);
if (pstate->error) return;
parse_le_uint8(&instance->le_nonNegativeInteger8, pstate);
if (pstate->error) return;
}
static void
littleEndian_unparseSelf(const littleEndian *instance, UState *ustate)
{
unparse_le_bool16(instance->le_bool16, 1, 0, ustate);
if (ustate->error) return;
unparse_le_bool32(instance->le_bool32, ~0, 0, ustate);
if (ustate->error) return;
unparse_le_bool8(instance->le_bool8, ~0, 0, ustate);
if (ustate->error) return;
unparse_le_bool32(instance->le_boolean, ~0, 0, ustate);
if (ustate->error) return;
unparse_le_double(instance->le_double, ustate);
if (ustate->error) return;
unparse_le_float(instance->le_float, ustate);
if (ustate->error) return;
unparse_le_int16(instance->le_int16, ustate);
if (ustate->error) return;
unparse_le_int32(instance->le_int32, ustate);
if (ustate->error) return;
unparse_le_int64(instance->le_int64, ustate);
if (ustate->error) return;
unparse_le_int8(instance->le_int8, ustate);
if (ustate->error) return;
unparse_le_int64(instance->le_integer64, ustate);
if (ustate->error) return;
unparse_le_uint16(instance->le_uint16, ustate);
if (ustate->error) return;
unparse_le_uint32(instance->le_uint32, ustate);
if (ustate->error) return;
unparse_le_uint64(instance->le_uint64, ustate);
if (ustate->error) return;
unparse_le_uint8(instance->le_uint8, ustate);
if (ustate->error) return;
unparse_le_uint8(instance->le_nonNegativeInteger8, ustate);
if (ustate->error) return;
}
static void
fixed_initSelf(fixed *instance)
{
instance->_base.erd = &fixed_ex_nums_ERD;
instance->boolean_false = true;
instance->boolean_true = true;
instance->float_1_5 = NAN;
instance->int_32 = 0xCCCCCCCC;
}
static void
fixed_parseSelf(fixed *instance, PState *pstate)
{
parse_be_bool32(&instance->boolean_false, -1, 0, pstate);
if (pstate->error) return;
parse_validate_fixed(instance->boolean_false == false, "boolean_false", pstate);
if (pstate->error) return;
parse_be_bool32(&instance->boolean_true, -1, 0, pstate);
if (pstate->error) return;
parse_validate_fixed(instance->boolean_true == true, "boolean_true", pstate);
if (pstate->error) return;
parse_be_float(&instance->float_1_5, pstate);
if (pstate->error) return;
parse_validate_fixed(instance->float_1_5 == 1.5, "float_1_5", pstate);
if (pstate->error) return;
parse_be_int32(&instance->int_32, pstate);
if (pstate->error) return;
parse_validate_fixed(instance->int_32 == 32, "int_32", pstate);
if (pstate->error) return;
}
static void
fixed_unparseSelf(const fixed *instance, UState *ustate)
{
unparse_be_bool32(instance->boolean_false, ~0, 0, ustate);
if (ustate->error) return;
unparse_validate_fixed(instance->boolean_false == false, "boolean_false", ustate);
if (ustate->error) return;
unparse_be_bool32(instance->boolean_true, ~0, 0, ustate);
if (ustate->error) return;
unparse_validate_fixed(instance->boolean_true == true, "boolean_true", ustate);
if (ustate->error) return;
unparse_be_float(instance->float_1_5, ustate);
if (ustate->error) return;
unparse_validate_fixed(instance->float_1_5 == 1.5, "float_1_5", ustate);
if (ustate->error) return;
unparse_be_int32(instance->int_32, ustate);
if (ustate->error) return;
unparse_validate_fixed(instance->int_32 == 32, "int_32", ustate);
if (ustate->error) return;
}
static void
ex_nums_initSelf(ex_nums *instance)
{
instance->_base.erd = &ex_nums_ERD;
array_initSelf(&instance->array);
bigEndian_initSelf(&instance->bigEndian);
littleEndian_initSelf(&instance->littleEndian);
fixed_initSelf(&instance->fixed);
}
static void
ex_nums_parseSelf(ex_nums *instance, PState *pstate)
{
array_parseSelf(&instance->array, pstate);
if (pstate->error) return;
bigEndian_parseSelf(&instance->bigEndian, pstate);
if (pstate->error) return;
littleEndian_parseSelf(&instance->littleEndian, pstate);
if (pstate->error) return;
fixed_parseSelf(&instance->fixed, pstate);
if (pstate->error) return;
}
static void
ex_nums_unparseSelf(const ex_nums *instance, UState *ustate)
{
array_unparseSelf(&instance->array, ustate);
if (ustate->error) return;
bigEndian_unparseSelf(&instance->bigEndian, ustate);
if (ustate->error) return;
littleEndian_unparseSelf(&instance->littleEndian, ustate);
if (ustate->error) return;
fixed_unparseSelf(&instance->fixed, ustate);
if (ustate->error) return;
}