Help for upgrading my sources from ruby 1.6.8 to 1.8.x

B

Burkhard Boerner

Hello,

1. question:
in 1.6.8 the line

rb_protect(rb_thread_stop, self, &iRes);

is working well, in 1.8.2 it produces an compile error.

Looking into "intern.h" shows a difference between both versions
1.6.8:
VALUE rb_protect _((VALUE (*)(), VALUE, int*));
VALUE rb_thread_stop _((void));

1.8.2:
VALUE rb_protect _((VALUE (*)(VALUE), VALUE, int*));
VALUE rb_thread_stop _((void));

Is this a bug or is it not longer allowed to give rb_thread_stop as
first parameter?

2. question:
Because we are developing for railway organizations, we have a
track-element called "Signal". Therefore we have also created a
corresponding class Signal (using it a long time and in many
applications). This is in conflict with ruby 1.8.
Do we have any chance to omit the change of the class name to be
compliant with 1.8?

With kind regards

Burkhard Boerner

--
+-------V-------+ Burkhard Boerner *** TB/AEZ ***
+ A L C A T E L + Transport Automation Systems Berlin
+---------------+ D-12099 Berlin, Colditzstr. 34-36
TELECOM Phone: +49 30 7002 3269 / Fax: 3851
mailto:[email protected]
 
N

nobu

Hi,

At Thu, 19 Jan 2006 19:55:49 +0900,
Burkhard Boerner wrote in [ruby-talk:176150]:
1. question:
in 1.6.8 the line

rb_protect(rb_thread_stop, self, &iRes);

is working well, in 1.8.2 it produces an compile error.

It should be a warning in C.
Looking into "intern.h" shows a difference between both versions
1.6.8:
VALUE rb_protect _((VALUE (*)(), VALUE, int*));
VALUE rb_thread_stop _((void));

1.8.2:
VALUE rb_protect _((VALUE (*)(VALUE), VALUE, int*));
VALUE rb_thread_stop _((void));

Is this a bug or is it not longer allowed to give rb_thread_stop as
first parameter?

You just need a cast.
2. question:
Because we are developing for railway organizations, we have a
track-element called "Signal". Therefore we have also created a
corresponding class Signal (using it a long time and in many
applications). This is in conflict with ruby 1.8.
Do we have any chance to omit the change of the class name to be
compliant with 1.8?

module Railway
class Signal
end
end
 
S

Stefan Mahlitz

module Railway
class Signal
end
end

But code using

Signal::SomeConstant

will have to be changed to

Railway::Signal::SomeConstant

module Railway
class Signal
SomeConstant = "FOO"
end
end

p Railway::Signal::SomeConstant # prints "FOO"

include Railway

p Signal::SomeConstant
# raises a name error NameError: uninitialized constant
# Signal::SomeConstant

One can do

module Signal
SomeConstant = Railway::Signal::SomeConstant
end
 

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
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top