Lines Matching refs:pfile

99 check_output_buffer (cpp_reader *pfile, size_t n)
105 if (n > (size_t) (pfile->out.limit - pfile->out.cur))
107 size_t size = pfile->out.cur - pfile->out.base;
110 pfile->out.base = XRESIZEVEC (unsigned char, pfile->out.base, new_size);
111 pfile->out.limit = pfile->out.base + new_size;
112 pfile->out.cur = pfile->out.base + size;
119 skip_macro_block_comment (cpp_reader *pfile)
121 const uchar *cur = pfile->buffer->cur;
132 pfile->buffer->cur = cur;
140 to by pfile->out.cur, which must be of sufficient size.
142 the output. pfile->out.cur is updated depending upon IN_DEFINE,
143 -C, -CC and pfile->state.in_directive.
148 copy_comment (cpp_reader *pfile, const uchar *cur, int in_define)
151 source_location src_loc = pfile->line_table->highest_line;
152 cpp_buffer *buffer = pfile->buffer;
155 if (pfile->context->prev)
156 unterminated = false, skip_macro_block_comment (pfile);
158 unterminated = _cpp_skip_block_comment (pfile);
161 cpp_error_with_line (pfile, CPP_DL_ERROR, src_loc, 0,
167 if (pfile->state.in_directive)
171 if (CPP_OPTION (pfile, discard_comments_in_macro_exp))
172 pfile->out.cur--;
177 pfile->out.cur[-1] = ' ';
179 else if (CPP_OPTION (pfile, discard_comments))
180 pfile->out.cur--;
187 memcpy (pfile->out.cur, cur, len);
188 pfile->out.cur += len;
191 *pfile->out.cur++ = '*';
192 *pfile->out.cur++ = '/';
207 pfile->out.cur is updated.
212 skip_whitespace (cpp_reader *pfile, const uchar *cur, int skip_comments)
214 uchar *out = pfile->out.cur;
226 pfile->out.cur = out;
227 cur = copy_comment (pfile, cur, false /* in_define */);
228 out = pfile->out.cur;
236 pfile->out.cur = out;
244 lex_identifier (cpp_reader *pfile, const uchar *cur)
247 uchar *out = pfile->out.cur;
254 CUR (pfile->context) = cur;
255 len = out - pfile->out.cur;
256 result = (cpp_hashnode *) ht_lookup (pfile->hash_table, pfile->out.cur,
258 pfile->out.cur = out;
266 _cpp_overlay_buffer (cpp_reader *pfile, const uchar *start, size_t len)
268 cpp_buffer *buffer = pfile->buffer;
270 pfile->overlaid_buffer = buffer;
271 pfile->saved_cur = buffer->cur;
272 pfile->saved_rlimit = buffer->rlimit;
273 pfile->saved_line_base = buffer->next_line;
283 _cpp_remove_overlay (cpp_reader *pfile)
285 cpp_buffer *buffer = pfile->overlaid_buffer;
287 buffer->cur = pfile->saved_cur;
288 buffer->rlimit = pfile->saved_rlimit;
289 buffer->line_base = pfile->saved_line_base;
292 pfile->overlaid_buffer = NULL;
298 _cpp_read_logical_line_trad (cpp_reader *pfile)
302 if (pfile->buffer->need_line && !_cpp_get_fresh_line (pfile))
305 while (!_cpp_scan_out_logical_line (pfile, NULL) || pfile->state.skipping);
307 return pfile->buffer != NULL;
313 maybe_start_funlike (cpp_reader *pfile, cpp_hashnode *node, const uchar *start, struct fun_macro *macro)
318 _cpp_release_buff (pfile, macro->buff);
319 macro->buff = _cpp_get_buff (pfile, n * sizeof (size_t));
322 macro->offset = start - pfile->out.base;
343 _cpp_scan_out_logical_line (cpp_reader *pfile, cpp_macro *macro)
358 header_ok = pfile->state.angled_headers;
359 CUR (pfile->context) = pfile->buffer->cur;
360 RLIMIT (pfile->context) = pfile->buffer->rlimit;
361 pfile->out.cur = pfile->out.base;
362 pfile->out.first_line = pfile->line_table->highest_line;
365 start_of_input_line = pfile->buffer->cur;
367 context = pfile->context;
369 check_output_buffer (pfile, RLIMIT (context) - cur);
370 out = pfile->out.cur;
375 && cur >= pfile->buffer->notes[pfile->buffer->cur_note].pos)
377 pfile->buffer->cur = cur;
378 _cpp_process_line_notes (pfile, false);
398 pfile->out.cur = out - 1;
399 _cpp_pop_context (pfile);
404 pfile->out.cur = out - 1;
405 pfile->buffer->cur = cur;
406 pfile->buffer->need_line = true;
407 CPP_INCREMENT_LINE (pfile, 0);
410 && !pfile->state.in_directive
411 && _cpp_get_fresh_line (pfile))
417 cur = pfile->buffer->cur;
450 pfile->out.cur = out;
451 cur = copy_comment (pfile, cur, macro != 0);
452 out = pfile->out.cur;
468 if (!pfile->state.skipping && (quote == 0 || macro))
473 pfile->out.cur = out_start;
474 node = lex_identifier (pfile, cur - 1);
475 out = pfile->out.cur;
481 && !pfile->state.prevent_expansion)
484 pfile->mi_valid = false;
488 maybe_start_funlike (pfile, node, out_start, &fmacro);
490 fmacro.line = pfile->line_table->highest_line;
493 else if (!recursive_macro (pfile, node))
497 pfile->out.cur = out_start;
498 push_replacement_text (pfile, node);
507 pfile->out.cur = out_start;
508 save_replacement_text (pfile, macro, node->value.arg_index);
509 out = pfile->out.base;
516 else if (pfile->state.in_expression
517 && node == pfile->spec_nodes.n_defined)
531 if (recursive_macro (pfile, fmacro.node))
537 out = pfile->out.base + fmacro.offset;
550 save_argument (&fmacro, out - pfile->out.base);
563 save_argument (&fmacro, out - pfile->out.base);
568 && out == pfile->out.base + fmacro.offset + 1)
571 if (_cpp_arguments_ok (pfile, m, fmacro.node, fmacro.argc))
575 pfile->out.cur = (pfile->out.base
578 replace_args_and_push (pfile, &fmacro);
590 && !pfile->context->prev
591 && !pfile->state.in_directive)
599 pfile->out.cur = out;
600 cur = skip_whitespace (pfile, cur, true /* skip_comments */);
601 out = pfile->out.cur;
607 pfile->buffer->need_line = true;
608 CPP_INCREMENT_LINE (pfile, 0);
617 && CPP_OPTION (pfile, lang) != CLK_ASM)
622 do_it = lex_identifier (pfile, cur)->is_directive;
624 if (do_it || CPP_OPTION (pfile, lang) != CLK_ASM)
628 pfile->buffer->cur = cur;
629 _cpp_handle_directive (pfile, false /* indented */);
636 if (pfile->state.in_expression)
650 if (!pfile->state.in_directive)
651 pfile->mi_valid = false;
671 _cpp_release_buff (pfile, fmacro.buff);
674 cpp_error_with_line (pfile, CPP_DL_ERROR, fmacro.line, 0,
684 push_replacement_text (cpp_reader *pfile, cpp_hashnode *node)
692 text = _cpp_builtin_macro_text (pfile, node);
694 buf = _cpp_unaligned_alloc (pfile, len + 1);
708 _cpp_push_text_context (pfile, node, text, len);
713 recursive_macro (cpp_reader *pfile, cpp_hashnode *node)
730 cpp_context *context = pfile->context;
744 cpp_error (pfile, CPP_DL_ERROR,
818 replace_args_and_push (cpp_reader *pfile, struct fun_macro *fmacro)
823 push_replacement_text (pfile, fmacro->node);
845 buff = _cpp_get_buff (pfile, len + 1);
860 memcpy (p, pfile->out.base + fmacro->args[b->arg_index - 1],
868 _cpp_push_text_context (pfile, fmacro->node, BUFF_FRONT (buff), len);
871 pfile->context->buff = buff;
876 definition. Destroys pfile->out.cur.
879 duplicate parameter). On success, CUR (pfile->context) is just
882 scan_parameters (cpp_reader *pfile, cpp_macro *macro)
884 const uchar *cur = CUR (pfile->context) + 1;
889 cur = skip_whitespace (pfile, cur, true /* skip_comments */);
894 if (_cpp_save_parameter (pfile, macro, lex_identifier (pfile, cur)))
896 cur = skip_whitespace (pfile, CUR (pfile->context),
912 cpp_error (pfile, CPP_DL_ERROR, "syntax error in macro parameter list");
914 CUR (pfile->context) = cur + (*cur == ')');
919 /* Save the text from pfile->out.base to pfile->out.cur as
924 save_replacement_text (cpp_reader *pfile, cpp_macro *macro,
927 size_t len = pfile->out.cur - pfile->out.base;
934 exp = _cpp_unaligned_alloc (pfile, len + 1);
935 memcpy (exp, pfile->out.base, len);
948 if (macro->count + blen > BUFF_ROOM (pfile->a_buff))
949 _cpp_extend_buff (pfile, &pfile->a_buff, macro->count + blen);
951 exp = BUFF_FRONT (pfile->a_buff);
959 memcpy (block->text, pfile->out.base, len);
962 pfile->out.cur = pfile->out.base;
968 BUFF_FRONT (pfile->a_buff) += macro->count;
975 _cpp_create_trad_definition (cpp_reader *pfile, cpp_macro *macro)
979 cpp_context *context = pfile->context;
983 pfile->out.cur = pfile->out.base;
984 CUR (context) = pfile->buffer->cur;
985 RLIMIT (context) = pfile->buffer->rlimit;
986 check_output_buffer (pfile, RLIMIT (context) - CUR (context));
991 bool ok = scan_parameters (pfile, macro);
994 macro->params = (cpp_hashnode **) BUFF_FRONT (pfile->a_buff);
1002 BUFF_FRONT (pfile->a_buff) = (uchar *) &macro->params[macro->paramc];
1008 pfile->buffer->cur
1009 = skip_whitespace (pfile, CUR (context),
1010 CPP_OPTION (pfile, discard_comments_in_macro_exp));
1012 pfile->state.prevent_expansion++;
1013 _cpp_scan_out_logical_line (pfile, macro);
1014 pfile->state.prevent_expansion--;
1020 cur = pfile->out.base;
1021 limit = pfile->out.cur;
1024 pfile->out.cur = limit;
1025 save_replacement_text (pfile, macro, 0);