Mercurial > ~dholland > hg > tradcpp > index.cgi
comparison macro.c @ 174:09cfad6772de
Some minor cosmetic changes relating to ei->itemtype.
author | David A. Holland |
---|---|
date | Fri, 12 Jun 2015 02:21:28 -0400 (2015-06-12) |
parents | 3e7e696fe558 |
children | ffdb0b73856f |
comparison
equal
deleted
inserted
replaced
173:6ff17ab68b16 | 174:09cfad6772de |
---|---|
37 #include "place.h" | 37 #include "place.h" |
38 #include "macro.h" | 38 #include "macro.h" |
39 #include "output.h" | 39 #include "output.h" |
40 | 40 |
41 struct expansionitem { | 41 struct expansionitem { |
42 enum { EI_PARAM, EI_STRING, EI_FILE, EI_LINE } itemtype; | 42 enum { EI_STRING, EI_PARAM, EI_FILE, EI_LINE } itemtype; |
43 union { | 43 union { |
44 char *string; | 44 char *string; /* EI_STRING */ |
45 unsigned param; | 45 unsigned param; /* EI_PARAM */ |
46 }; | 46 }; |
47 }; | 47 }; |
48 DECLARRAY(expansionitem, static UNUSED); | 48 DECLARRAY(expansionitem, static UNUSED); |
49 DEFARRAY(expansionitem, static); | 49 DEFARRAY(expansionitem, static); |
50 | 50 |
130 | 130 |
131 static | 131 static |
132 void | 132 void |
133 expansionitem_destroy(struct expansionitem *ei) | 133 expansionitem_destroy(struct expansionitem *ei) |
134 { | 134 { |
135 if (ei->itemtype == EI_STRING) { | 135 switch (ei->itemtype) { |
136 case EI_STRING: | |
136 dostrfree(ei->string); | 137 dostrfree(ei->string); |
138 break; | |
139 case EI_PARAM: | |
140 case EI_FILE: | |
141 case EI_LINE: | |
142 break; | |
137 } | 143 } |
138 dofree(ei, sizeof(*ei)); | 144 dofree(ei, sizeof(*ei)); |
139 } | 145 } |
140 | 146 |
141 static | 147 static |
813 len = 0; | 819 len = 0; |
814 num = expansionitemarray_num(&es->curmacro->expansion); | 820 num = expansionitemarray_num(&es->curmacro->expansion); |
815 for (i=0; i<num; i++) { | 821 for (i=0; i<num; i++) { |
816 ei = expansionitemarray_get(&es->curmacro->expansion, i); | 822 ei = expansionitemarray_get(&es->curmacro->expansion, i); |
817 switch (ei->itemtype) { | 823 switch (ei->itemtype) { |
818 case EI_STRING: | 824 case EI_STRING: |
819 len += strlen(ei->string); | 825 len += strlen(ei->string); |
820 break; | 826 break; |
821 case EI_PARAM: | 827 case EI_PARAM: |
822 arg = stringarray_get(&es->args, ei->param); | 828 arg = stringarray_get(&es->args, ei->param); |
823 len += strlen(arg); | 829 len += strlen(arg); |
824 break; | 830 break; |
825 case EI_FILE: | 831 case EI_FILE: |
826 len += strlen(place_getname(p)) + 2; | 832 len += strlen(place_getname(p)) + 2; |
827 break; | 833 break; |
828 case EI_LINE: | 834 case EI_LINE: |
829 len += snprintf(numbuf, sizeof(numbuf), "%u", p->line); | 835 len += snprintf(numbuf, sizeof(numbuf), "%u", p->line); |
830 break; | 836 break; |
831 } | 837 } |
832 } | 838 } |
833 | 839 |
834 ret = domalloc(len+1); | 840 ret = domalloc(len+1); |
835 *ret = '\0'; | 841 *ret = '\0'; |
836 for (i=0; i<num; i++) { | 842 for (i=0; i<num; i++) { |
837 ei = expansionitemarray_get(&es->curmacro->expansion, i); | 843 ei = expansionitemarray_get(&es->curmacro->expansion, i); |
838 switch (ei->itemtype) { | 844 switch (ei->itemtype) { |
839 case EI_STRING: | 845 case EI_STRING: |
840 strcat(ret, ei->string); | 846 strcat(ret, ei->string); |
841 break; | 847 break; |
842 case EI_PARAM: | 848 case EI_PARAM: |
843 arg = stringarray_get(&es->args, ei->param); | 849 arg = stringarray_get(&es->args, ei->param); |
844 strcat(ret, arg); | 850 strcat(ret, arg); |
845 break; | 851 break; |
846 case EI_FILE: | 852 case EI_FILE: |
847 strcat(ret, "\""); | 853 strcat(ret, "\""); |
848 strcat(ret, place_getname(p)); | 854 strcat(ret, place_getname(p)); |
849 strcat(ret, "\""); | 855 strcat(ret, "\""); |
850 break; | 856 break; |
851 case EI_LINE: | 857 case EI_LINE: |
852 snprintf(numbuf, sizeof(numbuf), "%u", p->line); | 858 snprintf(numbuf, sizeof(numbuf), "%u", p->line); |
853 strcat(ret, numbuf); | 859 strcat(ret, numbuf); |
854 break; | 860 break; |
855 } | 861 } |
856 } | 862 } |