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
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 }