rupy 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1,21 +1,21 @@
1
- require 'rake'
2
- require 'rspec/rake/spectask'
3
- require 'yard'
4
-
5
- desc "Run all examples"
6
- Spec::Rake::SpecTask.new('spec') do |t|
7
- t.spec_files = FileList['spec/**/*_spec.rb']
8
- end
9
-
10
- desc "Run all examples with RCov"
11
- Spec::Rake::SpecTask.new('spec:rcov') do |t|
12
- t.spec_files = FileList['spec/**/*.rb']
13
- t.rcov = true
14
- t.rcov_opts = ['--exclude', 'spec']
15
- end
16
-
17
- YARD::Rake::YardocTask.new do |t|
18
- t.options = [ '--markup','markdown', '--title', 'RubyPython Documentation' ]
19
- end
20
-
21
- Dir['tasks/**/*.rake'].each { |rake| load rake }
1
+ require 'rake'
2
+ require 'rspec/rake/spectask'
3
+ require 'yard'
4
+
5
+ desc "Run all examples"
6
+ Spec::Rake::SpecTask.new('spec') do |t|
7
+ t.spec_files = FileList['spec/**/*_spec.rb']
8
+ end
9
+
10
+ desc "Run all examples with RCov"
11
+ Spec::Rake::SpecTask.new('spec:rcov') do |t|
12
+ t.spec_files = FileList['spec/**/*.rb']
13
+ t.rcov = true
14
+ t.rcov_opts = ['--exclude', 'spec']
15
+ end
16
+
17
+ YARD::Rake::YardocTask.new do |t|
18
+ t.options = [ '--markup','markdown', '--title', 'RubyPython Documentation' ]
19
+ end
20
+
21
+ Dir['tasks/**/*.rake'].each { |rake| load rake }
@@ -172,7 +172,12 @@ module Rupy
172
172
 
173
173
  def self.rtopFunction(rObj)
174
174
  proc = FFI::Function.new(:pointer, [:pointer, :pointer]) do |p_self, p_args|
175
- PyObject.new(rObj.call(*ptorTuple(p_args))).pointer
175
+ retval = rObj.call(*ptorTuple(p_args))
176
+ pObject = retval.is_a?(RubyPyProxy) ? retval.pObject : PyObject.new(retval)
177
+
178
+ # make sure the refcount is >1 when pObject is destroyed
179
+ pObject.xIncref
180
+ pObject.pointer
176
181
  end
177
182
 
178
183
  defn = Python::PyMethodDef.new
@@ -184,11 +189,6 @@ module Rupy
184
189
  return Python.PyCFunction_New(defn, nil)
185
190
  end
186
191
 
187
- def self.rtopGenerator(rObj)
188
-
189
- end
190
-
191
-
192
192
  #Converts a pointer to a Python object into a native ruby type, if
193
193
  #possible. Otherwise raises an error.
194
194
  #@param [FFI::Pointer] pObj a pointer to a Python object
@@ -38,13 +38,16 @@ def rupy_generator(callback):
38
38
  end
39
39
 
40
40
  def generator
41
- fib = Fiber.new do
42
- yield
43
- Python.PyErr_SetNone(Python.PyExc_StopIteration)
44
- FFI::Pointer::NULL
41
+ return lambda do |*args|
42
+ fib = Fiber.new do
43
+ yield *args
44
+ Python.PyErr_SetNone(Python.PyExc_StopIteration)
45
+ FFI::Pointer::NULL
46
+ end
47
+ generator_type.__call__(lambda do
48
+ fib.resume
49
+ end)
45
50
  end
46
-
47
- return lambda { generator_type.__call__(lambda { fib.resume }).pObject.pointer }
48
51
  end
49
52
 
50
53
  def yield(*args)
@@ -3,7 +3,7 @@ module Rupy
3
3
  module VERSION
4
4
  MAJOR = 0
5
5
  MINOR = 4
6
- TINY = 1
6
+ TINY = 2
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
9
9
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 4
8
- - 1
9
- version: 0.4.1
8
+ - 2
9
+ version: 0.4.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Steeve Morin
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-01-10 00:00:00 +01:00
17
+ date: 2011-01-11 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency