Ejemplo n.º 1
0
void jx_print_buffer( struct jx *j, buffer_t *b )
{
	if(!j) return;

	switch(j->type) {
		case JX_NULL:
			buffer_putstring(b,"null");
			break;
		case JX_DOUBLE:
			buffer_printf(b,"%lg",j->double_value);
			break;
		case JX_BOOLEAN:
			buffer_printf(b,"%s",j->boolean_value ? "true" : "false");
			break;
		case JX_INTEGER:
			buffer_printf(b,"%lld",(long long)j->integer_value);
			break;
		case JX_SYMBOL:
			buffer_printf(b,"%s",j->symbol_name);
			break;
		case JX_STRING:
			jx_escape_string(j->string_value,b);
			break;
		case JX_ARRAY:
			buffer_putstring(b,"[");
			jx_item_print(j->items,b);
			buffer_putstring(b,"]");
			break;
		case JX_OBJECT:
			buffer_putstring(b,"{");
			jx_pair_print(j->pairs,b);
			buffer_putstring(b,"}");
			break;
	}
}
Ejemplo n.º 2
0
void jx_print_buffer( struct jx *j, buffer_t *b )
{
	if(!j) return;

	switch(j->type) {
		case JX_NULL:
			buffer_putstring(b,"null");
			break;
		case JX_DOUBLE:
			buffer_printf(b,"%g",j->u.double_value);
			break;
		case JX_BOOLEAN:
			buffer_printf(b,"%s",j->u.boolean_value ? "true" : "false");
			break;
		case JX_INTEGER:
			buffer_printf(b,"%lld",(long long)j->u.integer_value);
			break;
		case JX_SYMBOL:
			buffer_printf(b,"%s",j->u.symbol_name);
			break;
		case JX_STRING:
			jx_escape_string(j->u.string_value,b);
			break;
		case JX_ARRAY:
			buffer_putstring(b,"[");
			jx_item_print(j->u.items,b);
			buffer_putstring(b,"]");
			break;
		case JX_OBJECT:
			buffer_putstring(b,"{");
			jx_pair_print(j->u.pairs,b);
			buffer_putstring(b,"}");
			break;
		case JX_OPERATOR:
			jx_print_subexpr(j->u.oper.left,j->u.oper.type,b);
			buffer_putstring(b,jx_operator_string(j->u.oper.type));
			if (j->u.oper.type == JX_OP_CALL) {
				jx_item_print(j->u.oper.right->u.items, b);
				buffer_putstring(b, ")");
			} else {
				jx_print_subexpr(
					j->u.oper.right, j->u.oper.type, b);
			}
			if(j->u.oper.type==JX_OP_LOOKUP) buffer_putstring(b,"]");
			break;
		case JX_FUNCTION: buffer_putstring(b, j->u.func.name); break;
		case JX_ERROR:
			buffer_putstring(b, "error(");
			jx_print_buffer(j->u.err, b);
			buffer_putstring(b, ")");
			break;
	}
}