Changeset 187


Ignore:
Timestamp:
2006-09-19T02:37:06+02:00 (9 years ago)
Author:
moo
Message:

handle one line struct {}, multiline comments, whitespaces when parsing header for structs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/mkstructinfo.awk

    r169 r187  
    33BEGIN {
    44    brace = 0;
     5    incomment = 0;
    56    buffer_len = 0;
    67}
     8
     9# multiline comment handling
     10{
     11    # removes one line comment
     12    gsub(/\/\*(.+?)\*\//, " ");
     13}
     14/\*\// {
     15    if (incomment) {
     16        sub(/.*\*\//, "");
     17        incomment = 0;
     18    }
     19}
     20incomment {
     21    next;
     22}
     23/\/\*/ {
     24    sub(/\/\*.*/, "");
     25    incomment = 1;
     26    # fall through
     27}
     28
     29# skip file/line mark here to be faster
    730/^#/ {
    831    next;
    932}
     33
    1034/^}.*;/ {
    1135    if (instruct) {
     
    5478{
    5579    if (brace == 1 && instruct) {
    56         gsub(/\/\*(.+?)\*\//, " "); # removes one line comment
     80        gsub(/(^[\t ]+|[\t ]+$)/, ""); # trim whitespaces
    5781        sub(/.*[{}]/, "");
    5882        gsub(/\[[^\]]+\]/, ""); # ignore [...]
     
    6791        }
    6892        else {
     93            # process normal variables
     94
    6995            # ignore any ()s
    7096            while (gsub(/(\([^)]*\))/, "")) {
     
    83109                next;
    84110            }
     111            # print "=DEBUG=" $0 "==";
    85112            split($0, chunks, ";");
    86113            # [unsigned int a, b, c]
     
    102129                }
    103130                if (last_piece == "") {
    104                     print "=====" chunks[i];
     131                    # print "=ERROR=" chunks[i] "==";
     132                    delete chunks[i];
     133                    continue;
    105134                }
    106135                # a
     
    123152    next;
    124153}
    125 /^typedef struct .*\{/ {
     154/^typedef struct .*\{[^}]*$/ {
    126155    brace = 1;
    127156    instruct = 1;
Note: See TracChangeset for help on using the changeset viewer.