SWIG function problem

F

Fla As

Hello,
I have following Ruby code:
class Random
def initialize(init, im=139968, ia=3877, ic=29573)
@last = init
@im = im
@ia = ia
@ic = ic
end
def next(max)
(max * (@last = (@last * @ia + @ic) % @im)) / @im
end
end

v = Random.new(42.0)
10.times do
puts v.next(1.0)
end

And I try to write the next-function in c
float gen_random(int *last, float max, int IM, int IA, int IC) {
*last = (*last * IA + IC) % IM;
return (max * *last / (float)IM);
}
and with help SWIG I try make useable in Ruby but I can not.

require 'fastac'
...
def next(max)
# (max * (@last = (@last * @ia + @ic) % @im)) / @im
Fastac.gen_random(@last, max, @im, @ia, @ic)
end
...


$ ruby gen_random.rb
gen_random.rb:12:in `gen_random': Expected argument 0 of type int *, but
got Fixnum 42 (TypeError)
in SWIG method 'gen_random' from gen_random.rb:12:in `next'
from gen_random.rb:18
from gen_random.rb:17:in `times'
from gen_random.rb:17
[/code]

What I make wrong?

best regards
 
J

Jano Svitok

And I try to write the next-function in c
float gen_random(int *last, float max, int IM, int IA, int IC) {
*last = (*last * IA + IC) % IM;
return (max * *last / (float)IM);
}
and with help SWIG I try make useable in Ruby but I can not.

See http://www.swig.org/Doc1.3/Ruby.html#Ruby_nn32
(you can reuse your original header if you #ifdef swig directives, see
swig doc for more info).

If that doesn't help, please post somewhere your code, including ruby,
c, and swig header. It would make reproducing your problem easier.

J.
 
F

Fla As

Your link doesn't help. My little code is atteched.

Can you please remove my email address from your last message?


Jano said:
See http://www.swig.org/Doc1.3/Ruby.html#Ruby_nn32
(you can reuse your original header if you #ifdef swig directives, see
swig doc for more info).

If that doesn't help, please post somewhere your code, including ruby,
c, and swig header. It would make reproducing your problem easier.

J.


Attachments:
http://www.ruby-forum.com/attachment/1183/swig.tar.bz2
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,161
Messages
2,570,891
Members
47,423
Latest member
henerygril

Latest Threads

Top