Lines Matching refs:chunk

46  * @return new position in chunk
48 #define ucl_chunk_skipc(chunk, p) \
51 (chunk)->line ++; \
52 (chunk)->column = 0; \
54 else (chunk)->column ++; \
56 (chunk)->pos ++; \
57 (chunk)->remain --; \
64 struct ucl_chunk *chunk = parser->chunks;
73 if (chunk->pos < chunk->end) {
74 if (isgraph (*chunk->pos)) {
83 filename, chunk->line, chunk->column,
84 str, *chunk->pos);
87 ucl_create_err (err, "error while parsing %s: at the end of chunk: %s",
136 struct ucl_chunk *chunk = parser->chunks;
141 p = chunk->pos;
144 if (chunk->remain > 0 && *p == '#') {
149 while (p < chunk->end) {
156 ucl_chunk_skipc (chunk, p);
160 ucl_chunk_skipc (chunk, p);
164 else if (chunk->remain >= 2 && *p == '/') {
167 ucl_chunk_skipc (chunk, p);
169 ucl_chunk_skipc (chunk, p);
171 while (p < chunk->end) {
178 ucl_chunk_skipc (chunk, p);
187 ucl_chunk_skipc (chunk, p);
191 ucl_chunk_skipc (chunk, p);
193 else if (p[0] == '/' && chunk->remain >= 2 && p[1] == '*') {
195 ucl_chunk_skipc (chunk, p);
196 ucl_chunk_skipc (chunk, p);
201 ucl_chunk_skipc (chunk, p);
695 st->chunk = parser->chunks;
945 /* Just a number at the end of chunk */
976 * @param chunk
982 struct ucl_chunk *chunk, ucl_object_t *obj)
987 ret = ucl_maybe_parse_number (obj, chunk->pos, chunk->end, (const char **)&pos,
991 chunk->remain -= pos - chunk->pos;
992 chunk->column += pos - chunk->pos;
993 chunk->pos = pos;
1007 * @param chunk
1015 struct ucl_chunk *chunk,
1020 const unsigned char *p = chunk->pos;
1024 while (p < chunk->end) {
1039 ucl_chunk_skipc (chunk, p);
1041 if (p >= chunk->end) {
1048 ucl_chunk_skipc (chunk, p);
1049 for (i = 0; i < 4 && p < chunk->end; i ++) {
1055 ucl_chunk_skipc (chunk, p);
1057 if (p >= chunk->end) {
1065 ucl_chunk_skipc (chunk, p);
1073 ucl_chunk_skipc (chunk, p);
1082 ucl_chunk_skipc (chunk, p);
1094 * @param chunk
1100 struct ucl_chunk *chunk, bool *need_unescape)
1102 const unsigned char *p = chunk->pos;
1105 while (p < chunk->end) {
1108 ucl_chunk_skipc (chunk, p);
1110 if (p >= chunk->end) {
1117 ucl_chunk_skipc (chunk, p);
1124 ucl_chunk_skipc (chunk, p);
1128 ucl_chunk_skipc (chunk, p);
1285 * @param chunk
1291 ucl_parse_key (struct ucl_parser *parser, struct ucl_chunk *chunk,
1302 p = chunk->pos;
1307 ucl_chunk_skipc (chunk, p);
1315 while (p < chunk->end) {
1320 if (chunk->remain >= 2 && ucl_lex_is_comment (p[0], p[1])) {
1324 p = chunk->pos;
1327 ucl_chunk_skipc (chunk, p);
1332 ucl_chunk_skipc (chunk, p);
1340 ucl_chunk_skipc (chunk, p);
1348 ucl_chunk_skipc (chunk, p);
1365 ucl_chunk_skipc (chunk, p);
1379 if (!ucl_lex_json_string (parser, chunk, &need_unescape, &ucl_escape, &var_expand)) {
1383 end = chunk->pos - 1;
1384 p = chunk->pos;
1390 if (p >= chunk->end && got_content) {
1399 while (p < chunk->end) {
1401 ucl_chunk_skipc (chunk, p);
1405 ucl_chunk_skipc (chunk, p);
1416 ucl_chunk_skipc (chunk, p);
1425 else if (chunk->remain >= 2 && ucl_lex_is_comment (p[0], p[1])) {
1430 p = chunk->pos;
1438 if (p >= chunk->end && got_content) {
1460 while (t < chunk->end) {
1509 * @param chunk
1516 struct ucl_chunk *chunk, bool *var_expand, bool *need_unescape)
1526 p = chunk->pos;
1528 while (p < chunk->end) {
1538 ucl_chunk_skipc (chunk, p);
1550 ucl_chunk_skipc (chunk, p);
1559 ucl_chunk_skipc (chunk, p);
1560 if (p < chunk->end) {
1561 ucl_chunk_skipc (chunk, p);
1566 if (ucl_lex_is_atom_end (*p) || (chunk->remain >= 2 && ucl_lex_is_comment (p[0], p[1]))) {
1569 ucl_chunk_skipc (chunk, p);
1578 * @param chunk
1587 struct ucl_chunk *chunk, const unsigned char *term,
1595 p = chunk->pos;
1599 while (p < chunk->end) {
1601 if (chunk->end - p < term_len) {
1608 ucl_chunk_skipc (chunk, p);
1612 chunk->remain -= term_len;
1613 chunk->pos = p + term_len;
1614 chunk->column = term_len;
1628 ucl_chunk_skipc (chunk, p);
1667 * @param chunk
1671 ucl_parse_value (struct ucl_parser *parser, struct ucl_chunk *chunk)
1679 p = chunk->pos;
1683 (chunk->remain >= 2 && ucl_lex_is_comment (p[0], p[1]))) {
1684 while (p < chunk->end && ucl_test_character (*p, UCL_CHARACTER_WHITESPACE_UNSAFE)) {
1685 ucl_chunk_skipc (chunk, p);
1690 p = chunk->pos;
1693 while (p < chunk->end) {
1697 ucl_chunk_skipc (chunk, p);
1699 if (!ucl_lex_json_string (parser, chunk, &need_unescape, &ucl_escape,
1709 str_len = chunk->pos - c - 2;
1724 ucl_chunk_skipc (chunk, p);
1726 if (!ucl_lex_squoted_string (parser, chunk, &need_unescape)) {
1735 str_len = chunk->pos - c - 2;
1769 ucl_chunk_skipc (chunk, p);
1791 ucl_chunk_skipc (chunk, p);
1808 if (chunk->end - p > 3) {
1812 while (p < chunk->end && *p >= 'A' && *p <= 'Z') {
1816 /* Set chunk positions and start multiline parsing */
1817 chunk->remain -= p - c + 1;
1819 chunk->pos = p + 1;
1820 chunk->column = 0;
1821 chunk->line ++;
1822 if ((str_len = ucl_parse_multiline_string (parser, chunk, c,
1855 if (!ucl_lex_number (parser, chunk, obj)) {
1867 if (!ucl_parse_string_value (parser, chunk, &var_expand,
1873 while (ucl_test_character (*(chunk->pos - 1 - stripped_spaces),
1877 str_len = chunk->pos - c - stripped_spaces;
1921 * @param chunk
1925 ucl_parse_after_value (struct ucl_parser *parser, struct ucl_chunk *chunk)
1931 p = chunk->pos;
1933 while (p < chunk->end) {
1936 ucl_chunk_skipc (chunk, p);
1938 else if (chunk->remain >= 2 && ucl_lex_is_comment (p[0], p[1])) {
1945 p = chunk->pos;
1965 chunk->fname ? chunk->fname : "memory",
2006 ucl_chunk_skipc (chunk, p);
2013 ucl_chunk_skipc (chunk, p);
2032 struct ucl_chunk *chunk)
2045 p = chunk->pos;
2046 c = chunk->pos;
2048 while (p < chunk->end) {
2059 ucl_chunk_skipc (chunk, p);
2077 ucl_chunk_skipc (chunk, p);
2089 ucl_chunk_skipc (chunk, p);
2101 ucl_chunk_skipc (chunk, p);
2113 ucl_chunk_skipc (chunk, p);
2118 ucl_chunk_skipc (chunk, p);
2136 * @param chunk
2144 struct ucl_chunk *chunk, struct ucl_macro *macro,
2150 p = chunk->pos;
2156 ucl_chunk_skipc (chunk, p);
2157 if (!ucl_lex_json_string (parser, chunk, &need_unescape, &ucl_escape, &var_expand)) {
2162 *macro_len = chunk->pos - c - 2;
2163 p = chunk->pos;
2167 ucl_chunk_skipc (chunk, p);
2169 while (p < chunk->end) {
2171 ucl_chunk_skipc (chunk, p);
2178 while (p < chunk->end) {
2182 ucl_chunk_skipc (chunk, p);
2186 ucl_chunk_skipc (chunk, p);
2191 while (p < chunk->end) {
2195 ucl_chunk_skipc (chunk, p);
2204 while (p < chunk->end) {
2208 ucl_chunk_skipc (chunk, p);
2216 * @param chunk the current data chunk
2221 struct ucl_chunk *chunk)
2230 saved.column = chunk->column;
2231 saved.line = chunk->line;
2232 saved.pos = chunk->pos;
2233 saved.remain = chunk->remain;
2234 p = chunk->pos;
2236 if (*p != '(' || chunk->remain < 2) {
2241 ucl_chunk_skipc (chunk, p);
2244 while ((p) < (chunk)->end) {
2265 if (chunk->remain == 0) {
2268 ucl_chunk_skipc (chunk, p);
2275 if (chunk->remain == 0) {
2279 ucl_chunk_skipc (chunk, p);
2305 chunk->column = saved.column;
2306 chunk->line = saved.line;
2307 chunk->pos = saved.pos;
2308 chunk->remain = saved.remain;
2313 #define SKIP_SPACES_COMMENTS(parser, chunk, p) do { \
2314 while ((p) < (chunk)->end) { \
2316 if ((chunk)->remain >= 2 && ucl_lex_is_comment ((p)[0], (p)[1])) { \
2320 p = (chunk)->pos; \
2324 ucl_chunk_skipc (chunk, p); \
2331 * @return true if chunk has been parsed and false in case of error
2337 struct ucl_chunk *chunk = parser->chunks;
2348 p = chunk->pos;
2349 while (chunk->pos < chunk->end) {
2366 while (p < chunk->end && ucl_test_character (*p,
2368 ucl_chunk_skipc (chunk, p);
2371 p = chunk->pos;
2373 if (p < chunk->end) {
2376 ucl_chunk_skipc (chunk, p);
2382 ucl_chunk_skipc (chunk, p);
2415 while (p < chunk->end && ucl_test_character (*p, UCL_CHARACTER_WHITESPACE_UNSAFE)) {
2416 ucl_chunk_skipc (chunk, p);
2418 if (p == chunk->end || *p == '}') {
2431 if (!ucl_parse_key (parser, chunk, &next_key, &end_of_object)) {
2438 p = chunk->pos;
2459 c = chunk->pos;
2461 p = chunk->pos;
2465 if (!parser->cur_obj || !ucl_parse_value (parser, chunk)) {
2471 p = chunk->pos;
2474 if (!ucl_parse_after_value (parser, chunk)) {
2494 p = chunk->pos;
2498 if (!ucl_skip_macro_as_comment (parser, chunk)) {
2502 chunk->fname ? chunk->fname : "memory",
2503 chunk->line,
2504 chunk->column);
2509 p = chunk->pos;
2516 ucl_chunk_skipc (chunk, p);
2527 chunk->fname ? chunk->fname : "memory",
2528 chunk->line,
2529 chunk->column,
2532 *chunk->pos);
2537 SKIP_SPACES_COMMENTS(parser, chunk, p);
2544 chunk->fname ? chunk->fname : "memory",
2545 chunk->line,
2546 chunk->column);
2554 if (*chunk->pos == '(') {
2555 macro_args = ucl_parse_macro_arguments (parser, chunk);
2556 p = chunk->pos;
2558 SKIP_SPACES_COMMENTS(parser, chunk, p);
2564 if (!ucl_parse_macro_value (parser, chunk, macro,
2609 chunk = parser->chunks;
2610 p = chunk->pos;
2648 if (st->chunk != parser->chunks) {
2649 break; /* Not our chunk, give up */
2657 chunk->fname ? chunk->fname : "memory",
2861 struct ucl_chunk *chunk;
2869 ucl_create_err (&parser->err, "invalid chunk added");
2874 chunk = UCL_ALLOC (sizeof (struct ucl_chunk));
2875 if (chunk == NULL) {
2876 ucl_create_err (&parser->err, "cannot allocate chunk structure");
2880 memset (chunk, 0, sizeof (*chunk));
2903 LL_PREPEND (chunk->special_handlers, nchain);
2923 chunk->begin = data;
2924 chunk->remain = len;
2925 chunk->pos = chunk->begin;
2926 chunk->end = chunk->begin + len;
2927 chunk->line = 1;
2928 chunk->column = 0;
2929 chunk->priority = priority;
2930 chunk->strategy = strat;
2931 chunk->parse_type = parse_type;
2934 chunk->fname = strdup (parser->cur_file);
2937 LL_PREPEND (parser->chunks, chunk);
2959 /* Just add empty chunk and go forward */
3011 struct ucl_chunk *chunk;
3024 /* Remove chunk from the stack */
3025 chunk = parser->chunks;
3026 if (chunk != NULL) {
3027 parser->chunks = chunk->next;
3028 ucl_chunk_free (chunk);