2 * Copyright (C) 2005 QSDN,Inc. All rights reserved.
3 * Copyright (C) 2005 Atsushi Konno All rights reserved.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 #include "qs_malloc.h"
19 #include "qs_parse_string.h"
20 #include "qs_parse_attr.h"
22 #include "qs_ignore_sp.h"
26 qs_parse_attr(Doc* doc, const char*s, int len, int *pos) {
36 QX_LOGGER_DEBUG("start qs_parse_attr()");
39 ii = start_pos = qs_ignore_sp_and_quote(doc, s, len);
40 QX_LOGGER_DEBUG_INT("len",len);
44 QX_LOGGER_DEBUG((char*)&s[ii]);
45 if (is_white_space(s[ii])) {
53 size = ii - start_pos;
54 QX_LOGGER_DEBUG_INT("size", size);
60 name = (char*)qs_malloc(doc, size+1, QX_LOGMARK);
61 memset(name, 0, size+1);
62 memcpy(name, &s[start_pos], size);
63 QX_LOGGER_DEBUG((char*)&s[start_pos]);
64 QX_LOGGER_DEBUG((char*)name);
69 if (is_white_space(s[ii])) {
90 ii += qs_ignore_sp(doc, &s[ii], len-ii);
92 if (s[ii] == '\'' || s[ii] == '"') {
97 if (!is_white_space(s[ii])) {
104 for (;ii<len; ii++) {
105 if (is_sjis_kanji(s[ii])) {
109 if (is_sjis_kana(s[ii])) {
112 if (is_white_space(s[ii])) {
124 size = ii - start_pos;
125 QX_LOGGER_DEBUG_INT("size",size);
126 QX_LOGGER_DEBUG((char*)&s[start_pos]);
129 value = (char*)qs_malloc(doc, size+1, QX_LOGMARK);
130 memset(value, 0, size+1);
132 memcpy(value, &s[start_pos], size);
135 attr = qs_new_attr(doc);
138 QX_LOGGER_DEBUG(attr->name);
139 QX_LOGGER_DEBUG(attr->value);
141 QX_LOGGER_DEBUG("end qs_parse_attr()");
147 qs_new_attr(Doc* doc) {
148 Attr* attr = (Attr*)qs_malloc(doc,sizeof(Attr),QX_LOGMARK);
150 QX_LOGGER_FATAL("Out Of Memory");