diff --git a/gtk/gentypefuncs.d b/gtk/gentypefuncs.d deleted file mode 100755 index f7a052823f..0000000000 --- a/gtk/gentypefuncs.d +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/rdmd - -import std.stdio; -import std.file; -import std.process; -import std.regex; -import std.array; -import std.algorithm; - -void main(string[] args) { - string out_file = args[1]; - string[] in_files = args[3..$]; - - auto regex = ctRegex!("g[td]k_[a-zA-Z0-9_]*_get_type"); - - string[] funcs; - - foreach (filename; in_files) { - auto file = File(filename); - foreach (line; file.byLine()) { - auto match = line.matchFirst(regex); - if (!match.empty) { - // *cough*, not exactly the fastest way to do this... - if (!funcs.canFind(match.hit)) - funcs ~= cast(string)match.hit.idup; - } - } - } - - funcs.sort(); - - //writeln(funcs); - //writeln(funcs.length); - - string file_output = "G_GNUC_BEGIN_IGNORE_DEPRECATIONS\n"; - foreach (func; funcs) { - if (func.startsWith("gdk_x11") || func.startsWith("gtk_socket") || func.startsWith("gtk_plug")) { - file_output ~= "#ifdef GDK_WINDOWING_X11\n*tp++ = " ~ func ~ "();\n#endif\n"; - } else if (func != ("gtk_text_handle_get_type")){ - file_output ~= "*tp++ = " ~ func ~ "();\n"; - } - } - - std.file.write(out_file, file_output); -} diff --git a/gtk/gentypefuncs.py b/gtk/gentypefuncs.py new file mode 100644 index 0000000000..46beebdf1c --- /dev/null +++ b/gtk/gentypefuncs.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import sys +import re +import os + +debug = os.getenv('GTK_GENTYPEFUNCS_DEBUG') is not None + +out_file = sys.argv[1] +in_files = sys.argv[2:] + +funcs = [] + + +if debug: print 'Output file: ', out_file + +if debug: print len(in_files), 'input files' + +for filename in in_files: + if debug: print 'Input file: ', filename + with open(filename, "r") as f: + for line in f: + line = line.rstrip('\n').rstrip('\r') + # print line + match = re.search(r'\bg[td]k_[a-zA-Z0-9_]*_get_type\b', line) + if match: + func = match.group(0) + if not func in funcs: + funcs.append(func) + if debug: print 'Found', func + +file_output = 'G_GNUC_BEGIN_IGNORE_DEPRECATIONS\n' + +funcs = sorted(funcs) + +for f in funcs: + if f.startswith('gdk_x11') or f.startswith('gtk_socket') or f.startswith('gtk_plug'): + file_output += '#ifdef GDK_WINDOWING_X11\n' + file_output += '*tp++ = {0}();\n'.format(f) + file_output += '#endif\n' + else: + file_output += '*tp++ = {0}();\n'.format(f) + +if debug: print len(funcs), 'functions' + +ofile = open(out_file, "w") +ofile.write(file_output) +ofile.close() diff --git a/gtk/meson.build b/gtk/meson.build index 0a655ebdd2..b0745575fc 100644 --- a/gtk/meson.build +++ b/gtk/meson.build @@ -741,8 +741,7 @@ gtkprivatetypebuiltins_c = custom_target( command : [mkenum, perl, glib_mkenums, meson.current_source_dir() + '/gtkprivatetypebuiltins.c.template', '@OUTPUT@', '@INPUT@'] ) -d_compiler = find_program('dmd') -gentypefuncs_prog = find_program('gentypefuncs.d') +gentypefuncs_prog = find_program('gentypefuncs.py') # Generate gtktypefuncs.c typefuncs = custom_target( 'typefuncs',