Rev 60 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 60 | Rev 123 | ||
---|---|---|---|
1 | require 'rio' |
1 | require 'rio' |
2 | 2 | ||
3 | 3 | ||
4 | all_tabs=[] |
4 | all_tabs=[] |
5 | 5 | ||
6 | all_names=[] |
6 | all_names=[] |
7 | all_positions=[] |
7 | all_positions=[] |
8 | all_types=[] |
8 | all_types=[] |
9 | 9 | ||
10 | all_namestarts=[] |
10 | all_namestarts=[] |
11 | all_lengths=[] |
11 | all_lengths=[] |
12 | 12 | ||
13 | function_hash={} |
13 | function_hash={} |
14 | act_name="" |
14 | act_name="" |
15 | rio("definitions").read.each_line { |line| |
15 | rio("definitions").read.each_line { |line| |
16 | 16 | ||
17 | if line =~ /--/ |
17 | if line =~ /--/ |
18 | act_name=line.split("--")[1].delete!("\r\n") |
18 | act_name=line.split("--")[1].delete!("\r\n") |
19 | function_hash[act_name]="" |
19 | function_hash[act_name]="" |
20 | else |
20 | else |
21 | function_hash[act_name] << line |
21 | function_hash[act_name] << line |
22 | end |
22 | end |
23 | } |
23 | } |
24 | 24 | ||
25 | #puts function_hash.inspect |
25 | #puts function_hash.inspect |
26 | #exit |
26 | #exit |
27 | 27 | ||
28 | Dir["header_files/*.h"].sort.each { |e| |
28 | Dir["header_files/*.h"].sort.each { |e| |
29 | puts "----------------" + e |
29 | puts "----------------" + e |
30 | new="" |
30 | new="" |
31 | start=false |
31 | start=false |
32 | rio(e).each_line { |l| |
32 | rio(e).each_line { |l| |
33 | start=true if l =~ /struct\r/ |
33 | start=true if l =~ /struct\r/ |
34 | start=false if l =~ /\}/ |
34 | start=false if l =~ /\}/ |
35 | if (l =~ /;/ ) && start |
35 | if (l =~ /;/ ) && start |
36 | new << l |
36 | new << l |
37 | end |
37 | end |
38 | 38 | ||
39 | } |
39 | } |
40 | 40 | ||
41 | act_pos=0 |
41 | act_pos=0 |
42 | name_pos=0 |
42 | name_pos=0 |
43 | end_pos=0 |
43 | end_pos=0 |
44 | @categorys=[] |
44 | @categorys=[] |
45 | @category={} |
45 | @category={} |
46 | def to_cat(name,items) |
46 | def to_cat(name,items) |
47 | @categorys << name |
47 | @categorys << name |
48 | 48 | ||
49 | @category[name]=[] if !@category[name] |
49 | @category[name]=[] if !@category[name] |
50 | @category[name] |= items |
50 | @category[name] |= items |
51 | end |
51 | end |
52 | 52 | ||
53 | 53 | ||
54 | 54 | ||
55 | 55 | ||
56 | new.each_line { |l| |
56 | new.each_line { |l| |
57 | found=false |
57 | found=false |
58 | function_hash.each_pair { |k,v| |
58 | function_hash.each_pair { |k,v| |
59 | if l.scan(k)!=[] |
59 | if l.scan(k)!=[] |
60 | found=true |
60 | found=true |
61 | p "found" + k |
61 | p "found" + k |
62 | puts v |
62 | puts v |
63 | puts act_pos |
63 | puts act_pos |
64 | 64 | ||
65 | instance_eval(v) |
65 | instance_eval(v) |
66 | 66 | ||
67 | end |
67 | end |
68 | } |
68 | } |
69 | if !found |
69 | if !found |
70 | p "line not found " + l |
70 | p "Fatal: line not found " + l |
- | 71 | # p "stopping process" |
|
71 | exit |
72 | # exit |
72 | end |
73 | end |
73 | } |
74 | } |
74 | #p @category |
75 | #p @category |
75 | @categorys.uniq! |
76 | @categorys.uniq! |
76 | @categorys.sort! |
77 | @categorys.sort! |
77 | all_tabs << ["{\"" + @categorys.join("\",\"") + "\"}"] |
78 | all_tabs << ["{\"" + @categorys.join("\",\"") + "\"}"] |
78 | puts "[\"" + @categorys.join("\",\"") + "\"]" |
79 | puts "[\"" + @categorys.join("\",\"") + "\"]" |
79 | 80 | ||
80 | 81 | ||
81 | all_names << ["{"+@categorys.map { |c| |
82 | all_names << ["{"+@categorys.map { |c| |
82 | "{\"" + @category[c].map { |e| |
83 | "{\"" + @category[c].map { |e| |
83 | e[:name] |
84 | e[:name] |
84 | }.join("\",\"") + "\"}" |
85 | }.join("\",\"") + "\"}" |
85 | }.join(",")+"}"] |
86 | }.join(",")+"}"] |
86 | 87 | ||
87 | all_positions << ["{"+@categorys.map { |c| |
88 | all_positions << ["{"+@categorys.map { |c| |
88 | "{" + @category[c].map { |e| |
89 | "{" + @category[c].map { |e| |
89 | e[:pos] |
90 | e[:pos] |
90 | }.join(",") + "}" |
91 | }.join(",") + "}" |
91 | }.join(",")+"}"] |
92 | }.join(",")+"}"] |
92 | 93 | ||
93 | all_types << ["{"+ @categorys.map { |c| |
94 | all_types << ["{"+ @categorys.map { |c| |
94 | "{PARAMTYPE_" + @category[c].map { |e| |
95 | "{PARAMTYPE_" + @category[c].map { |e| |
95 | e[:typ] |
96 | e[:typ] |
96 | }.join(",PARAMTYPE_") + "}" |
97 | }.join(",PARAMTYPE_") + "}" |
97 | }.join(",") + "}"] |
98 | }.join(",") + "}"] |
98 | 99 | ||
99 | all_namestarts << name_pos |
100 | all_namestarts << name_pos |
100 | all_lengths << end_pos |
101 | all_lengths << end_pos |
101 | #rio(e+".new") <new |
102 | #rio(e+".new") <new |
102 | 103 | ||
103 | 104 | ||
104 | 105 | ||
105 | 106 | ||
106 | 107 | ||
107 | 108 | ||
108 | } |
109 | } |
109 | 110 | ||
110 | puts "// -- start generated code --" |
111 | puts "// -- start generated code --" |
111 | puts "public final static int PARAMTYPE_BYTE=0;" |
112 | puts "public final static int PARAMTYPE_BYTE=0;" |
112 | puts "public final static int PARAMTYPE_BITSWITCH=1;" |
113 | puts "public final static int PARAMTYPE_BITSWITCH=1;" |
113 | puts "public final static int PARAMTYPE_STICK=2;" |
114 | puts "public final static int PARAMTYPE_STICK=2;" |
114 | puts "public final static String[][] all_tab_names={"+all_tabs.join(",")+"};" |
115 | puts "public final static String[][] all_tab_names={"+all_tabs.join(",")+"};" |
115 | puts "public final static String[][][] all_field_names={"+all_names.join(",")+"};" |
116 | puts "public final static String[][][] all_field_names={"+all_names.join(",")+"};" |
116 | puts "public final static int[][][] all_field_positions={"+all_positions.join(",")+"};" |
117 | puts "public final static int[][][] all_field_positions={"+all_positions.join(",")+"};" |
117 | puts "public final static int[][][] all_field_types={"+all_types.join(",")+"};" |
118 | puts "public final static int[][][] all_field_types={"+all_types.join(",")+"};" |
118 | 119 | ||
119 | 120 | ||
120 | puts "public final static int[] all_name_positions={"+all_namestarts.join(",")+"};" |
121 | puts "public final static int[] all_name_positions={"+all_namestarts.join(",")+"};" |
121 | puts "public final static int[] all_lengths={"+all_lengths.join(",")+"};" |
122 | puts "public final static int[] all_lengths={"+all_lengths.join(",")+"};" |
122 | puts "// -- end generated code --" |
123 | puts "// -- end generated code --" |
123 | 124 |