1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
#!/usr/bin/env ruby
types = %w[
Event
EventButton
Pixbuf
PixbufLoader
Screen
]
exportedWrap = {}
exportedUnwrap = {
"Screen" => true,
"Pixbuf" => true
}
class String
def underscore
self.gsub(/::/, '/').
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
gsub(/([a-z\d])([A-Z])/,'\1_\2').
tr("-", "_").
downcase
end
end
types.each do |tp|
lower = tp[0].downcase + tp[1..-1]
fname = "#{tp.underscore}.go"
prefix1 = if exportedWrap[tp]
"W"
else
"w"
end
prefix2 = if exportedUnwrap[tp]
"U"
else
"u"
end
File.open(fname, "w") do |ff|
ff.puts <<METH
package gdka
import (
"github.com/gotk3/gotk3/gdk"
"github.com/twstrike/gotk3adapter/gdki"
)
type #{ lower } struct {
*gdk.#{ tp }
}
func #{prefix1}rap#{ tp }(v *gdk.#{ tp }, e error) (*#{ lower }, error) {
if v == nil {
return nil, e
}
return &#{ lower }{v}, e
}
func #{prefix2}nwrap#{ tp }(v gdki.#{ tp }) *gdk.#{ tp } {
if v == nil {
return nil
}
return v.(*#{ lower }).#{ tp }
}
METH
end
end
|