summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rwxr-xr-xtools/extract-api.sh2
-rwxr-xr-xtools/genruby.rb23
-rw-r--r--tools/sed-functions2
3 files changed, 24 insertions, 3 deletions
diff --git a/tools/extract-api.sh b/tools/extract-api.sh
index a681465..27a32bc 100755
--- a/tools/extract-api.sh
+++ b/tools/extract-api.sh
@@ -46,7 +46,7 @@ for header in \
DIR=$(dirname $header)
FILE=$(basename $header)
#
- for what in functions enums types callbacks; do
+ for what in functions enums types callbacks variables; do
F=$FILE-$what
cat $header | sed -r -n -f $P/sed-$what > $CURRENT/$F
if [ -f $PREV/$F ]; then
diff --git a/tools/genruby.rb b/tools/genruby.rb
index c7d1115..5065a7d 100755
--- a/tools/genruby.rb
+++ b/tools/genruby.rb
@@ -225,6 +225,22 @@ def gen_callbacks path, indent
r
end
#
+def gen_variables path, indent
+ r = []
+ open(path+'-variables','r').readlines.each do |l|
+ l.strip!
+ if not l=~ /EAPI\s+extern\s+(\w+\s+\*?)(\w+)/
+ r << indent+"# #{l}\n#{indent}# FIXME"
+ next
+ end
+ var = $2
+ t = $1
+ r << indent+"# #{l}"
+ r << wrap_text(indent+"attach_variable :#{var}, #{get_type t}", indent+' '*4)
+ end
+ r
+end
+#
def gen_functions path, indent
r = []
r << indent+"fcts = ["
@@ -258,10 +274,12 @@ libraries.collect do |header,module_name,fct_prefix,lib, output|
r << gen_typedefs(base, INDENT)
print "callbacks, "
r << gen_callbacks(base, INDENT)
+ print "variables, "
+ r << gen_variables(base, INDENT)
puts "functions."
r << gen_functions(base, INDENT)
r
-end.each do |lib, output, module_name, fct_prefix, enums, typedefs, callbacks, functions|
+end.each do |lib, output, module_name, fct_prefix, enums, typedefs, callbacks, variables, functions|
printf "%-60s", "generate #{output}"
open(output,'w:utf-8') do |f|
f << HEADER.gsub(/MNAME/,module_name).sub(/FCT_PREFIX/,fct_prefix)
@@ -275,6 +293,9 @@ end.each do |lib, output, module_name, fct_prefix, enums, typedefs, callbacks, f
f << "\n#{INDENT}#\n#{INDENT}# CALLBACKS"
print "callbacks, "
f << "\n"+callbacks.join("\n") unless callbacks.empty?
+ f << "\n#{INDENT}#\n#{INDENT}# VARIABLES"
+ print "variables, "
+ f << "\n"+variables.join("\n") unless variables.empty?
f << "\n#{INDENT}#\n#{INDENT}# FUNCTIONS"
puts "functions."
f << "\n"+functions.join("\n") unless functions.empty?
diff --git a/tools/sed-functions b/tools/sed-functions
index faf8bc7..296cab1 100644
--- a/tools/sed-functions
+++ b/tools/sed-functions
@@ -1,4 +1,4 @@
-
+/EAPI extern/ b
# if return type on single line, append next line
/EAPI.*[^;]\s*$/ { N; s/\n/ / }
# while unfinished argument list, append next line