From 1594f455162dbfb85e5716f0052454a3a1c15745 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Zurcher?= Date: Thu, 28 Apr 2011 15:13:37 +0200 Subject: update tools/genruby callback regexp --- tools/genruby.rb | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tools/genruby.rb b/tools/genruby.rb index eb1c91d..4e74bf3 100755 --- a/tools/genruby.rb +++ b/tools/genruby.rb @@ -204,12 +204,12 @@ def gen_callbacks path, indent r = [] open(path+'-callbacks','r').readlines.each do |l| l.strip! - if not l=~/^\s*typedef\s+([a-zA-Z0-9_\* ]+?\s+\**)((?:\(\*)?\w+\)?)\s*\((.*)\);\s*$/ + if not l=~/^\s*typedef\s+(.*)((?:\(\*?\w+\)| \*?\w+))\s*\((.*)\);\s*$/ r << indent+"# #{l}\n#{indent}# FIXME" next end ret = $1 - name = $2 + name = $2.strip args = $3.split(',').collect { |arg| get_type_from_arg arg, l }.join ', ' k = name.sub(/\(/,'').sub(/\)/,'').sub(/\*/,'') t = name.downcase.sub(/\(/,'').sub(/\)/,'').sub(/\*/,'') @@ -245,25 +245,33 @@ libraries.collect do |header,module_name,fct_prefix,lib, output| base = File.join path, 'api', header output = File.join lib_path, output Dir.mkdir File.dirname output unless Dir.exists? File.dirname output - puts "parse #{base}-*" + printf "%-60s", "parse #{base}-*" r = [lib, output, module_name, fct_prefix ] + print "enums, " r << gen_enums(base, INDENT) + print "typedefs, " r << gen_typedefs(base, INDENT) + print "callbacks, " r << gen_callbacks(base, INDENT) + puts "functions." r << gen_functions(base, INDENT) r end.each do |lib, output, module_name, fct_prefix, enums, typedefs, callbacks, functions| - puts "generate #{output}" + printf "%-60s", "generate #{output}" open(output,'w:utf-8') do |f| f << HEADER.sub(/MNAME/,module_name).sub(/PREFIX/,fct_prefix) f << "#{INDENT}#\n#{INDENT}ffi_lib '#{lib}'" f << "\n#{INDENT}#\n#{INDENT}# ENUMS" + print "enums, " f << "\n"+enums.collect { |t| ( t.is_a?(Array) ? ( TYPES_USAGE[t[0]] ? t[1] : nil ) : t ) }.compact.join("\n") unless enums.empty? f << "\n#{INDENT}#\n#{INDENT}# TYPEDEFS" + print "typedefs, " f << "\n"+typedefs.collect { |t| ( t.is_a?(Array) ? ( TYPES_USAGE[t[0]] ? t[1] : nil ) : t ) }.compact.join("\n") unless typedefs.empty? f << "\n#{INDENT}#\n#{INDENT}# CALLBACKS" + print "callbacks, " f << "\n"+callbacks.join("\n") unless callbacks.empty? f << "\n#{INDENT}#\n#{INDENT}# FUNCTIONS" + puts "functions." f << "\n"+functions.join("\n") unless functions.empty? f << "\n#{INDENT}#\n#{INDENT}attach_fcts fcts\n" f << FOOTER -- cgit v1.1-2-g2b99