00001 00002 /* 00003 *************************************************************************** 00004 * Copyright 2007,2008 Impinj, Inc. 00005 * 00006 * Licensed under the Apache License, Version 2.0 (the "License"); 00007 * you may not use this file except in compliance with the License. 00008 * You may obtain a copy of the License at 00009 * 00010 * http://www.apache.org/licenses/LICENSE-2.0 00011 * 00012 * Unless required by applicable law or agreed to in writing, software 00013 * distributed under the License is distributed on an "AS IS" BASIS, 00014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00015 * See the License for the specific language governing permissions and 00016 * limitations under the License. 00017 * 00018 *************************************************************************** 00019 */ 00020 00021 00022 00023 00024 struct LLRP_SXMLTextDecoder; 00025 struct LLRP_SXMLTextDecoderStream; 00026 struct LLRP_SXMLTextEncoder; 00027 struct LLRP_SXMLTextEncoderStream; 00028 00029 typedef struct LLRP_SXMLTextDecoder LLRP_tSXMLTextDecoder; 00030 typedef struct LLRP_SXMLTextDecoderStream LLRP_tSXMLTextDecoderStream; 00031 typedef struct LLRP_SXMLTextEncoder LLRP_tSXMLTextEncoder; 00032 typedef struct LLRP_SXMLTextEncoderStream LLRP_tSXMLTextEncoderStream; 00033 00034 00035 struct LLRP_SXMLTextDecoder 00036 { 00037 LLRP_tSDecoder decoderHdr; 00038 00039 unsigned char * pInput; 00040 unsigned int nInput; 00041 00042 unsigned int iNext; 00043 00044 unsigned char aTextBuf[4u*1024u]; 00045 unsigned int nTextBuf; 00046 00047 unsigned int iLastGetTextChar; 00048 unsigned int iLastText; 00049 00050 unsigned char aTagBuf[1024u]; 00051 unsigned char * apTagArg[32u]; 00052 unsigned int nTagArg; 00053 enum { 00054 XMLTEXT_BAD_TAG, 00055 XMLTEXT_START_TAG, 00056 XMLTEXT_END_TAG, 00057 XMLTEXT_EMPTY_TAG 00058 } eTagType; 00059 00060 llrp_s64_t aIntgValue[256u]; 00061 unsigned int nIntgValue; 00062 }; 00063 00064 struct LLRP_SXMLTextDecoderStream 00065 { 00066 LLRP_tSDecoderStream decoderStreamHdr; 00067 00068 LLRP_tSXMLTextDecoder * pDecoder; 00069 LLRP_tSXMLTextDecoderStream * pEnclosingDecoderStream; 00070 const LLRP_tSTypeDescriptor *pRefType; 00071 }; 00072 00073 extern LLRP_tSXMLTextDecoder * 00074 LLRP_XMLTextDecoder_construct ( 00075 const LLRP_tSTypeRegistry * pTypeRegistry, 00076 unsigned char * pBuffer, 00077 unsigned int nBuffer); 00078 00079 00080 struct LLRP_SXMLTextEncoder 00081 { 00082 LLRP_tSEncoder encoderHdr; 00083 00084 unsigned char * pBuffer; 00085 unsigned int nBuffer; 00086 00087 unsigned int iNext; 00088 00089 int bOverflow; 00090 }; 00091 00092 struct LLRP_SXMLTextEncoderStream 00093 { 00094 LLRP_tSEncoderStream encoderStreamHdr; 00095 00096 LLRP_tSXMLTextEncoder * pEncoder; 00097 LLRP_tSXMLTextEncoderStream * pEnclosingEncoderStream; 00098 const LLRP_tSTypeDescriptor *pRefType; 00099 unsigned int nDepth; 00100 }; 00101 00102 extern LLRP_tSXMLTextEncoder * 00103 LLRP_XMLTextEncoder_construct ( 00104 unsigned char * pBuffer, 00105 unsigned int nBuffer);