Subversion Repositories Projects

Rev

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