Lines Matching refs:buffer

27 static uint8_t *xml_ignore_blank(uint8_t *buffer)
29 if (NULL == buffer)
32 while (XML_IS_WHITESPACE(*buffer))
33 buffer++;
35 return buffer;
38 static uint8_t *xml_goto_tagend(uint8_t *buffer)
43 if (NULL == buffer)
47 if (*buffer == '<') {
48 buffer++;
49 while (buffer != NULL && XML_IS_NAMECHAR(*buffer))
50 buffer++;
51 if (NULL == buffer)
56 if (NULL == (buffer = xml_ignore_blank(buffer)))
59 if (*buffer == '>' || (*buffer == '/' && *(buffer + 1) == '>'))
60 return buffer;
63 XML_DOM_getAttr(buffer, &name, &nameLen, &value, &valueLen))
66 buffer = value + valueLen + 1;
67 } while (*buffer != '\0');
72 static uint8_t *xml_match_tag(uint8_t *buffer)
76 if (NULL == buffer)
81 if (NULL == (buffer = XML_DOM_getTag(buffer, &tagLen, &tagType)))
87 if (NULL == (buffer = xml_goto_tagend(buffer + tagLen + 1)))
89 if (strncmp((char *)buffer, "/>", 2) == 0) {
90 buffer += 2;
99 buffer = buffer + tagLen + 2;
105 return buffer;
108 uint8_t *XML_DOM_getAttr(uint8_t *buffer, uint8_t **pName, int32_t *nameLen,
113 if (NULL == buffer) {
119 if (*buffer == '<') {
120 buffer++;
122 while (buffer != NULL && XML_IS_NAMECHAR(*buffer))
123 buffer++;
124 if (NULL == buffer)
128 if (NULL == (buffer = xml_ignore_blank(buffer))) {
134 *pName = buffer;
135 while (buffer != NULL && XML_IS_NAMECHAR(*buffer))
136 buffer++;
137 if (NULL == buffer) {
141 *nameLen = buffer - *pName;
148 buffer = xml_ignore_blank(buffer);
149 if (NULL == buffer || *buffer != '=') {
155 buffer++;
156 buffer = xml_ignore_blank(buffer);
157 if (NULL == buffer || (*buffer != '"' && *buffer != '\'')) {
161 charQuoted = *buffer++;
162 *pValue = buffer;
163 while (*buffer != '\0' && *buffer != charQuoted)
164 buffer++;
165 if (*buffer != charQuoted) {
169 *valueLen = buffer - *pValue;
173 return buffer + 1;
176 uint8_t *XML_DOM_getValue(uint8_t *buffer, uint8_t **pValue, int32_t *valueLen)
180 if (NULL == buffer) {
186 if (*buffer == '<') {
187 buffer++;
189 if (*buffer == '/') {
195 while (buffer != NULL && XML_IS_NAMECHAR(*buffer))
196 buffer++;
197 if (NULL == buffer) {
202 if (NULL == (buffer = xml_goto_tagend(buffer))) {
209 if (*buffer == '/') {
210 if (*(buffer + 1) != '>') {
216 return buffer;
219 if (*buffer == '>')
220 buffer++;
222 if (NULL == (buffer = xml_ignore_blank(buffer))) {
228 if (*buffer == '<') { /* nono value, such as <test></test> */
229 buffer++;
230 if (*buffer != '/') {
239 *pValue = buffer;
241 while (*buffer != '\0' && *buffer != '<') {
242 if (!XML_IS_WHITESPACE(*buffer))
243 pEnd = buffer;
244 buffer++;
246 if (*buffer != '<' || pEnd == NULL) {
253 buffer++;
254 if (*buffer != '/') {
261 return buffer - 1;
264 uint8_t *XML_DOM_getTag(uint8_t *buffer, int32_t *tagLen, int32_t *tagType)
269 if (NULL == buffer) {
275 while (*buffer != '<') {
276 if (*buffer == '\0') {
281 if (*buffer == '\"' || *buffer == '\'') {
282 uint8_t charQuoted = *buffer;
283 buffer++;
284 while (*buffer != '\0' && *buffer != charQuoted)
285 buffer++;
286 if (*buffer == '\0') {
291 buffer++;
293 buffer++;
294 } while (*buffer == '!' || *buffer == '?');
296 pStart = buffer - 1;
298 if (*buffer == '/') {
299 buffer++;
319 while (buffer != NULL && XML_IS_NAMECHAR(*buffer))
320 buffer++;
321 if (NULL == buffer) {
327 *tagLen = buffer - pStart - 2;
329 *tagLen = buffer - pStart - 1;
336 uint8_t *XML_DOM_getNode(uint8_t *buffer, const uint8_t *const node)
345 if (NULL == buffer) {
357 /* get the first start_tag from buffer */
358 if (NULL == (buffer = XML_DOM_getTag(buffer, &tagLen, &tagType))) {
365 strncmp((char *)lastNode, (char *)(buffer + 2), strlen((char *)lastNode)))
374 || strncmp((char *)nodeStr, (char *)(buffer + 1), tagLen) != 0) {
376 buffer = xml_match_tag(buffer);
380 retPtr = buffer; /* retPtr starts with '<xxx>' */
381 buffer += (tagLen + 1);
404 uint8_t *XML_DOM_getNodeValue(uint8_t *buffer, uint8_t *node,
410 if (NULL == node || NULL == buffer) {
420 if (NULL == (pStart = XML_DOM_getNode(buffer, node)))
449 uint8_t *XML_DOM_getNextNode(uint8_t *buffer, uint8_t **pNodeName, int32_t *nodenameLen)
453 if (NULL == buffer)
458 (buffer = XML_DOM_getTag(buffer + 1, nodenameLen, &tagType))) {
464 *pNodeName = buffer + 1;
468 return buffer;
476 uint8_t *WBXML_DOM_getNode(uint8_t *buffer, int32_t bufferLen,
481 if (NULL == buffer || node == NULL) {
487 if (WBXML_GET_TAG(buffer[i]) == WBXML_GET_TAG(node[j])) {
493 if (!WBXML_HAS_CONTENT(buffer[i])) {
500 if (WBXML_HAS_ATTR(buffer[i])) {
501 while (i < bufferLen && buffer[i] != WBXML_ATTR_END)
510 if (buffer[i] == WBXML_STR_I) {
511 while (i < bufferLen && buffer[i] != WBXML_END)
526 return buffer + i + 1;
529 uint8_t *WBXML_DOM_getNodeValue(uint8_t *buffer, int32_t bufferLen,
539 pEnd = buffer + bufferLen;
540 buffer = WBXML_DOM_getNode(buffer, bufferLen, node);
541 if (NULL == buffer) {
546 if (*buffer == WBXML_OPAUE) {
547 buffer++;
548 *valueLen = WBXML_GetUintVar(buffer, &i);
553 buffer += i;
554 *value = buffer;
558 if (*buffer != WBXML_STR_I) {
563 buffer++;
566 while ((buffer + i) < pEnd && buffer[i] != WBXML_END)
569 if (buffer[i] != WBXML_END) {
574 *value = buffer;
584 int32_t WBXML_GetUintVar(const uint8_t *const buffer, int32_t *len)
590 while ((buffer[byteLen] & 0x80) > 0 && byteLen < MAX_UINT_VAR_BYTE)
597 sum = buffer[byteLen];
599 sum += ((buffer[i] & 0x7F) << 7 * (byteLen - i));
604 XML_BOOL WBXML_DOM_Init(WBXML * pWbxml, uint8_t *buffer,
609 pWbxml->End = buffer + bufferLen;
610 pWbxml->version = *buffer++;
611 if (UINTVAR_INVALID == (num = WBXML_GetUintVar(buffer, &len)))
613 buffer += len;
615 if (UINTVAR_INVALID == (num = WBXML_GetUintVar(buffer, &len)))
617 buffer += len;
619 if (UINTVAR_INVALID == (num = WBXML_GetUintVar(buffer, &len)))
621 buffer += len;
622 pWbxml->strTable = buffer;
624 buffer += num;
625 pWbxml->curPtr = pWbxml->Content = buffer;
704 void xml_free(void *buffer)
709 free(buffer);
717 uint8_t *buffer = *buf;
723 strncpy((char *)Tree->tag, (char *)++buffer, tagLen);
724 buffer += tagLen;
725 pAttr = buffer;
739 buffer = pValue + valueLen + 1;
749 pAttr = XML_DOM_getValue(buffer, &pValue, &valueLen);
752 buffer = pValue + valueLen;
755 *buf = buffer;
763 uint8_t *buffer = *buf;
766 if (NULL == (buffer = XML_DOM_getTag(buffer, &valueLen, &tagType)))
770 if (NULL == (TreeHead = xml_tree_fillnode(&buffer, valueLen)))
773 *buf = buffer;
778 if (NULL == (pBuf = XML_DOM_getTag(buffer, &valueLen, &tagType)))
785 TreeHead->child = XML_makeTree(&buffer);
787 TreeHead->child->brother = XML_makeTree(&buffer);
791 XML_makeTree(&buffer);
800 buffer++;