Lines Matching refs:pfile

74 _cpp_warn_if_unused_macro (cpp_reader *pfile, cpp_hashnode *node,
82 && MAIN_FILE_P (linemap_lookup (pfile->line_table, macro->line)))
83 cpp_error_with_line (pfile, CPP_DL_WARNING, macro->line, 0,
93 new_string_token (cpp_reader *pfile, unsigned char *text, unsigned int len)
95 cpp_token *token = _cpp_temp_token (pfile);
114 _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node)
123 cpp_error (pfile, CPP_DL_ICE, "invalid built-in macro \"%s\"",
129 cpp_buffer *pbuffer = cpp_get_buffer (pfile);
148 unsigned char *buf = _cpp_unaligned_alloc (pfile, len + 2);
156 cpp_errno (pfile, CPP_DL_WARNING,
171 map = linemap_lookup (pfile->line_table, pfile->line_table->highest_line);
175 map = INCLUDED_FROM (pfile->line_table, map);
179 buf = _cpp_unaligned_alloc (pfile, len * 2 + 3);
192 number = pfile->line_table->depth - 1;
196 map = &pfile->line_table->maps[pfile->line_table->used-1];
200 if (CPP_OPTION (pfile, traditional))
201 number = pfile->line_table->highest_line;
203 number = pfile->cur_token[-1].src_loc;
213 if (cpp_in_system_header (pfile))
221 if (pfile->date == NULL)
240 pfile->date = _cpp_unaligned_alloc (pfile,
242 sprintf ((char *) pfile->date, "\"%s %2d %4d\"",
246 pfile->time = _cpp_unaligned_alloc (pfile,
248 sprintf ((char *) pfile->time, "\"%02d:%02d:%02d\"",
253 cpp_errno (pfile, CPP_DL_WARNING,
256 pfile->date = U"\"??? ?? ????\"";
257 pfile->time = U"\"??:??:??\"";
262 result = pfile->date;
264 result = pfile->time;
268 if (CPP_OPTION (pfile, directives_only) && pfile->state.in_directive)
269 cpp_error (pfile, CPP_DL_ERROR,
271 number = pfile->nextcounter++;
278 result = _cpp_unaligned_alloc (pfile, 21);
290 builtin_macro (cpp_reader *pfile, cpp_hashnode *node)
300 if (pfile->state.in_directive)
303 _cpp_do__Pragma (pfile);
307 buf = _cpp_builtin_macro_text (pfile, node);
313 cpp_push_buffer (pfile, (uchar *) nbuf, len, /* from_stage3 */ true);
314 _cpp_clean_line (pfile);
316 /* Set pfile->cur_token as required by _cpp_lex_direct. */
317 pfile->cur_token = _cpp_temp_token (pfile);
318 _cpp_push_token_context (pfile, NULL, _cpp_lex_direct (pfile), 1);
319 if (pfile->buffer->cur != pfile->buffer->rlimit)
320 cpp_error (pfile, CPP_DL_ICE, "invalid built-in macro \"%s\"",
322 _cpp_pop_buffer (pfile);
352 stringify_arg (cpp_reader *pfile, macro_arg *arg)
359 if (BUFF_ROOM (pfile->u_buff) < 3)
360 _cpp_extend_buff (pfile, &pfile->u_buff, 3);
361 dest = BUFF_FRONT (pfile->u_buff);
386 if ((size_t) (BUFF_LIMIT (pfile->u_buff) - dest) < len)
388 size_t len_so_far = dest - BUFF_FRONT (pfile->u_buff);
389 _cpp_extend_buff (pfile, &pfile->u_buff, len);
390 dest = BUFF_FRONT (pfile->u_buff) + len_so_far;
394 if (dest - 1 != BUFF_FRONT (pfile->u_buff))
405 _cpp_buff *buff = _cpp_get_buff (pfile, len);
407 len = cpp_spell_token (pfile, token, buf, true) - buf;
409 _cpp_release_buff (pfile, buff);
412 dest = cpp_spell_token (pfile, token, dest, true);
423 cpp_error (pfile, CPP_DL_WARNING,
430 len = dest - BUFF_FRONT (pfile->u_buff);
431 BUFF_FRONT (pfile->u_buff) = dest + 1;
432 return new_string_token (pfile, dest - len, len);
439 paste_tokens (cpp_reader *pfile, const cpp_token **plhs, const cpp_token *rhs)
447 end = lhsend = cpp_spell_token (pfile, *plhs, buf, false);
455 end = cpp_spell_token (pfile, rhs, end, false);
458 cpp_push_buffer (pfile, buf, end - buf, /* from_stage3 */ true);
459 _cpp_clean_line (pfile);
461 /* Set pfile->cur_token as required by _cpp_lex_direct. */
462 pfile->cur_token = _cpp_temp_token (pfile);
463 lhs = _cpp_lex_direct (pfile);
464 if (pfile->buffer->cur != pfile->buffer->rlimit)
468 _cpp_pop_buffer (pfile);
469 _cpp_backup_tokens (pfile, 1);
480 if (CPP_OPTION (pfile, lang) != CLK_ASM)
481 cpp_error (pfile, CPP_DL_ERROR,
483 buf, cpp_token_as_text (pfile, rhs));
488 _cpp_pop_buffer (pfile);
500 paste_all_tokens (cpp_reader *pfile, const cpp_token *lhs)
503 cpp_context *context = pfile->context;
520 if (!paste_tokens (pfile, &lhs, rhs))
526 _cpp_push_token_context (pfile, NULL, lhs, 1);
536 _cpp_arguments_ok (cpp_reader *pfile, cpp_macro *macro, const cpp_hashnode *node, unsigned int argc)
553 if (CPP_PEDANTIC (pfile) && ! macro->syshdr)
554 cpp_error (pfile, CPP_DL_PEDWARN,
559 cpp_error (pfile, CPP_DL_ERROR,
564 cpp_error (pfile, CPP_DL_ERROR,
577 collect_args (cpp_reader *pfile, const cpp_hashnode *node)
590 buff = _cpp_get_buff (pfile, argc * (50 * sizeof (cpp_token *)
614 buff = _cpp_append_extend_buff (pfile, buff,
619 token = cpp_get_token (pfile);
654 arg->first[ntokens] = &pfile->eof;
673 if (pfile->context->prev || pfile->state.in_directive)
674 _cpp_backup_tokens (pfile, 1);
675 cpp_error (pfile, CPP_DL_ERROR,
684 if (_cpp_arguments_ok (pfile, macro, node, argc))
695 && !CPP_OPTION (pfile, std))))
702 _cpp_release_buff (pfile, base_buff);
711 funlike_invocation_p (cpp_reader *pfile, cpp_hashnode *node)
717 token = cpp_get_token (pfile);
727 pfile->state.parsing_args = 2;
728 return collect_args (pfile, node);
733 if (token->type != CPP_EOF || token == &pfile->eof)
738 _cpp_backup_tokens (pfile, 1);
740 _cpp_push_token_context (pfile, NULL, padding, 1);
751 enter_macro_context (cpp_reader *pfile, cpp_hashnode *node)
754 pfile->mi_valid = false;
756 pfile->state.angled_headers = false;
767 pfile->state.prevent_expansion++;
768 pfile->keep_tokens++;
769 pfile->state.parsing_args = 1;
770 buff = funlike_invocation_p (pfile, node);
771 pfile->state.parsing_args = 0;
772 pfile->keep_tokens--;
773 pfile->state.prevent_expansion--;
777 if (CPP_WTRADITIONAL (pfile) && ! node->value.macro->syshdr)
778 cpp_error (pfile, CPP_DL_WARNING,
786 replace_args (pfile, node, macro, (macro_arg *) buff->base);
787 _cpp_release_buff (pfile, buff);
796 _cpp_push_token_context (pfile, node, macro->exp.tokens, macro->count);
802 return builtin_macro (pfile, node);
810 replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, macro_arg *args)
838 arg->stringified = stringify_arg (pfile, arg);
846 expand_arg (pfile, arg);
853 buff = _cpp_get_buff (pfile, total * sizeof (cpp_token *));
899 if ((!pfile->state.in_directive || pfile->state.directive_wants_padding)
901 *dest++ = padding_token (pfile, src);
915 if (!pfile->state.in_directive && !(src->flags & PASTE_LEFT))
916 *dest++ = &pfile->avoid_paste;
921 cpp_token *token = _cpp_temp_token (pfile);
937 push_ptoken_context (pfile, node, buff, first, dest - first);
942 padding_token (cpp_reader *pfile, const cpp_token *source)
944 cpp_token *result = _cpp_temp_token (pfile);
958 next_context (cpp_reader *pfile)
960 cpp_context *result = pfile->context->next;
965 result->prev = pfile->context;
967 pfile->context->next = result;
970 pfile->context = result;
976 push_ptoken_context (cpp_reader *pfile, cpp_hashnode *macro, _cpp_buff *buff,
979 cpp_context *context = next_context (pfile);
990 _cpp_push_token_context (cpp_reader *pfile, cpp_hashnode *macro,
993 cpp_context *context = next_context (pfile);
1004 _cpp_push_text_context (cpp_reader *pfile, cpp_hashnode *macro,
1007 cpp_context *context = next_context (pfile);
1024 expand_arg (cpp_reader *pfile, macro_arg *arg)
1033 saved_warn_trad = CPP_WTRADITIONAL (pfile);
1034 CPP_WTRADITIONAL (pfile) = 0;
1040 push_ptoken_context (pfile, NULL, NULL, arg->first, arg->count + 1);
1052 token = cpp_get_token (pfile);
1060 _cpp_pop_context (pfile);
1062 CPP_WTRADITIONAL (pfile) = saved_warn_trad;
1069 _cpp_pop_context (cpp_reader *pfile)
1071 cpp_context *context = pfile->context;
1077 _cpp_release_buff (pfile, context->buff);
1079 pfile->context = context->prev;
1094 cpp_get_token (cpp_reader *pfile)
1101 cpp_context *context = pfile->context;
1105 result = _cpp_lex_token (pfile);
1115 paste_all_tokens (pfile, result);
1116 if (pfile->state.in_directive)
1118 return padding_token (pfile, result);
1123 _cpp_pop_context (pfile);
1124 if (pfile->state.in_directive)
1126 return &pfile->avoid_paste;
1129 if (pfile->state.in_directive && result->type == CPP_COMMENT)
1142 if (!pfile->state.prevent_expansion
1143 && enter_macro_context (pfile, node))
1145 if (pfile->state.in_directive)
1147 return padding_token (pfile, result);
1154 cpp_token *t = _cpp_temp_token (pfile);
1171 cpp_sys_macro_p (cpp_reader *pfile)
1173 cpp_hashnode *node = pfile->context->macro;
1181 cpp_scan_nooutput (cpp_reader *pfile)
1185 pfile->buffer->return_at_eof = true;
1187 pfile->state.discarding_output++;
1188 pfile->state.prevent_expansion++;
1190 if (CPP_OPTION (pfile, traditional))
1191 while (_cpp_read_logical_line_trad (pfile))
1194 while (cpp_get_token (pfile)->type != CPP_EOF)
1197 pfile->state.discarding_output--;
1198 pfile->state.prevent_expansion--;
1204 _cpp_backup_tokens (cpp_reader *pfile, unsigned int count)
1206 if (pfile->context->prev == NULL)
1208 pfile->lookaheads += count;
1211 pfile->cur_token--;
1212 if (pfile->cur_token == pfile->cur_run->base
1214 && pfile->cur_run->prev != NULL)
1216 pfile->cur_run = pfile->cur_run->prev;
1217 pfile->cur_token = pfile->cur_run->limit;
1225 if (pfile->context->direct_p)
1226 FIRST (pfile->context).token--;
1228 FIRST (pfile->context).ptoken--;
1236 warn_of_redefinition (cpp_reader *pfile, const cpp_hashnode *node,
1263 if (CPP_OPTION (pfile, traditional))
1289 _cpp_save_parameter (cpp_reader *pfile, cpp_macro *macro, cpp_hashnode *node)
1295 cpp_error (pfile, CPP_DL_ERROR, "duplicate macro parameter \"%s\"",
1300 if (BUFF_ROOM (pfile->a_buff)
1302 _cpp_extend_buff (pfile, &pfile->a_buff, sizeof (cpp_hashnode *));
1304 ((cpp_hashnode **) BUFF_FRONT (pfile->a_buff))[macro->paramc++] = node;
1307 if (len > pfile->macro_buffer_len)
1309 pfile->macro_buffer = XRESIZEVEC (unsigned char, pfile->macro_buffer,
1311 pfile->macro_buffer_len = len;
1313 ((union _cpp_hashnode_value *) pfile->macro_buffer)[macro->paramc - 1]
1323 parse_params (cpp_reader *pfile, cpp_macro *macro)
1329 const cpp_token *token = _cpp_lex_token (pfile);
1337 && ! CPP_OPTION (pfile, discard_comments_in_macro_exp))
1340 cpp_error (pfile, CPP_DL_ERROR,
1342 cpp_token_as_text (pfile, token));
1348 cpp_error (pfile, CPP_DL_ERROR,
1354 if (_cpp_save_parameter (pfile, macro, token->val.node))
1366 cpp_error (pfile, CPP_DL_ERROR, "parameter name missing");
1376 _cpp_save_parameter (pfile, macro,
1377 pfile->spec_nodes.n__VA_ARGS__);
1378 pfile->state.va_args_ok = 1;
1379 if (! CPP_OPTION (pfile, c99)
1380 && CPP_OPTION (pfile, pedantic)
1381 && CPP_OPTION (pfile, warn_variadic_macros))
1382 cpp_error (pfile, CPP_DL_PEDWARN,
1385 else if (CPP_OPTION (pfile, pedantic)
1386 && CPP_OPTION (pfile, warn_variadic_macros))
1387 cpp_error (pfile, CPP_DL_PEDWARN,
1391 token = _cpp_lex_token (pfile);
1397 cpp_error (pfile, CPP_DL_ERROR, "missing ')' in macro parameter list");
1405 alloc_expansion_token (cpp_reader *pfile, cpp_macro *macro)
1407 if (BUFF_ROOM (pfile->a_buff) < (macro->count + 1) * sizeof (cpp_token))
1408 _cpp_extend_buff (pfile, &pfile->a_buff, sizeof (cpp_token));
1410 return &((cpp_token *) BUFF_FRONT (pfile->a_buff))[macro->count++];
1416 lex_expansion_token (cpp_reader *pfile, cpp_macro *macro)
1420 saved_cur_token = pfile->cur_token;
1421 pfile->cur_token = alloc_expansion_token (pfile, macro);
1422 token = _cpp_lex_direct (pfile);
1423 pfile->cur_token = saved_cur_token;
1432 else if (CPP_WTRADITIONAL (pfile) && macro->paramc > 0
1434 check_trad_stringification (pfile, macro, &token->val.str);
1440 create_iso_definition (cpp_reader *pfile, cpp_macro *macro)
1447 ctoken = _cpp_lex_token (pfile);
1451 bool ok = parse_params (pfile, macro);
1452 macro->params = (cpp_hashnode **) BUFF_FRONT (pfile->a_buff);
1457 if (pfile->hash_table->alloc_subobject)
1460 (cpp_hashnode **) pfile->hash_table->alloc_subobject
1467 BUFF_FRONT (pfile->a_buff) = (uchar *) &macro->params[macro->paramc];
1475 if (CPP_OPTION (pfile, c99))
1476 cpp_error (pfile, CPP_DL_PEDWARN,
1500 cpp_error (pfile, warntype,
1506 token = lex_expansion_token (pfile, macro);
1509 token = alloc_expansion_token (pfile, macro);
1528 else if (CPP_OPTION (pfile, lang) != CLK_ASM)
1530 cpp_error (pfile, CPP_DL_ERROR,
1545 token = lex_expansion_token (pfile, macro);
1549 cpp_error (pfile, CPP_DL_ERROR,
1557 token = lex_expansion_token (pfile, macro);
1560 macro->exp.tokens = (cpp_token *) BUFF_FRONT (pfile->a_buff);
1571 if (pfile->hash_table->alloc_subobject)
1574 (cpp_token *) pfile->hash_table->alloc_subobject (sizeof (cpp_token)
1580 BUFF_FRONT (pfile->a_buff) = (uchar *) &macro->exp.tokens[macro->count];
1587 _cpp_create_definition (cpp_reader *pfile, cpp_hashnode *node)
1593 if (pfile->hash_table->alloc_subobject)
1594 macro = (cpp_macro *) pfile->hash_table->alloc_subobject
1597 macro = (cpp_macro *) _cpp_aligned_alloc (pfile, sizeof (cpp_macro));
1598 macro->line = pfile->directive_line;
1602 macro->used = !CPP_OPTION (pfile, warn_unused_macros);
1606 macro->syshdr = pfile->buffer && pfile->buffer->sysp != 0;
1608 if (CPP_OPTION (pfile, traditional))
1609 ok = _cpp_create_trad_definition (pfile, macro);
1612 ok = create_iso_definition (pfile, macro);
1620 pfile->state.va_args_ok = 0;
1628 node->value = ((union _cpp_hashnode_value *) pfile->macro_buffer)[i];
1636 if (CPP_OPTION (pfile, warn_unused_macros))
1637 _cpp_warn_if_unused_macro (pfile, node, NULL);
1639 if (warn_of_redefinition (pfile, node, macro))
1641 cpp_error_with_line (pfile, CPP_DL_PEDWARN, pfile->directive_line, 0,
1645 cpp_error_with_line (pfile, CPP_DL_PEDWARN,
1666 check_trad_stringification (cpp_reader *pfile, const cpp_macro *macro,
1696 cpp_error (pfile, CPP_DL_WARNING,
1711 cpp_macro_definition (cpp_reader *pfile, const cpp_hashnode *node)
1719 cpp_error (pfile, CPP_DL_ICE,
1735 if (CPP_OPTION (pfile, traditional))
1757 if (len > pfile->macro_buffer_len)
1759 pfile->macro_buffer = XRESIZEVEC (unsigned char,
1760 pfile->macro_buffer, len);
1761 pfile->macro_buffer_len = len;
1765 buffer = pfile->macro_buffer;
1777 if (param != pfile->spec_nodes.n__VA_ARGS__)
1798 if (CPP_OPTION (pfile, traditional))
1820 buffer = cpp_spell_token (pfile, token, buffer, false);
1833 return pfile->macro_buffer;