65,211
社区成员
发帖
与我相关
我的任务
分享
void CMapping::save_svalue(svalue_t *v, char **buf)
{
switch(v->type)
{
case T_STRING:
{
register char *cp = *buf, *str = v->u.string;
char c;
*cp++ = '"';
while ((c = *str++))
{
if (c == '"' || c == '\\') {
*cp++ = '\\';
*cp++ = c;
}
else *cp++ = (c == '\n') ? '\r' : c;
}
*cp++ = '"';
*(*buf = cp) = '\0';
return;
}
case T_ARRAY:
{
const char * ptr = v->u.arr->GetBuffer();
while(* ptr)
*(*buf)++ = *ptr++;
*(*buf) = '\0';
return;
}
case T_NUMBER:
{
int res = v->u.number, fact, len = 1, neg = 0;
register char *cp;
if (res < 0)
{
len++, neg = 1, res = (-res) & 0x7fffffff;
}
fact = res;
while (fact > 9) { fact /= 10; len++; }
*(cp = (*buf += len)) = '\0';
do
{
*--cp = res % 10 + '0';
res /= 10;
} while (res);
if (neg) *(cp-1) = '-';
return;
}
case T_MAPPING:
{
int j = v->u.map->table_size;
mapping_node_t **a = v->u.map->table, *elt;
*(*buf)++ = '(';
*(*buf)++ = '[';
do {
for (elt = a[j]; elt; elt = elt = elt->next) '此行是1129行
{
save_svalue(elt->values, buf);
*(*buf)++ = ':';
save_svalue(elt->values + 1, buf);
*(*buf)++ = ',';
}
} while (j--);
*(*buf)++ = ']';
*(*buf)++ = ')';
*(*buf) = '\0';
return;
}
}
}
for (elt = a[j]; elt; elt = elt = elt->next)//LZ多写了一个elt=
elt = elt = elt->next
elt = elt->next