Lines Matching refs:idx
251 get_token (size_t idx, sb *in, sb *name) in get_token() argument
253 if (idx < in->len in get_token()
254 && is_name_beginner (in->ptr[idx])) in get_token()
256 sb_add_char (name, in->ptr[idx++]); in get_token()
257 while (idx < in->len in get_token()
258 && is_part_of_name (in->ptr[idx])) in get_token()
260 sb_add_char (name, in->ptr[idx++]); in get_token()
262 if (idx < in->len in get_token()
263 && is_name_ender (in->ptr[idx])) in get_token()
265 sb_add_char (name, in->ptr[idx++]); in get_token()
269 if (macro_alternate && idx < in->len && in->ptr[idx] == '&') in get_token()
270 idx++; in get_token()
271 return idx; in get_token()
277 getstring (size_t idx, sb *in, sb *acc) in getstring() argument
279 while (idx < in->len in getstring()
280 && (in->ptr[idx] == '"' in getstring()
281 || (in->ptr[idx] == '<' && (macro_alternate || macro_mri)) in getstring()
282 || (in->ptr[idx] == '\'' && macro_alternate))) in getstring()
284 if (in->ptr[idx] == '<') in getstring()
287 idx++; in getstring()
288 while ((in->ptr[idx] != '>' || nest) in getstring()
289 && idx < in->len) in getstring()
291 if (in->ptr[idx] == '!') in getstring()
293 idx++; in getstring()
294 sb_add_char (acc, in->ptr[idx++]); in getstring()
298 if (in->ptr[idx] == '>') in getstring()
300 if (in->ptr[idx] == '<') in getstring()
302 sb_add_char (acc, in->ptr[idx++]); in getstring()
305 idx++; in getstring()
307 else if (in->ptr[idx] == '"' || in->ptr[idx] == '\'') in getstring()
309 char tchar = in->ptr[idx]; in getstring()
312 idx++; in getstring()
314 while (idx < in->len) in getstring()
316 if (in->ptr[idx - 1] == '\\') in getstring()
321 if (macro_alternate && in->ptr[idx] == '!') in getstring()
323 idx ++; in getstring()
325 sb_add_char (acc, in->ptr[idx]); in getstring()
327 idx ++; in getstring()
329 else if (escaped && in->ptr[idx] == tchar) in getstring()
332 idx ++; in getstring()
336 if (in->ptr[idx] == tchar) in getstring()
338 idx ++; in getstring()
340 if (idx >= in->len || in->ptr[idx] != tchar) in getstring()
344 sb_add_char (acc, in->ptr[idx]); in getstring()
345 idx ++; in getstring()
351 return idx; in getstring()
363 get_any_string (size_t idx, sb *in, sb *out) in get_any_string() argument
366 idx = sb_skip_white (idx, in); in get_any_string()
368 if (idx < in->len) in get_any_string()
370 if (in->len > idx + 2 && in->ptr[idx + 1] == '\'' && ISBASE (in->ptr[idx])) in get_any_string()
372 while (!ISSEP (in->ptr[idx])) in get_any_string()
373 sb_add_char (out, in->ptr[idx++]); in get_any_string()
375 else if (in->ptr[idx] == '%' && macro_alternate) in get_any_string()
382 idx = (*macro_expr) (_("% operator needs absolute expression"), in get_any_string()
383 idx + 1, in get_any_string()
389 else if (in->ptr[idx] == '"' in get_any_string()
390 || (in->ptr[idx] == '<' && (macro_alternate || macro_mri)) in get_any_string()
391 || (macro_alternate && in->ptr[idx] == '\'')) in get_any_string()
393 if (macro_alternate && ! macro_strip_at && in->ptr[idx] != '<') in get_any_string()
397 idx = getstring (idx, in, out); in get_any_string()
402 idx = getstring (idx, in, out); in get_any_string()
411 while (idx < in->len in get_any_string()
413 || (in->ptr[idx] != ' ' in get_any_string()
414 && in->ptr[idx] != '\t')) in get_any_string()
415 && in->ptr[idx] != ',' in get_any_string()
416 && (in->ptr[idx] != '<' in get_any_string()
419 char tchar = in->ptr[idx]; in get_any_string()
425 sb_add_char (out, in->ptr[idx++]); in get_any_string()
426 while (idx < in->len in get_any_string()
427 && in->ptr[idx] != tchar) in get_any_string()
428 sb_add_char (out, in->ptr[idx++]); in get_any_string()
429 if (idx == in->len) in get_any_string()
432 return idx; in get_any_string()
458 ++idx; in get_any_string()
464 return idx; in get_any_string()
498 do_formals (macro_entry *macro, size_t idx, sb *in) in do_formals() argument
503 idx = sb_skip_white (idx, in); in do_formals()
504 while (idx < in->len) in do_formals()
509 idx = get_token (idx, in, &formal->name); in do_formals()
513 --idx; in do_formals()
517 idx = sb_skip_white (idx, in); in do_formals()
521 && idx < in->len in do_formals()
522 && in->ptr[idx] == ':' in do_formals()
524 || idx + 1 >= in->len in do_formals()
525 || ! is_part_of_name (in->ptr[idx + 1]))) in do_formals()
531 idx = get_token (sb_skip_white (idx + 1, in), in, &qual); in do_formals()
551 idx = sb_skip_white (idx, in); in do_formals()
553 if (idx < in->len && in->ptr[idx] == '=') in do_formals()
556 idx = get_any_string (idx + 1, in, &formal->def); in do_formals()
557 idx = sb_skip_white (idx, in); in do_formals()
584 cidx = idx; in do_formals()
585 idx = sb_skip_comma (idx, in); in do_formals()
586 if (idx != cidx && idx >= in->len) in do_formals()
588 idx = cidx; in do_formals()
621 return idx; in do_formals()
649 define_macro (size_t idx, sb *in, sb *label, in define_macro() argument
668 idx = sb_skip_white (idx, in); in define_macro()
675 if (idx < in->len && in->ptr[idx] == '(') in define_macro()
678 idx = do_formals (macro, idx + 1, in); in define_macro()
679 if (idx < in->len && in->ptr[idx] == ')') in define_macro()
680 idx = sb_skip_white (idx + 1, in); in define_macro()
687 idx = do_formals (macro, idx, in); in define_macro()
694 idx = get_token (idx, in, &name); in define_macro()
698 cidx = sb_skip_white (idx, in); in define_macro()
699 idx = sb_skip_comma (cidx, in); in define_macro()
700 if (idx == cidx || idx < in->len) in define_macro()
701 idx = do_formals (macro, idx, in); in define_macro()
703 idx = cidx; in define_macro()
705 if (!error && idx < in->len) in define_macro()
709 for (idx = 0; idx < name.len; idx++) in define_macro()
710 name.ptr[idx] = TOLOWER (name.ptr[idx]); in define_macro()
730 get_apost_token (size_t idx, sb *in, sb *name, int kind) in get_apost_token() argument
732 idx = get_token (idx, in, name); in get_apost_token()
733 if (idx < in->len in get_apost_token()
734 && in->ptr[idx] == kind in get_apost_token()
737 idx++; in get_apost_token()
738 return idx; in get_apost_token()
1026 macro_expand (size_t idx, sb *in, macro_entry *m, sb *out) in macro_expand() argument
1048 if (idx < in->len && in->ptr[idx] == '.') in macro_expand()
1052 idx++; in macro_expand()
1053 if ( idx < in->len in macro_expand()
1054 && in->ptr[idx] != ' ' in macro_expand()
1055 && in->ptr[idx] != '\t') in macro_expand()
1064 idx = get_any_string (idx, in, &n->actual); in macro_expand()
1070 idx = sb_skip_white (idx, in); in macro_expand()
1071 while (idx < in->len) in macro_expand()
1076 scan = idx; in macro_expand()
1091 idx = get_token (idx, in, &t); in macro_expand()
1092 if (in->ptr[idx] != '=') in macro_expand()
1106 idx = get_any_string (idx + 1, in, &t); in macro_expand()
1118 idx = get_any_string (idx + 1, in, &ptr->actual); in macro_expand()
1155 idx = get_any_string (idx, in, &f->actual); in macro_expand()
1158 sb_add_buffer (&f->actual, in->ptr + idx, in->len - idx); in macro_expand()
1159 idx = in->len; in macro_expand()
1171 idx = sb_skip_comma (idx, in); in macro_expand()
1174 if (in->ptr[idx] == ',') in macro_expand()
1175 ++idx; in macro_expand()
1176 if (ISWHITE (in->ptr[idx])) in macro_expand()
1313 expand_irp (int irpc, size_t idx, sb *in, sb *out, size_t (*get_line) (sb *)) in expand_irp() argument
1320 idx = sb_skip_white (idx, in); in expand_irp()
1330 idx = get_token (idx, in, &f.name); in expand_irp()
1345 idx = sb_skip_comma (idx, in); in expand_irp()
1346 if (idx >= in->len) in expand_irp()
1355 if (irpc && in->ptr[idx] == '"') in expand_irp()
1358 ++idx; in expand_irp()
1361 while (idx < in->len) in expand_irp()
1364 idx = get_any_string (idx, in, &f.actual); in expand_irp()
1367 if (in->ptr[idx] == '"') in expand_irp()
1374 nxt = sb_skip_white (idx + 1, in); in expand_irp()
1377 idx = nxt; in expand_irp()
1382 sb_add_char (&f.actual, in->ptr[idx]); in expand_irp()
1383 ++idx; in expand_irp()
1390 idx = sb_skip_comma (idx, in); in expand_irp()
1392 idx = sb_skip_white (idx, in); in expand_irp()