rubber-generate 0.0.13 → 0.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/rubber-generate +1 -0
- data/lib/rubber/codegen/genum.rb +13 -5
- data/lib/rubber/mkextconf.rb +21 -4
- data/lib/rubber/scanner.rb +10 -7
- metadata +22 -24
data/bin/rubber-generate
CHANGED
data/lib/rubber/codegen/genum.rb
CHANGED
@@ -3,6 +3,7 @@ require 'rubber/codegen/enum'
|
|
3
3
|
module Rubber
|
4
4
|
|
5
5
|
class C_GEnum < C_Enum
|
6
|
+
attr_accessor :define_on_self
|
6
7
|
define_members :name, :g_type, :prefix, :parent
|
7
8
|
def init()
|
8
9
|
($custom_maps[name] ||= {})["VALUE"] = "GENUM2RVAL(%%, #{g_type})"
|
@@ -11,12 +12,14 @@ class C_GEnum < C_Enum
|
|
11
12
|
def code(io)
|
12
13
|
end
|
13
14
|
def declare(io)
|
15
|
+
io.puts " VALUE #{cname} = Qnil;"
|
14
16
|
end
|
15
17
|
include RegisterChildren
|
16
18
|
def default_cname
|
17
|
-
"
|
19
|
+
"genum"+name
|
18
20
|
end
|
19
|
-
def get_root(); is_root? ? self : parent.get_root; end;
|
21
|
+
def get_root(); is_root? ? self : parent.get_root; end;
|
22
|
+
def is_root?()
|
20
23
|
not parent.respond_to?(:fullname)
|
21
24
|
end
|
22
25
|
def doc_rd(io)
|
@@ -24,9 +27,14 @@ class C_GEnum < C_Enum
|
|
24
27
|
io.puts "=#{'=' * depth} enum #{fullname}"
|
25
28
|
end
|
26
29
|
def register(io, already_defined=false)
|
27
|
-
io.puts " G_DEF_CLASS(#{g_type}, #{name.inspect}, #{get_root.cname});"
|
28
|
-
|
29
|
-
#
|
30
|
+
io.puts " #{cname} = G_DEF_CLASS(#{g_type}, #{name.inspect}, #{get_root.cname});"
|
31
|
+
if @define_on_self
|
32
|
+
io.puts " G_DEF_CONSTANTS(#{cname}, #{g_type}, #{prefix.inspect});"
|
33
|
+
else
|
34
|
+
io.puts " G_DEF_CONSTANTS(#{parent.cname}, #{g_type}, #{prefix.inspect});"
|
35
|
+
end
|
36
|
+
#io.puts " G_DEF_CONSTANTS(#{cname}, #{g_type}, #{prefix.inspect});"
|
37
|
+
# strip = args.first.length - splits.first.length
|
30
38
|
end
|
31
39
|
end
|
32
40
|
|
data/lib/rubber/mkextconf.rb
CHANGED
@@ -1,9 +1,27 @@
|
|
1
1
|
|
2
2
|
module Rubber
|
3
3
|
def generate_extconf(scanner, io)
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
io << <<-EOMK
|
5
|
+
require 'mkmf'
|
6
|
+
|
7
|
+
begin
|
8
|
+
require 'mkmf-gnome2'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rubygems'
|
11
|
+
gem 'glib2'
|
12
|
+
require 'mkmf-gnome2'
|
13
|
+
%w[rbglib.h rbgtk.h rbpango.h rbatk.h].each do |header|
|
14
|
+
Gem.find_files(header).each do |f|
|
15
|
+
$CFLAGS += " '-I\#{File.dirname(f)}'"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
have_func("rb_errinfo")
|
21
|
+
EOMK
|
22
|
+
|
23
|
+
#io.puts "require 'mkmf'"
|
24
|
+
#io.puts "require 'mkmf-gnome2'" if scanner.pkgs
|
7
25
|
#io.puts "$defs ||= []"
|
8
26
|
|
9
27
|
if scanner.inc_dirs
|
@@ -89,7 +107,6 @@ rescue Interrupt
|
|
89
107
|
end
|
90
108
|
|
91
109
|
EOB
|
92
|
-
end
|
93
110
|
end
|
94
111
|
module_function :generate_extconf
|
95
112
|
end
|
data/lib/rubber/scanner.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'rubber/struct'
|
2
2
|
module Rubber
|
3
|
-
VERSION = [0,0,
|
3
|
+
VERSION = [0,0,15]
|
4
4
|
def VERSION.to_s
|
5
5
|
self.map{|i|i.to_s}.join('.')
|
6
6
|
end
|
@@ -269,14 +269,17 @@ def _scan(fp)
|
|
269
269
|
@str.skip(/\s+/)
|
270
270
|
g_type = @str.scan(/[A-Z][_0-9A-Z]*/)
|
271
271
|
@str.skip(/\s+/)
|
272
|
-
prefix = @str.scan(/[A-Z][_0-9A-Z]*/)
|
272
|
+
prefix = @str.scan(/(prefix=)?[A-Z][_0-9A-Z]*/i).to_s.sub(/^prefix=/i,'')
|
273
|
+
@str.skip(/\s*/)
|
274
|
+
define_on_self = @str.scan(/define_on_self/)
|
273
275
|
@str.skip(/\s*;/)
|
274
276
|
if what == "gflags"
|
275
|
-
|
277
|
+
obj = C_GFlags.new(name, g_type, prefix, stack.last)
|
276
278
|
else
|
277
|
-
|
278
|
-
|
279
|
-
|
279
|
+
obj = C_GEnum.new(name, g_type, prefix, stack.last)
|
280
|
+
obj.define_on_self = !! define_on_self;
|
281
|
+
end
|
282
|
+
stack.last.classes.push(obj)
|
280
283
|
elsif state.in_func == false and @str.skip(/(gobject|ginterface|gboxed)(?= )/x) # Class defn
|
281
284
|
type=@str[1]
|
282
285
|
@str.skip(/\s+/)
|
@@ -373,7 +376,7 @@ def _scan(fp)
|
|
373
376
|
@class.post_func= @str[1] if @class.respond_to?(:post_func)
|
374
377
|
elsif @str.skip(/def(?=\s+)/x) # Function defn
|
375
378
|
@str.skip(/\s+/)
|
376
|
-
if @str.scan(/([a-zA-Z_* ]+):/)
|
379
|
+
if @str.scan(/([a-zA-Z_* 0-9]+):/)
|
377
380
|
returntype = @str[1]
|
378
381
|
elsif @str.skip(/(GS?List)[{]([^}]+)[}]:/)
|
379
382
|
container = @str[1]
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubber-generate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 1
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 15
|
10
|
+
version: 0.0.15
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Geoff Youngs
|
@@ -15,8 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-10-18 00:00:00 Z
|
20
19
|
dependencies: []
|
21
20
|
|
22
21
|
description: " rubber-c-binder allows a rubyish means of generating bindings for C libraries,\n including (but not limited to) GObject based libraries.\n\n It allows C code to be written in the context of a ruby style class/method layout\n and eases type checking and conversion between Ruby & C datatypes.\n"
|
@@ -29,32 +28,31 @@ extra_rdoc_files:
|
|
29
28
|
- README.textile
|
30
29
|
files:
|
31
30
|
- bin/rubber-generate
|
32
|
-
- lib/rubber/
|
33
|
-
- lib/rubber/codegen/
|
34
|
-
- lib/rubber/codegen/gobject.rb
|
35
|
-
- lib/rubber/codegen/gcrefpool.rb
|
36
|
-
- lib/rubber/codegen/class.rb
|
31
|
+
- lib/rubber/codegen/param.rb
|
32
|
+
- lib/rubber/codegen/ginterface.rb
|
37
33
|
- lib/rubber/codegen/genum.rb
|
38
|
-
- lib/rubber/codegen/gboxed.rb
|
39
|
-
- lib/rubber/codegen/function.rb
|
40
|
-
- lib/rubber/codegen/module.rb
|
41
|
-
- lib/rubber/codegen/float.rb
|
42
|
-
- lib/rubber/codegen/flags.rb
|
43
|
-
- lib/rubber/codegen/array.rb
|
44
34
|
- lib/rubber/codegen/gflags.rb
|
45
|
-
- lib/rubber/codegen/
|
35
|
+
- lib/rubber/codegen/flags.rb
|
46
36
|
- lib/rubber/codegen/string.rb
|
47
|
-
- lib/rubber/codegen/
|
48
|
-
- lib/rubber/codegen/
|
37
|
+
- lib/rubber/codegen/struct.rb
|
38
|
+
- lib/rubber/codegen/module.rb
|
39
|
+
- lib/rubber/codegen/gcrefpool.rb
|
40
|
+
- lib/rubber/codegen/function.rb
|
41
|
+
- lib/rubber/codegen/gboxed.rb
|
49
42
|
- lib/rubber/codegen/integer.rb
|
43
|
+
- lib/rubber/codegen/gobject.rb
|
44
|
+
- lib/rubber/codegen/class.rb
|
45
|
+
- lib/rubber/codegen/enum.rb
|
46
|
+
- lib/rubber/codegen/array.rb
|
47
|
+
- lib/rubber/codegen/float.rb
|
50
48
|
- lib/rubber/autord.rb
|
51
|
-
- lib/rubber/types.rb
|
52
|
-
- lib/rubber/codegen.rb
|
53
49
|
- lib/rubber/struct.rb
|
50
|
+
- lib/rubber/mkextconf.rb
|
51
|
+
- lib/rubber/codegen.rb
|
52
|
+
- lib/rubber/types.rb
|
54
53
|
- lib/rubber/scanner.rb
|
55
54
|
- README.textile
|
56
55
|
- example/vte.cr
|
57
|
-
has_rdoc: true
|
58
56
|
homepage: http://github.com/geoffyoungs/rubber-generate
|
59
57
|
licenses: []
|
60
58
|
|
@@ -84,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
82
|
requirements: []
|
85
83
|
|
86
84
|
rubyforge_project:
|
87
|
-
rubygems_version: 1.
|
85
|
+
rubygems_version: 1.8.10
|
88
86
|
signing_key:
|
89
87
|
specification_version: 3
|
90
88
|
summary: Template language for generating Ruby bindings for C libraries
|