Lines Matching refs:parser

402 typedef ssize_t (*ucl_msgpack_parse_function)(struct ucl_parser *parser,
406 static ssize_t ucl_msgpack_parse_map (struct ucl_parser *parser,
409 static ssize_t ucl_msgpack_parse_array (struct ucl_parser *parser,
412 static ssize_t ucl_msgpack_parse_string (struct ucl_parser *parser,
415 static ssize_t ucl_msgpack_parse_int (struct ucl_parser *parser,
418 static ssize_t ucl_msgpack_parse_float (struct ucl_parser *parser,
421 static ssize_t ucl_msgpack_parse_bool (struct ucl_parser *parser,
424 static ssize_t ucl_msgpack_parse_null (struct ucl_parser *parser,
427 static ssize_t ucl_msgpack_parse_ignore (struct ucl_parser *parser,
763 ucl_msgpack_get_container (struct ucl_parser *parser, in ucl_msgpack_get_container() argument
775 if (parser->stack == NULL) { in ucl_msgpack_get_container()
776 parser->stack = calloc (1, sizeof (struct ucl_stack)); in ucl_msgpack_get_container()
778 if (parser->stack == NULL) { in ucl_msgpack_get_container()
779 ucl_create_err (&parser->err, "no memory"); in ucl_msgpack_get_container()
787 ucl_create_err (&parser->err, "no memory"); in ucl_msgpack_get_container()
791 stack->next = parser->stack; in ucl_msgpack_get_container()
792 parser->stack = stack; in ucl_msgpack_get_container()
795 parser->stack->level = len | MSGPACK_CONTAINER_BIT; in ucl_msgpack_get_container()
798 stack = parser->stack; in ucl_msgpack_get_container()
811 if (parser->stack) { in ucl_msgpack_get_container()
812 return parser->stack; in ucl_msgpack_get_container()
815 ucl_create_err (&parser->err, "bad top level object for msgpack"); in ucl_msgpack_get_container()
820 return parser->stack; in ucl_msgpack_get_container()
842 ucl_msgpack_insert_object (struct ucl_parser *parser, in ucl_msgpack_insert_object() argument
849 container = parser->stack; in ucl_msgpack_insert_object()
860 ucl_create_err (&parser->err, "cannot insert object with no key"); in ucl_msgpack_insert_object()
867 if (!(parser->flags & UCL_PARSER_ZEROCOPY)) { in ucl_msgpack_insert_object()
871 ucl_parser_process_object_element (parser, obj); in ucl_msgpack_insert_object()
874 ucl_create_err (&parser->err, "bad container type"); in ucl_msgpack_insert_object()
887 ucl_msgpack_get_next_container (struct ucl_parser *parser) in ucl_msgpack_get_next_container() argument
892 cur = parser->stack; in ucl_msgpack_get_next_container()
903 parser->stack = cur->next; in ucl_msgpack_get_next_container()
904 parser->cur_obj = cur->obj; in ucl_msgpack_get_next_container()
908 cur = parser->stack; in ucl_msgpack_get_next_container()
913 …fprintf(stderr, "-%s -> %d\n", parser->cur_obj->type == UCL_OBJECT ? "object" : "array", (int)pars… in ucl_msgpack_get_next_container()
916 return ucl_msgpack_get_next_container (parser); in ucl_msgpack_get_next_container()
938 ucl_create_err (&parser->err, \
947 container = ucl_msgpack_get_next_container (parser); \
949 ucl_create_err (&parser->err, \
958 ucl_msgpack_consume (struct ucl_parser *parser) in ucl_msgpack_consume() argument
981 p = parser->chunks->begin; in ucl_msgpack_consume()
982 remain = parser->chunks->remain; in ucl_msgpack_consume()
995 ucl_create_err (&parser->err, "unknown msgpack format: %x", in ucl_msgpack_consume()
1008 ucl_create_err (&parser->err, "not enough data remain to " in ucl_msgpack_consume()
1033 ucl_create_err (&parser->err, "not enough data remain to " in ucl_msgpack_consume()
1078 parser->cur_obj = ucl_object_new_full (UCL_OBJECT, in ucl_msgpack_consume()
1079 parser->chunks->priority); in ucl_msgpack_consume()
1081 if (parser->stack && !ucl_msgpack_insert_object (parser, in ucl_msgpack_consume()
1082 key, keylen, parser->cur_obj)) { in ucl_msgpack_consume()
1086 container = ucl_msgpack_get_container (parser, obj_parser, len); in ucl_msgpack_consume()
1092 ret = obj_parser->func (parser, container, len, obj_parser->fmt, in ucl_msgpack_consume()
1109 parser->cur_obj = ucl_object_new_full (UCL_ARRAY, in ucl_msgpack_consume()
1110 parser->chunks->priority); in ucl_msgpack_consume()
1112 if (parser->stack && !ucl_msgpack_insert_object (parser, in ucl_msgpack_consume()
1113 key, keylen, parser->cur_obj)) { in ucl_msgpack_consume()
1117 container = ucl_msgpack_get_container (parser, obj_parser, len); in ucl_msgpack_consume()
1123 ret = obj_parser->func (parser, container, len, obj_parser->fmt, in ucl_msgpack_consume()
1142 container = parser->stack; in ucl_msgpack_consume()
1148 ret = obj_parser->func (parser, container, len, obj_parser->fmt, in ucl_msgpack_consume()
1154 if (!ucl_msgpack_insert_object (parser, NULL, 0, in ucl_msgpack_consume()
1155 parser->cur_obj)) { in ucl_msgpack_consume()
1175 ucl_create_err (&parser->err, "bad type for key: %u, expected " in ucl_msgpack_consume()
1185 ucl_create_err (&parser->err, "too long or empty key"); in ucl_msgpack_consume()
1201 container = parser->stack; in ucl_msgpack_consume()
1207 ret = obj_parser->func (parser, container, len, obj_parser->fmt, in ucl_msgpack_consume()
1213 if (!ucl_msgpack_insert_object (parser, key, keylen, in ucl_msgpack_consume()
1214 parser->cur_obj)) { in ucl_msgpack_consume()
1238 ucl_create_err (&parser->err, "invalid state machine state"); in ucl_msgpack_consume()
1250 ucl_create_err (&parser->err, "invalid non-empty container at the end"); in ucl_msgpack_consume()
1255 parser->cur_obj = ucl_object_new_full ( in ucl_msgpack_consume()
1257 parser->chunks->priority); in ucl_msgpack_consume()
1259 if (!ucl_msgpack_insert_object (parser, in ucl_msgpack_consume()
1260 key, keylen, parser->cur_obj)) { in ucl_msgpack_consume()
1264 container = ucl_msgpack_get_container (parser, obj_parser, len); in ucl_msgpack_consume()
1270 ret = obj_parser->func (parser, container, len, obj_parser->fmt, in ucl_msgpack_consume()
1277 ucl_create_err (&parser->err, "unfinished value at the end"); in ucl_msgpack_consume()
1282 container = parser->stack; in ucl_msgpack_consume()
1288 ret = obj_parser->func (parser, container, len, obj_parser->fmt, in ucl_msgpack_consume()
1294 if (!ucl_msgpack_insert_object (parser, NULL, 0, in ucl_msgpack_consume()
1295 parser->cur_obj)) { in ucl_msgpack_consume()
1306 ucl_create_err (&parser->err, "invalid state machine finishing state: %d", in ucl_msgpack_consume()
1313 ucl_msgpack_get_next_container (parser); in ucl_msgpack_consume()
1314 assert (parser->stack == NULL || in ucl_msgpack_consume()
1315 (parser->stack->level & MSGPACK_CONTAINER_BIT) == 0); in ucl_msgpack_consume()
1321 ucl_parse_msgpack (struct ucl_parser *parser) in ucl_parse_msgpack() argument
1327 assert (parser != NULL); in ucl_parse_msgpack()
1328 assert (parser->chunks != NULL); in ucl_parse_msgpack()
1329 assert (parser->chunks->begin != NULL); in ucl_parse_msgpack()
1330 assert (parser->chunks->remain != 0); in ucl_parse_msgpack()
1332 p = parser->chunks->begin; in ucl_parse_msgpack()
1334 if (parser->stack) { in ucl_parse_msgpack()
1335 container = parser->stack->obj; in ucl_parse_msgpack()
1345 ucl_create_err (&parser->err, "bad top level object for msgpack"); in ucl_parse_msgpack()
1350 ret = ucl_msgpack_consume (parser); in ucl_parse_msgpack()
1352 if (ret && parser->top_obj == NULL) { in ucl_parse_msgpack()
1353 parser->top_obj = parser->cur_obj; in ucl_parse_msgpack()
1360 ucl_msgpack_parse_map (struct ucl_parser *parser, in ucl_msgpack_parse_map() argument
1364 container->obj = parser->cur_obj; in ucl_msgpack_parse_map()
1370 ucl_msgpack_parse_array (struct ucl_parser *parser, in ucl_msgpack_parse_array() argument
1374 container->obj = parser->cur_obj; in ucl_msgpack_parse_array()
1380 ucl_msgpack_parse_string (struct ucl_parser *parser, in ucl_msgpack_parse_string() argument
1390 obj = ucl_object_new_full (UCL_STRING, parser->chunks->priority); in ucl_msgpack_parse_string()
1398 if (!(parser->flags & UCL_PARSER_ZEROCOPY)) { in ucl_msgpack_parse_string()
1411 parser->cur_obj = obj; in ucl_msgpack_parse_string()
1417 ucl_msgpack_parse_int (struct ucl_parser *parser, in ucl_msgpack_parse_int() argument
1435 obj = ucl_object_new_full (UCL_INT, parser->chunks->priority); in ucl_msgpack_parse_int()
1496 parser->cur_obj = obj; in ucl_msgpack_parse_int()
1502 ucl_msgpack_parse_float (struct ucl_parser *parser, in ucl_msgpack_parse_float() argument
1517 obj = ucl_object_new_full (UCL_FLOAT, parser->chunks->priority); in ucl_msgpack_parse_float()
1538 parser->cur_obj = obj; in ucl_msgpack_parse_float()
1544 ucl_msgpack_parse_bool (struct ucl_parser *parser, in ucl_msgpack_parse_bool() argument
1554 obj = ucl_object_new_full (UCL_BOOLEAN, parser->chunks->priority); in ucl_msgpack_parse_bool()
1568 parser->cur_obj = obj; in ucl_msgpack_parse_bool()
1574 ucl_msgpack_parse_null (struct ucl_parser *parser, in ucl_msgpack_parse_null() argument
1584 obj = ucl_object_new_full (UCL_NULL, parser->chunks->priority); in ucl_msgpack_parse_null()
1585 parser->cur_obj = obj; in ucl_msgpack_parse_null()
1591 ucl_msgpack_parse_ignore (struct ucl_parser *parser, in ucl_msgpack_parse_ignore() argument
1621 ucl_create_err (&parser->err, "bad type: %x", (unsigned)fmt); in ucl_msgpack_parse_ignore()