Changeset 837 for trunk/mkstructinfo.awk
- Timestamp:
- 2012-03-25T04:14:44+02:00 (15 months ago)
- File:
-
- 1 edited
-
trunk/mkstructinfo.awk (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/mkstructinfo.awk
r719 r837 5 5 incomment = 0; 6 6 buffer_len = 0; 7 } 8 function printstruct(structname) { 9 printf "define(`ELEMENTSOF_%s', `%s')\n", structname, ELEMENTSOF[structname]; 10 printf "define(`COUNTOF_%s', `%s')\n", structname, COUNTOF[structname]; 11 printf "define(`SIZEOF_%s', `( %s )')\n", structname, SIZEOF[structname]; 7 12 } 8 13 … … 35 40 if (instruct) { 36 41 sub(";", ""); 37 if (instruct == 1 && $2) { 38 instruct = $2; 42 structname = instruct; 43 if (structname == 1 && $2) { 44 structname = $2; 39 45 } 40 if ( instructin typedefs) {41 instruct = typedefs[instruct];46 if (structname in typedefs) { 47 structname = typedefs[structname]; 42 48 } 43 49 sizeinfo = ""; … … 47 53 sizeinfo = sizeinfo " + "; 48 54 } 49 sizeinfo = sizeinfo "sizeof(((" instruct"*)NULL)->" buffer[i] ")";55 sizeinfo = sizeinfo "sizeof(((" structname "*)NULL)->" buffer[i] ")"; 50 56 51 57 if (i == 0) { … … 56 62 } 57 63 } 58 printf "define(`ELEMENTSOF_%s', `%s')\n", instruct, elms; 59 printf "define(`COUNTOF_%s', `%s')\n", instruct, i; 60 printf "define(`SIZEOF_%s', `( %s )')\n", instruct, sizeinfo; 64 ELEMENTSOF[structname] = elms; 65 COUNTOF[structname] = i; 66 SIZEOF[structname] = sizeinfo; 67 printstruct(structname); 61 68 print "\n"; 62 69 for (i in buffer) { … … 149 156 /^typedef struct [^{]*;/ { 150 157 sub(";", ""); 151 typedefs[$3] = $4; 158 typename=$3; 159 newtypename=$4; 160 typedefs[typename] = newtypename; 161 if (ELEMENTSOF[typename]) { 162 ELEMENTSOF[newtypename] = ELEMENTSOF[typename]; 163 COUNTOF[newtypename] = COUNTOF[typename]; 164 sub(/.*/, SIZEOF[typename]); 165 gsub(typename, newtypename); 166 SIZEOF[newtypename] = $0; 167 printstruct(newtypename); 168 } 152 169 next; 153 170 }
Note: See TracChangeset
for help on using the changeset viewer.

