Lines Matching refs:macro
79 cpp_macro *macro = node->value.macro; in _cpp_warn_if_unused_macro() local
81 if (!macro->used in _cpp_warn_if_unused_macro()
82 && MAIN_FILE_P (linemap_lookup (pfile->line_table, macro->line))) in _cpp_warn_if_unused_macro()
83 cpp_error_with_line (pfile, CPP_DL_WARNING, macro->line, 0, in _cpp_warn_if_unused_macro()
536 _cpp_arguments_ok (cpp_reader *pfile, cpp_macro *macro, const cpp_hashnode *node, unsigned int argc) in _cpp_arguments_ok() argument
538 if (argc == macro->paramc) in _cpp_arguments_ok()
541 if (argc < macro->paramc) in _cpp_arguments_ok()
551 if (argc + 1 == macro->paramc && macro->variadic) in _cpp_arguments_ok()
553 if (CPP_PEDANTIC (pfile) && ! macro->syshdr) in _cpp_arguments_ok()
561 NODE_NAME (node), macro->paramc, argc); in _cpp_arguments_ok()
566 NODE_NAME (node), argc, macro->paramc); in _cpp_arguments_ok()
580 cpp_macro *macro; in collect_args() local
585 macro = node->value.macro; in collect_args()
586 if (macro->paramc) in collect_args()
587 argc = macro->paramc; in collect_args()
639 && ! (macro->variadic && argc == macro->paramc)) in collect_args()
658 if (argc <= macro->paramc) in collect_args()
661 if (argc != macro->paramc) in collect_args()
682 if (argc == 1 && macro->paramc == 0 && args[0].count == 0) in collect_args()
684 if (_cpp_arguments_ok (pfile, macro, node, argc)) in collect_args()
693 if (macro->variadic && (argc < macro->paramc in collect_args()
696 args[macro->paramc - 1].first = NULL; in collect_args()
761 cpp_macro *macro = node->value.macro; in enter_macro_context() local
763 if (macro->fun_like) in enter_macro_context()
777 if (CPP_WTRADITIONAL (pfile) && ! node->value.macro->syshdr) in enter_macro_context()
785 if (macro->paramc > 0) in enter_macro_context()
786 replace_args (pfile, node, macro, (macro_arg *) buff->base); in enter_macro_context()
793 macro->used = 1; in enter_macro_context()
795 if (macro->paramc == 0) in enter_macro_context()
796 _cpp_push_token_context (pfile, node, macro->exp.tokens, macro->count); in enter_macro_context()
810 replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, macro_arg *args) in replace_args() argument
822 total = macro->count; in replace_args()
823 limit = macro->exp.tokens + macro->count; in replace_args()
825 for (src = macro->exp.tokens; src < limit; src++) in replace_args()
841 || (src > macro->exp.tokens && (src[-1].flags & PASTE_LEFT))) in replace_args()
857 for (src = macro->exp.tokens; src < limit; src++) in replace_args()
874 else if (src != macro->exp.tokens && (src[-1].flags & PASTE_LEFT)) in replace_args()
880 && macro->variadic in replace_args()
881 && src->val.arg_no == macro->paramc) in replace_args()
900 && src != macro->exp.tokens && !(src[-1].flags & PASTE_LEFT)) in replace_args()
933 for (i = 0; i < macro->paramc; i++) in replace_args()
976 push_ptoken_context (cpp_reader *pfile, cpp_hashnode *macro, _cpp_buff *buff, in push_ptoken_context() argument
982 context->macro = macro; in push_ptoken_context()
990 _cpp_push_token_context (cpp_reader *pfile, cpp_hashnode *macro, in _cpp_push_token_context() argument
996 context->macro = macro; in _cpp_push_token_context()
1004 _cpp_push_text_context (cpp_reader *pfile, cpp_hashnode *macro, in _cpp_push_text_context() argument
1010 context->macro = macro; in _cpp_push_text_context()
1014 macro->flags |= NODE_DISABLED; in _cpp_push_text_context()
1073 if (context->macro) in _cpp_pop_context()
1074 context->macro->flags &= ~NODE_DISABLED; in _cpp_pop_context()
1173 cpp_hashnode *node = pfile->context->macro; in cpp_sys_macro_p()
1175 return node && node->value.macro && node->value.macro->syshdr; in cpp_sys_macro_p()
1248 macro1 = node->value.macro; in warn_of_redefinition()
1289 _cpp_save_parameter (cpp_reader *pfile, cpp_macro *macro, cpp_hashnode *node) in _cpp_save_parameter() argument
1301 < (macro->paramc + 1) * sizeof (cpp_hashnode *)) in _cpp_save_parameter()
1304 ((cpp_hashnode **) BUFF_FRONT (pfile->a_buff))[macro->paramc++] = node; in _cpp_save_parameter()
1306 len = macro->paramc * sizeof (union _cpp_hashnode_value); in _cpp_save_parameter()
1313 ((union _cpp_hashnode_value *) pfile->macro_buffer)[macro->paramc - 1] in _cpp_save_parameter()
1316 node->value.arg_index = macro->paramc; in _cpp_save_parameter()
1323 parse_params (cpp_reader *pfile, cpp_macro *macro) in parse_params() argument
1354 if (_cpp_save_parameter (pfile, macro, token->val.node)) in parse_params()
1359 if (prev_ident || macro->paramc == 0) in parse_params()
1373 macro->variadic = 1; in parse_params()
1376 _cpp_save_parameter (pfile, macro, in parse_params()
1405 alloc_expansion_token (cpp_reader *pfile, cpp_macro *macro) in alloc_expansion_token() argument
1407 if (BUFF_ROOM (pfile->a_buff) < (macro->count + 1) * sizeof (cpp_token)) in alloc_expansion_token()
1410 return &((cpp_token *) BUFF_FRONT (pfile->a_buff))[macro->count++]; in alloc_expansion_token()
1416 lex_expansion_token (cpp_reader *pfile, cpp_macro *macro) in lex_expansion_token() argument
1421 pfile->cur_token = alloc_expansion_token (pfile, macro); in lex_expansion_token()
1432 else if (CPP_WTRADITIONAL (pfile) && macro->paramc > 0 in lex_expansion_token()
1434 check_trad_stringification (pfile, macro, &token->val.str); in lex_expansion_token()
1440 create_iso_definition (cpp_reader *pfile, cpp_macro *macro) in create_iso_definition() argument
1451 bool ok = parse_params (pfile, macro); in create_iso_definition()
1452 macro->params = (cpp_hashnode **) BUFF_FRONT (pfile->a_buff); in create_iso_definition()
1461 (sizeof (cpp_hashnode *) * macro->paramc); in create_iso_definition()
1462 memcpy (params, macro->params, in create_iso_definition()
1463 sizeof (cpp_hashnode *) * macro->paramc); in create_iso_definition()
1464 macro->params = params; in create_iso_definition()
1467 BUFF_FRONT (pfile->a_buff) = (uchar *) ¯o->params[macro->paramc]; in create_iso_definition()
1468 macro->fun_like = 1; in create_iso_definition()
1505 if (macro->fun_like) in create_iso_definition()
1506 token = lex_expansion_token (pfile, macro); in create_iso_definition()
1509 token = alloc_expansion_token (pfile, macro); in create_iso_definition()
1517 if (macro->count > 1 && token[-1].type == CPP_HASH && macro->fun_like) in create_iso_definition()
1525 macro->count--; in create_iso_definition()
1544 if (--macro->count > 0) in create_iso_definition()
1545 token = lex_expansion_token (pfile, macro); in create_iso_definition()
1547 if (macro->count == 0 || token->type == CPP_EOF) in create_iso_definition()
1557 token = lex_expansion_token (pfile, macro); in create_iso_definition()
1560 macro->exp.tokens = (cpp_token *) BUFF_FRONT (pfile->a_buff); in create_iso_definition()
1561 macro->traditional = 0; in create_iso_definition()
1564 macro->count--; in create_iso_definition()
1567 if (macro->count) in create_iso_definition()
1568 macro->exp.tokens[0].flags &= ~PREV_WHITE; in create_iso_definition()
1575 * macro->count); in create_iso_definition()
1576 memcpy (tokns, macro->exp.tokens, sizeof (cpp_token) * macro->count); in create_iso_definition()
1577 macro->exp.tokens = tokns; in create_iso_definition()
1580 BUFF_FRONT (pfile->a_buff) = (uchar *) ¯o->exp.tokens[macro->count]; in create_iso_definition()
1589 cpp_macro *macro; in _cpp_create_definition() local
1594 macro = (cpp_macro *) pfile->hash_table->alloc_subobject in _cpp_create_definition()
1597 macro = (cpp_macro *) _cpp_aligned_alloc (pfile, sizeof (cpp_macro)); in _cpp_create_definition()
1598 macro->line = pfile->directive_line; in _cpp_create_definition()
1599 macro->params = 0; in _cpp_create_definition()
1600 macro->paramc = 0; in _cpp_create_definition()
1601 macro->variadic = 0; in _cpp_create_definition()
1602 macro->used = !CPP_OPTION (pfile, warn_unused_macros); in _cpp_create_definition()
1603 macro->count = 0; in _cpp_create_definition()
1604 macro->fun_like = 0; in _cpp_create_definition()
1606 macro->syshdr = pfile->buffer && pfile->buffer->sysp != 0; in _cpp_create_definition()
1609 ok = _cpp_create_trad_definition (pfile, macro); in _cpp_create_definition()
1612 ok = create_iso_definition (pfile, macro); in _cpp_create_definition()
1624 for (i = macro->paramc; i-- > 0; ) in _cpp_create_definition()
1626 struct cpp_hashnode *node = macro->params[i]; in _cpp_create_definition()
1639 if (warn_of_redefinition (pfile, node, macro)) in _cpp_create_definition()
1646 node->value.macro->line, 0, in _cpp_create_definition()
1656 node->value.macro = macro; in _cpp_create_definition()
1666 check_trad_stringification (cpp_reader *pfile, const cpp_macro *macro, in check_trad_stringification() argument
1689 for (i = 0; i < macro->paramc; i++) in check_trad_stringification()
1691 const cpp_hashnode *node = macro->params[i]; in check_trad_stringification()
1714 const cpp_macro *macro = node->value.macro; in cpp_macro_definition() local
1726 if (macro->fun_like) in cpp_macro_definition()
1730 for (i = 0; i < macro->paramc; i++) in cpp_macro_definition()
1731 len += NODE_LEN (macro->params[i]) + 1; /* "," */ in cpp_macro_definition()
1736 len += _cpp_replacement_text_len (macro); in cpp_macro_definition()
1739 for (i = 0; i < macro->count; i++) in cpp_macro_definition()
1741 cpp_token *token = ¯o->exp.tokens[i]; in cpp_macro_definition()
1744 len += NODE_LEN (macro->params[token->val.arg_no - 1]); in cpp_macro_definition()
1770 if (macro->fun_like) in cpp_macro_definition()
1773 for (i = 0; i < macro->paramc; i++) in cpp_macro_definition()
1775 cpp_hashnode *param = macro->params[i]; in cpp_macro_definition()
1783 if (i + 1 < macro->paramc) in cpp_macro_definition()
1788 else if (macro->variadic) in cpp_macro_definition()
1799 buffer = _cpp_copy_replacement_text (macro, buffer); in cpp_macro_definition()
1800 else if (macro->count) in cpp_macro_definition()
1803 for (i = 0; i < macro->count; i++) in cpp_macro_definition()
1805 cpp_token *token = ¯o->exp.tokens[i]; in cpp_macro_definition()
1815 NODE_NAME (macro->params[token->val.arg_no - 1]), in cpp_macro_definition()
1816 NODE_LEN (macro->params[token->val.arg_no - 1])); in cpp_macro_definition()
1817 buffer += NODE_LEN (macro->params[token->val.arg_no - 1]); in cpp_macro_definition()