comparison macro.c @ 172:3e7e696fe558

Clean up the mess Joerg made of apply_builtin_macros().
author David A. Holland
date Fri, 12 Jun 2015 02:14:45 -0400
parents 5922e6ca6b80
children 09cfad6772de
comparison
equal deleted inserted replaced
171:5922e6ca6b80 172:3e7e696fe558
600 expansionitemarray_add(&m->expansion, ei, NULL); 600 expansionitemarray_add(&m->expansion, ei, NULL);
601 macro_define_common_end(m); 601 macro_define_common_end(m);
602 } 602 }
603 603
604 void 604 void
605 macro_define_file(struct place *p)
606 {
607 struct macro *m;
608 struct expansionitem *ei;
609
610 m = macro_define_common_start(p, "__FILE__", p);
611 ei = expansionitem_create_file();
612 expansionitemarray_add(&m->expansion, ei, NULL);
613 macro_define_common_end(m);
614 }
615
616 void
617 macro_define_line(struct place *p)
618 {
619 struct macro *m;
620 struct expansionitem *ei;
621
622 m = macro_define_common_start(p, "__LINE__", p);
623 ei = expansionitem_create_line();
624 expansionitemarray_add(&m->expansion, ei, NULL);
625 macro_define_common_end(m);
626 }
627
628 void
629 macro_define_params(struct place *p1, const char *macro, 605 macro_define_params(struct place *p1, const char *macro,
630 struct place *p2, const char *params, 606 struct place *p2, const char *params,
631 struct place *p3, const char *expansion) 607 struct place *p3, const char *expansion)
632 { 608 {
633 struct macro *m; 609 struct macro *m;
634 610
635 m = macro_define_common_start(p1, macro, p3); 611 m = macro_define_common_start(p1, macro, p3);
636 m->hasparams = true; 612 m->hasparams = true;
637 macro_parse_parameters(m, p2, params); 613 macro_parse_parameters(m, p2, params);
638 macro_parse_expansion(m, expansion); 614 macro_parse_expansion(m, expansion);
615 macro_define_common_end(m);
616 }
617
618 void
619 macro_define_magic(struct place *p, const char *macro)
620 {
621 struct macro *m;
622 struct expansionitem *ei;
623
624 m = macro_define_common_start(p, macro, p);
625 if (!strcmp(macro, "__FILE__")) {
626 ei = expansionitem_create_file();
627 }
628 else {
629 assert(!strcmp(macro, "__LINE__"));
630 ei = expansionitem_create_line();
631 }
632 expansionitemarray_add(&m->expansion, ei, NULL);
639 macro_define_common_end(m); 633 macro_define_common_end(m);
640 } 634 }
641 635
642 void 636 void
643 macro_undef(const char *macro) 637 macro_undef(const char *macro)