118 print "void SQ" cls "Register(Squirrel *engine) {" |
119 print "void SQ" cls "Register(Squirrel *engine) {" |
119 print " DefSQClass <" cls "> SQ" cls "(\"" cls "\");" |
120 print " DefSQClass <" cls "> SQ" cls "(\"" cls "\");" |
120 print " SQ" cls ".PreRegister(engine);" |
121 print " SQ" cls ".PreRegister(engine);" |
121 print " SQ" cls ".AddConstructor(engine);" |
122 print " SQ" cls ".AddConstructor(engine);" |
122 print "" |
123 print "" |
|
124 |
|
125 # Enum values |
123 mlen = 0 |
126 mlen = 0 |
124 for (i = 1; i <= enum_value_size; i++) { |
127 for (i = 1; i <= enum_value_size; i++) { |
125 if (mlen <= length(enum_value[i])) mlen = length(enum_value[i]) |
128 if (mlen <= length(enum_value[i])) mlen = length(enum_value[i]) + 1 |
126 } |
129 } |
|
130 for (i = 1; i <= enum_value_size; i++) { |
|
131 print " SQ" cls ".DefSQConst (engine, " cls "::" enum_value[i] ", " substr(spaces, 0, mlen - length(enum_value[i])) "\"" enum_value[i] "\");" |
|
132 delete enum_value[i] |
|
133 } |
|
134 if (enum_value_size != 0) print "" |
|
135 |
|
136 # Static methods |
|
137 mlen = 0 |
|
138 for (i = 1; i <= static_method_size; i++) { |
|
139 if (mlen <= length(static_methods[i])) mlen = length(static_methods[i]) + 1 |
|
140 } |
|
141 for (i = 1; i <= static_method_size; i++) { |
|
142 print " SQ" cls ".DefSQStaticMethod(engine, &" cls "::" static_methods[i] ", " substr(spaces, 0, mlen - length(static_methods[i])) "\"" static_methods[i] "\");" |
|
143 delete static_methods[i] |
|
144 } |
|
145 if (static_method_size != 0) print "" |
|
146 |
|
147 # Non-static methods |
|
148 mlen = 0 |
127 for (i = 1; i <= method_size; i++) { |
149 for (i = 1; i <= method_size; i++) { |
128 if (mlen <= length(methods[i])) mlen = length(methods[i]) + 1 #one character (&) longer |
150 if (mlen <= length(methods[i])) mlen = length(methods[i]) + 1 |
129 } |
151 } |
130 |
|
131 for (i = 1; i <= enum_value_size; i++) { |
|
132 print " SQ" cls ".DefSQConst (engine, " cls "::" enum_value[i] ", " substr(spaces, 0, mlen - length(enum_value[i]) + 1) "\"" enum_value[i] "\");" |
|
133 delete enum_value[i] |
|
134 } |
|
135 if (enum_value_size != 0) print "" |
|
136 |
|
137 |
|
138 for (i = 1; i <= method_size; i++) { |
152 for (i = 1; i <= method_size; i++) { |
139 print " SQ" cls ".DefSQFunction(engine, &" cls "::" methods[i] ", " substr(spaces, 0, mlen - length(methods[i])) "\"" methods[i] "\");" |
153 print " SQ" cls ".DefSQMethod(engine, &" cls "::" methods[i] ", " substr(spaces, 0, mlen - length(methods[i])) "\"" methods[i] "\");" |
140 delete methods[i] |
154 delete methods[i] |
141 } |
155 } |
142 print "" |
156 if (method_size != 0) print "" |
|
157 |
143 print " SQ" cls ".PostRegister(engine);" |
158 print " SQ" cls ".PostRegister(engine);" |
144 print "}" |
159 print "}" |
145 |
160 |
146 print "#endif /* DEFINE_SQUIRREL_CLASS */" |
161 print "#endif /* DEFINE_SQUIRREL_CLASS */" |
147 |
162 |
|
163 enum_size = 0 |
|
164 enum_value_size = 0 |
|
165 struct_size = 0 |
|
166 method_size = 0 |
|
167 static_method_size = 0 |
148 cls = "" |
168 cls = "" |
149 start_squirrel_define_on_next_line = "false" |
169 start_squirrel_define_on_next_line = "false" |
150 enum_size = 0 |
170 cls_level = 0 |
151 struct_size = 0 |
|
152 method_size = 0 |
|
153 } |
171 } |
154 |
172 |
155 # Skip non-public functions |
173 # Skip non-public functions |
156 { if (public == "false") next } |
174 { if (public == "false") next } |
157 |
175 |
165 } |
183 } |
166 |
184 |
167 # Add a method to the list |
185 # Add a method to the list |
168 /^.*$/ { |
186 /^.*$/ { |
169 if (cls_level != 1) next |
187 if (cls_level != 1) next |
|
188 |
|
189 is_static = match($0, "static") |
170 gsub("virtual", "", $0) |
190 gsub("virtual", "", $0) |
171 gsub("static", "", $0) |
191 gsub("static", "", $0) |
|
192 gsub("const", "", $0) |
172 gsub("\*", "", $0) |
193 gsub("\*", "", $0) |
173 gsub("\(.*", "", $0) |
194 gsub("\(.*", "", $0) |
174 if ($2 == "") next |
195 if ($2 == "") next |
175 method_size++ |
196 if (is_static) { |
176 methods[method_size] = $2 |
197 static_method_size++ |
|
198 static_methods[static_method_size] = $2 |
|
199 } else { |
|
200 method_size++ |
|
201 methods[method_size] = $2 |
|
202 } |
177 next |
203 next |
178 } |
204 } |