|
|
@@ -249,53 +249,6 @@ static int _exiEncodeNamespaceUriID(bitstream_t* stream, exi_name_table_prepopul
|
|
|
}
|
|
|
|
|
|
|
|
|
-#if EXI_DEBUG == EXI_DEBUG_ON
|
|
|
-static int _exiEncodeNamespaceUri(bitstream_t* stream, exi_name_table_prepopulated_t* nameTable, exi_name_table_runtime_t* runtimeTable,
|
|
|
- char** uri, uint16_t* uriID) {
|
|
|
- int errn;
|
|
|
- uint16_t uriCodingLength;
|
|
|
- uint16_t uriSize;
|
|
|
-
|
|
|
- errn = exiGetUriSize(nameTable, runtimeTable, &uriSize);
|
|
|
- if (errn) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
- /* URI Entries + 1 */
|
|
|
- errn = exiGetCodingLength(uriSize + 1, &uriCodingLength);
|
|
|
- if (errn) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
-
|
|
|
- errn = exiGetUriID(nameTable, runtimeTable, *uri, uriID);
|
|
|
- if (errn < 0) {
|
|
|
- return errn;
|
|
|
- } else if (errn == 1) {
|
|
|
- /* uri string value was not found */
|
|
|
- /* ==> zero (0) as an n-nit unsigned integer */
|
|
|
- /* followed by uri encoded as string */
|
|
|
- errn = encodeNBitUnsignedInteger(stream, uriCodingLength, 0);
|
|
|
- if (errn) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
- /* ASCII String */
|
|
|
- errn = encodeASCII(stream, *uri);
|
|
|
- if (errn) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
- /* after encoding string value is added to table */
|
|
|
- /* in UCD Profile NOT */
|
|
|
- *uriID = uriSize;
|
|
|
- } else {
|
|
|
- /* uri string value found */
|
|
|
- /* ==> value(i+1) is encoded as n-bit unsigned integer */
|
|
|
- errn = encodeNBitUnsignedInteger(stream, uriCodingLength, *uriID + 1);
|
|
|
- }
|
|
|
-
|
|
|
- return errn;
|
|
|
-}
|
|
|
-#endif /*EXI_DEBUG*/
|
|
|
-
|
|
|
-
|
|
|
static int _exiEncodeLocalNameID(bitstream_t* stream, exi_name_table_prepopulated_t* nameTable, exi_name_table_runtime_t* runtimeTable,
|
|
|
uint16_t uriID, uint16_t localNameID) {
|
|
|
int errn;
|
|
|
@@ -325,76 +278,6 @@ static int _exiEncodeLocalNameID(bitstream_t* stream, exi_name_table_prepopulate
|
|
|
}
|
|
|
|
|
|
|
|
|
-#if EXI_DEBUG == EXI_DEBUG_ON
|
|
|
-static int _exiEncodeLocalName(bitstream_t* stream, exi_name_table_prepopulated_t* nameTable, exi_name_table_runtime_t* runtimeTable,
|
|
|
- char** localName,
|
|
|
- uint16_t uriID) {
|
|
|
- int errn;
|
|
|
- uint16_t localNameID;
|
|
|
- uint16_t localNameSize;
|
|
|
- uint16_t localNameCodingLength;
|
|
|
- uint32_t slen;
|
|
|
-
|
|
|
- /* look for localNameID */
|
|
|
- errn = exiGetLocalNameID(nameTable, runtimeTable, uriID, *localName, &localNameID);
|
|
|
- if (errn < 0) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
-
|
|
|
- if (errn == 1) {
|
|
|
- /* string value was not found in local partition */
|
|
|
- /* ==> string literal is encoded as a String */
|
|
|
- /* with the length of the string incremented by one */
|
|
|
- slen = (uint32_t)strlen(*localName);
|
|
|
- errn = encodeUnsignedInteger32(stream, slen + 1 );
|
|
|
- if (errn >= 0) {
|
|
|
- errn = encodeASCIICharacters(stream, *localName, slen);
|
|
|
- }
|
|
|
- } else {
|
|
|
- /* string value found in local partition */
|
|
|
- /* ==> string value is represented as zero (0) encoded as an */
|
|
|
- errn = encodeUnsignedInteger32(stream, 0 );
|
|
|
- if (errn < 0) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
- /* Unsigned Integer followed by an the compact identifier of the */
|
|
|
- /* string value as an n-bit unsigned integer n is log2 m and m is */
|
|
|
- /* the number of entries in the string table partition */
|
|
|
- errn = exiGetLocalNameSize(nameTable, runtimeTable, uriID, &localNameSize);
|
|
|
- if (errn < 0) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
- errn = exiGetCodingLength(localNameSize, &localNameCodingLength);
|
|
|
- if (errn) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
- errn = encodeNBitUnsignedInteger(stream, localNameCodingLength, localNameID);
|
|
|
- }
|
|
|
-
|
|
|
- return errn;
|
|
|
-}
|
|
|
-#endif /*EXI_DEBUG*/
|
|
|
-
|
|
|
-
|
|
|
-#if EXI_DEBUG == EXI_DEBUG_ON
|
|
|
-static int _exiEncodeQName(bitstream_t* stream, exi_name_table_prepopulated_t* nameTable, exi_name_table_runtime_t* runtimeTable,
|
|
|
- char** uri, char** localName) {
|
|
|
- uint16_t uriID;
|
|
|
- /* uri */
|
|
|
- int errn =_exiEncodeNamespaceUri(stream, nameTable, runtimeTable, uri, &uriID);
|
|
|
- if (errn) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
- /* localName */
|
|
|
- errn = _exiEncodeLocalName(stream, nameTable, runtimeTable, localName, uriID);
|
|
|
- if (errn) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
-
|
|
|
- return 0 ;
|
|
|
-}
|
|
|
-#endif /*EXI_DEBUG*/
|
|
|
-
|
|
|
|
|
|
static int _exiEncodeStartElement(bitstream_t* stream, uint16_t nbits,
|
|
|
uint32_t val, exi_state_t* state, eqname_t* se, uint16_t stackId,
|
|
|
@@ -410,36 +293,6 @@ static int _exiEncodeStartElement(bitstream_t* stream, uint16_t nbits,
|
|
|
return exiPushStack(state, newState, se);
|
|
|
}
|
|
|
|
|
|
-#if EXI_DEBUG == EXI_DEBUG_ON
|
|
|
-
|
|
|
-static eqname_t eqnGeneric = {65535, 65535}; /* UNSIGNED_INT16_MAX */
|
|
|
-
|
|
|
-static int _exiEncodeStartElementGeneric(bitstream_t* stream, uint16_t nbits,
|
|
|
- uint32_t val, exi_state_t* state, char** uri, char** localName, uint16_t stackId,
|
|
|
- uint16_t newState) {
|
|
|
- uint16_t uriID;
|
|
|
- /* event-code */
|
|
|
- int errn = encodeNBitUnsignedInteger(stream, nbits, val);
|
|
|
- if (errn) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
- /* qualified name */
|
|
|
- errn = _exiEncodeNamespaceUri(stream, &(state->nameTablePrepopulated), &(state->nameTableRuntime), uri, &uriID);
|
|
|
- if (errn) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
- errn = _exiEncodeLocalName(stream, &(state->nameTablePrepopulated), &(state->nameTableRuntime), localName, uriID);
|
|
|
- if (errn) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
-
|
|
|
- /* move on */
|
|
|
- state->grammarStack[state->stackIndex] = stackId;
|
|
|
- /* push element on stack */
|
|
|
- return exiPushStack(state, newState, &eqnGeneric);
|
|
|
-}
|
|
|
-#endif /*EXI_DEBUG*/
|
|
|
-
|
|
|
int exiappHandEncodeStartElement(bitstream_t* stream, exi_state_t* state, eqname_t* se) {
|
|
|
switch (state->grammarStack[state->stackIndex]) {
|
|
|
case 1:
|
|
|
@@ -703,369 +556,15 @@ int exiappHandEncodeStartElement(bitstream_t* stream, exi_state_t* state, eqname
|
|
|
return EXI_ERROR_UNEXPECTED_START_ELEMENT;
|
|
|
}
|
|
|
|
|
|
-/* Qualified Name unknown!! */
|
|
|
-#if EXI_DEBUG == EXI_DEBUG_ON
|
|
|
-static int exiEncodeStartElementGenericUnknown(bitstream_t* stream, exi_state_t* state,
|
|
|
- char** uri, char** localName) {
|
|
|
- uint16_t grammarID;
|
|
|
- uint16_t eventCodeLength;
|
|
|
-
|
|
|
- int errn = _exiGet1stLevelEventCode(state, START_ELEMENT_GENERIC, &grammarID);
|
|
|
- if (errn < 0) {
|
|
|
- return errn;
|
|
|
- } else if (errn == 1) {
|
|
|
- /* not found --> try undeclared SE */
|
|
|
- errn = _exiGet1stLevelEventCode(state, START_ELEMENT_GENERIC_UNDECLARED, &grammarID);
|
|
|
- if (errn < 0) {
|
|
|
- return errn;
|
|
|
- } else if (errn == 1) {
|
|
|
- /* Should never happen except in STRICT mode */
|
|
|
- return EXI_ERROR_UNEXPECTED_EVENT_LEVEL1;
|
|
|
- } else {
|
|
|
- /* found START_ELEMENT_GENERIC_UNDECLARED */
|
|
|
- errn = _exiGetEventCodeLength(state, &eventCodeLength);
|
|
|
- if (errn < 0) {
|
|
|
- return errn;
|
|
|
- } else {
|
|
|
- /* encode event code*/
|
|
|
- errn = encodeNBitUnsignedInteger(stream, eventCodeLength, grammarID);
|
|
|
- if (errn) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- /* found START_ELEMENT_GENERIC */
|
|
|
- errn = _exiGetEventCodeLength(state, &eventCodeLength);
|
|
|
- if (errn < 0) {
|
|
|
- return errn;
|
|
|
- } else {
|
|
|
- /* encode event code*/
|
|
|
- errn = encodeNBitUnsignedInteger(stream, eventCodeLength, grammarID);
|
|
|
- if (errn) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /* encode qualified name */
|
|
|
- errn = _exiEncodeQName(stream, &(state->nameTablePrepopulated), &(state->nameTableRuntime), uri, localName);
|
|
|
- if (errn) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
-
|
|
|
- /* learn event, not in UCD Profile */
|
|
|
-
|
|
|
- /* move on */
|
|
|
- /* push element on stack */
|
|
|
-
|
|
|
- switch (state->grammarStack[state->stackIndex]) {
|
|
|
- /* $EXI_ENCODE_START_ELEMENT_GENERIC$ */
|
|
|
- case DOC_CONTENT:
|
|
|
- /* move on to DocEnd */
|
|
|
- state->grammarStack[state->stackIndex] = DOC_END;
|
|
|
- /* push new ur-type grammar on stack */
|
|
|
- return exiPushStack(state, UR_TYPE_GRAMMAR_0, NULL);
|
|
|
- break;
|
|
|
- case UR_TYPE_GRAMMAR_0:
|
|
|
- /* move on to UR_TYPE_GRAMMAR_1 */
|
|
|
- state->grammarStack[state->stackIndex] = UR_TYPE_GRAMMAR_1;
|
|
|
- /* push new ur-type grammar on stack */
|
|
|
- return exiPushStack(state, UR_TYPE_GRAMMAR_0, NULL);
|
|
|
- break;
|
|
|
- case UR_TYPE_GRAMMAR_1:
|
|
|
- /* remain in UR_TYPE_GRAMMAR_1 */
|
|
|
- /* push new ur-type grammar on stack */
|
|
|
- return exiPushStack(state, UR_TYPE_GRAMMAR_0, NULL);
|
|
|
- break;
|
|
|
- default:
|
|
|
- return EXI_ERROR_UNEXPECTED_START_ELEMENT_GENERIC;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-#endif /*EXI_DEBUG*/
|
|
|
-
|
|
|
|
|
|
/* Look first for qualified name */
|
|
|
int exiappHandEncodeStartElementGeneric(bitstream_t* stream, exi_state_t* state,
|
|
|
string_ascii_t* namespaceURI , string_ascii_t* localName) {
|
|
|
int errn = -1;
|
|
|
|
|
|
-#if EXI_DEBUG == EXI_DEBUG_ON
|
|
|
- eqname_t se;
|
|
|
- /* uri */
|
|
|
- errn = exiGetUriID(&(state->nameTablePrepopulated), &(state->nameTableRuntime), namespaceURI->chars, &se.namespaceURI);
|
|
|
- if (errn == -1) {
|
|
|
- return errn;
|
|
|
- } else if (errn == 1) {
|
|
|
- /* No URI (and localNameID) found */
|
|
|
- exiEncodeStartElementGenericUnknown(stream, state, &(namespaceURI->chars), &(localName->chars));
|
|
|
- } else {
|
|
|
- /* localName */
|
|
|
- errn = exiGetLocalNameID(&(state->nameTablePrepopulated), &(state->nameTableRuntime), se.namespaceURI, localName->chars, &se.localPart);
|
|
|
- if (errn == -1) {
|
|
|
- return errn;
|
|
|
- } else if (errn == 1) {
|
|
|
- /* No localName found, use generic StartElement(*) method */
|
|
|
- exiEncodeStartElementGenericUnknown(stream, state, &(namespaceURI->chars), &(localName->chars));
|
|
|
- } else {
|
|
|
- /* Uri&LocalName found, use "efficient" StartElement method */
|
|
|
- return exiappHandEncodeStartElement(stream, state, &se);
|
|
|
- }
|
|
|
- }
|
|
|
-#endif /*EXI_DEBUG*/
|
|
|
-
|
|
|
return errn;
|
|
|
}
|
|
|
|
|
|
-static int _exiEncodeEndElementUndeclared(bitstream_t* stream, exi_state_t* state) {
|
|
|
- int16_t currentID = state->grammarStack[state->stackIndex];
|
|
|
- switch (currentID) {
|
|
|
- case 9:
|
|
|
- /* Element[] */
|
|
|
- /* 1st level and 2nd level event code */
|
|
|
- encodeNBitUnsignedInteger(stream, 0, 0);
|
|
|
- encodeNBitUnsignedInteger(stream, 2, 0);
|
|
|
- return 0;
|
|
|
- case 70:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 124:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 139:
|
|
|
- /* Element[CHARACTERS[UNSIGNED_INTEGER]] */
|
|
|
- case 46:
|
|
|
- /* Element[CHARACTERS[ENUMERATION]] */
|
|
|
- case 22:
|
|
|
- /* Element[START_ELEMENT(ProtocolNamespace)] */
|
|
|
- case 86:
|
|
|
- /* Element[CHARACTERS[DATETIME]] */
|
|
|
- case 92:
|
|
|
- /* Element[CHARACTERS[FLOAT]] */
|
|
|
- case 134:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 120:
|
|
|
- /* Element[CHARACTERS[UNSIGNED_INTEGER]] */
|
|
|
- case 100:
|
|
|
- /* Element[CHARACTERS[DATETIME]] */
|
|
|
- case 54:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 68:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 72:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 21:
|
|
|
- /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
|
|
|
- case 78:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 141:
|
|
|
- /* Element[CHARACTERS[UNSIGNED_INTEGER]] */
|
|
|
- case 52:
|
|
|
- /* Element[CHARACTERS[LIST]] */
|
|
|
- case 102:
|
|
|
- /* Element[CHARACTERS[DATETIME]] */
|
|
|
- case 96:
|
|
|
- /* Element[CHARACTERS[FLOAT]] */
|
|
|
- case 60:
|
|
|
- /* Element[CHARACTERS[LIST]] */
|
|
|
- case 82:
|
|
|
- /* Element[CHARACTERS[BOOLEAN]] */
|
|
|
- case 88:
|
|
|
- /* Element[CHARACTERS[DATETIME]] */
|
|
|
- case 116:
|
|
|
- /* Element[CHARACTERS[INTEGER]] */
|
|
|
- case 98:
|
|
|
- /* Element[CHARACTERS[DATETIME]] */
|
|
|
- case 128:
|
|
|
- /* Element[CHARACTERS[INTEGER]] */
|
|
|
- case 13:
|
|
|
- /* Element[CHARACTERS[UNSIGNED_INTEGER]] */
|
|
|
- case 90:
|
|
|
- /* Element[CHARACTERS[DECIMAL]] */
|
|
|
- case 42:
|
|
|
- /* Element[START_ELEMENT(AppProtocol)] */
|
|
|
- case 143:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 110:
|
|
|
- /* Element[CHARACTERS[INTEGER]] */
|
|
|
- case 66:
|
|
|
- /* Element[CHARACTERS[LIST]] */
|
|
|
- case 94:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 112:
|
|
|
- /* Element[CHARACTERS[INTEGER]] */
|
|
|
- case 58:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 14:
|
|
|
- /* Element[START_ELEMENT(SchemaID)] */
|
|
|
- case 122:
|
|
|
- /* Element[CHARACTERS[INTEGER]] */
|
|
|
- case 16:
|
|
|
- /* Element[START_ELEMENT(Priority)] */
|
|
|
- case 104:
|
|
|
- /* Element[CHARACTERS[DATETIME]] */
|
|
|
- case 114:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 108:
|
|
|
- /* Element[CHARACTERS[BINARY_HEX]] */
|
|
|
- case 84:
|
|
|
- /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
|
|
|
- case 106:
|
|
|
- /* Element[CHARACTERS[DATETIME]] */
|
|
|
- case 11:
|
|
|
- /* Element[START_ELEMENT(VersionNumberMinor)] */
|
|
|
- case 74:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 6:
|
|
|
- /* Element[START_ELEMENT(VersionNumberMajor)] */
|
|
|
- case 64:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 62:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 130:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 126:
|
|
|
- /* Element[CHARACTERS[UNSIGNED_INTEGER]] */
|
|
|
- case 118:
|
|
|
- /* Element[CHARACTERS[INTEGER]] */
|
|
|
- case 48:
|
|
|
- /* Element[START_ELEMENT(ResponseCode)] */
|
|
|
- case 10:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 136:
|
|
|
- /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
|
|
|
- case 80:
|
|
|
- /* Element[CHARACTERS[BINARY_BASE64]] */
|
|
|
- case 56:
|
|
|
- /* Element[CHARACTERS[STRING]] */
|
|
|
- case 132:
|
|
|
- /* Element[CHARACTERS[DATETIME]] */
|
|
|
- case 18:
|
|
|
- /* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
|
|
|
- /* 1st level and 2nd level event code */
|
|
|
- encodeNBitUnsignedInteger(stream, 1, 1);
|
|
|
- encodeNBitUnsignedInteger(stream, 2, 0);
|
|
|
- return 0;
|
|
|
- case 109:
|
|
|
- /* FirstStartTag[CHARACTERS[INTEGER]] */
|
|
|
- case 113:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 12:
|
|
|
- /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
|
|
|
- case 140:
|
|
|
- /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
|
|
|
- case 57:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 97:
|
|
|
- /* FirstStartTag[CHARACTERS[DATETIME]] */
|
|
|
- case 135:
|
|
|
- /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
|
|
|
- case 5:
|
|
|
- /* FirstStartTag[START_ELEMENT(ProtocolNamespace)] */
|
|
|
- case 91:
|
|
|
- /* FirstStartTag[CHARACTERS[FLOAT]] */
|
|
|
- case 111:
|
|
|
- /* FirstStartTag[CHARACTERS[INTEGER]] */
|
|
|
- case 7:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 123:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 61:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 99:
|
|
|
- /* FirstStartTag[CHARACTERS[DATETIME]] */
|
|
|
- case 73:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 53:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 93:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 59:
|
|
|
- /* FirstStartTag[CHARACTERS[LIST]] */
|
|
|
- case 63:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 115:
|
|
|
- /* FirstStartTag[CHARACTERS[INTEGER]] */
|
|
|
- case 101:
|
|
|
- /* FirstStartTag[CHARACTERS[DATETIME]] */
|
|
|
- case 71:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 77:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 142:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 121:
|
|
|
- /* FirstStartTag[CHARACTERS[INTEGER]] */
|
|
|
- case 17:
|
|
|
- /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
|
|
|
- case 83:
|
|
|
- /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
|
|
|
- case 117:
|
|
|
- /* FirstStartTag[CHARACTERS[INTEGER]] */
|
|
|
- case 3:
|
|
|
- /* FirstStartTag[START_ELEMENT(AppProtocol)] */
|
|
|
- case 87:
|
|
|
- /* FirstStartTag[CHARACTERS[DATETIME]] */
|
|
|
- case 79:
|
|
|
- /* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
|
|
|
- case 67:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 137:
|
|
|
- /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
|
|
|
- case 81:
|
|
|
- /* FirstStartTag[CHARACTERS[BOOLEAN]] */
|
|
|
- case 119:
|
|
|
- /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
|
|
|
- case 51:
|
|
|
- /* FirstStartTag[CHARACTERS[LIST]] */
|
|
|
- case 105:
|
|
|
- /* FirstStartTag[CHARACTERS[DATETIME]] */
|
|
|
- case 69:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 45:
|
|
|
- /* FirstStartTag[CHARACTERS[ENUMERATION]] */
|
|
|
- case 65:
|
|
|
- /* FirstStartTag[CHARACTERS[LIST]] */
|
|
|
- case 129:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 55:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 43:
|
|
|
- /* FirstStartTag[START_ELEMENT(ResponseCode)] */
|
|
|
- case 20:
|
|
|
- /* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
|
|
|
- case 85:
|
|
|
- /* FirstStartTag[CHARACTERS[DATETIME]] */
|
|
|
- case 125:
|
|
|
- /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
|
|
|
- case 103:
|
|
|
- /* FirstStartTag[CHARACTERS[DATETIME]] */
|
|
|
- case 138:
|
|
|
- /* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
|
|
|
- case 15:
|
|
|
- /* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
|
|
|
- case 133:
|
|
|
- /* FirstStartTag[CHARACTERS[STRING]] */
|
|
|
- case 131:
|
|
|
- /* FirstStartTag[CHARACTERS[DATETIME]] */
|
|
|
- case 89:
|
|
|
- /* FirstStartTag[CHARACTERS[DECIMAL]] */
|
|
|
- case 107:
|
|
|
- /* FirstStartTag[CHARACTERS[BINARY_HEX]] */
|
|
|
- case 127:
|
|
|
- /* FirstStartTag[CHARACTERS[INTEGER]] */
|
|
|
- case 95:
|
|
|
- /* FirstStartTag[CHARACTERS[FLOAT]] */
|
|
|
- /* 1st level and 2nd level event code */
|
|
|
- encodeNBitUnsignedInteger(stream, 1, 1);
|
|
|
- encodeNBitUnsignedInteger(stream, 3, 0);
|
|
|
- return 0;
|
|
|
-
|
|
|
- }
|
|
|
- return EXI_ERROR_UNEXPECTED_END_ELEMENT;
|
|
|
-}
|
|
|
|
|
|
int exiappHandEncodeEndElement(bitstream_t* stream, exi_state_t* state) {
|
|
|
int errn = 0;
|
|
|
@@ -1135,16 +634,7 @@ int exiappHandEncodeEndElement(bitstream_t* stream, exi_state_t* state) {
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
- if (currentID < 0) {
|
|
|
- /* runtime grammars */
|
|
|
- return -1;
|
|
|
- } else {
|
|
|
- errn = _exiEncodeEndElementUndeclared(stream, state);
|
|
|
- if (errn < 0) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
- }
|
|
|
- /* return EXI_ERROR_UNEXPECTED_END_ELEMENT; */
|
|
|
+ return EXI_ERROR_UNEXPECTED_END_ELEMENT;
|
|
|
}
|
|
|
|
|
|
if (errn < 0) {
|
|
|
@@ -1852,63 +1342,6 @@ int exiappHandEncodeAttribute(bitstream_t* stream, exi_state_t* state, eqname_t*
|
|
|
/* return EXI_ERROR_UNEXPECTED_ATTRIBUTE; */
|
|
|
}
|
|
|
|
|
|
-#if EXI_DEBUG == EXI_DEBUG_ON
|
|
|
-static int exiEncodeAttribute2(bitstream_t* stream, exi_state_t* state, qname_t* at,
|
|
|
- exi_value_t* val) {
|
|
|
- int errn;
|
|
|
- eqname_t eat;
|
|
|
-
|
|
|
- /* attribute generic undeclared */
|
|
|
- uint16_t codeLength1, codeLength2;
|
|
|
- uint32_t ec1, ec2;
|
|
|
-
|
|
|
- errn = exiGetUriID(&state->nameTablePrepopulated, &state->nameTableRuntime, at->namespaceURI.chars, &eat.namespaceURI);
|
|
|
- if (errn < 0) {
|
|
|
- return errn;
|
|
|
- } else if (errn > 0) {
|
|
|
- /* uri not found*/
|
|
|
- } else {
|
|
|
- /* uri found, try to find localname id */
|
|
|
- errn = exiGetLocalNameID(&state->nameTablePrepopulated, &state->nameTableRuntime, eat.namespaceURI,
|
|
|
- at->localName.chars, &eat.localPart);
|
|
|
- if (errn < 0) {
|
|
|
- return errn;
|
|
|
- } else if (errn > 0) {
|
|
|
- /* local-name not found*/
|
|
|
- } else {
|
|
|
- /* found uri and local-name */
|
|
|
- errn = exiappHandEncodeAttribute(stream, state, &eat, val);
|
|
|
- if (errn < 0) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
- if (errn == 0) {
|
|
|
- return errn;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /* event codes */
|
|
|
- encodeNBitUnsignedInteger(stream, codeLength1, ec1);
|
|
|
- encodeNBitUnsignedInteger(stream, codeLength2, ec2);
|
|
|
-
|
|
|
- /* qname */
|
|
|
- /*
|
|
|
- errn = _exiEncodeQName(stream, state->nameTablePrepopulated, state->nameTableRuntime,
|
|
|
- char** uri, char** localName);
|
|
|
- QName qname = qnameDatatype.encodeQName(uri, localName, null, channel);
|
|
|
- */
|
|
|
- /* content as string */
|
|
|
- /*
|
|
|
- typeEncoder.isValid(BuiltIn.DEFAULT_DATATYPE, value);
|
|
|
- typeEncoder.writeValue(qname, channel);
|
|
|
- */
|
|
|
- return -1;
|
|
|
-
|
|
|
-}
|
|
|
-#endif /*EXI_DEBUG*/
|
|
|
-
|
|
|
int exiappHandEncodeAttributeXsiNil(bitstream_t* stream, exi_state_t* state,
|
|
|
exi_value_t* val) {
|
|
|
|