Fix FTBS on ruby 1.9.x

Thanks to Darrell Anderson for the majority of the patch!
pull/1/head
Timothy Pearson 12 years ago
parent 46659f992d
commit ef7a60860d

@ -1,4 +1,4 @@
INCLUDES = $(all_includes) -I$(RUBY_ARCHDIR) INCLUDES = $(all_includes) -I$(RUBY_ARCHDIR) $(RUBY_CFLAGS)
bin_PROGRAMS = krubyinit bin_PROGRAMS = krubyinit
krubyinit_LDFLAGS = -module $(all_libraries) -version-info 0:0:0 -L$(top_srcdir)/smoke/kde/ -L$(RUBY_LIBDIR) -lkmdi -lknewstuff krubyinit_LDFLAGS = -module $(all_libraries) -version-info 0:0:0 -L$(top_srcdir)/smoke/kde/ -L$(RUBY_LIBDIR) -lkmdi -lknewstuff

@ -1,5 +1,13 @@
#include <ruby.h> #include <ruby.h>
#include "config.h"
#ifndef HAVE_RUBY_1_9
#define RARRAY_LEN(x) (RARRAY(x)->len)
#define RSTRING_LEN(x) (RSTRING(x)->len)
#define rb_str_catf_1 rb_str_catf
#endif
/*************************************************************************** /***************************************************************************
krubyinit - makes use of tdeinit_wrapper possible for ruby programs krubyinit - makes use of tdeinit_wrapper possible for ruby programs
------------------- -------------------
@ -24,6 +32,6 @@ static const char* script_name = "krubyinit_app";
int main(int argc, char **argv) { int main(int argc, char **argv) {
ruby_init(); ruby_init();
ruby_script((char*)script_name); ruby_script((char*)script_name);
ruby_options(argc, argv); void* node = ruby_options(argc, argv);
ruby_run(); ruby_run_node(node);
} }

@ -40,6 +40,14 @@
#include <smokeruby.h> #include <smokeruby.h>
#include <smoke.h> #include <smoke.h>
#include "config.h"
#ifndef HAVE_RUBY_1_9
#define RARRAY_LEN(x) (RARRAY(x)->len)
#define RSTRING_LEN(x) (RSTRING(x)->len)
#define rb_str_catf_1 rb_str_catf
#endif
extern "C" { extern "C" {
extern VALUE qt_internal_module; extern VALUE qt_internal_module;
extern VALUE kconfigskeleton_class; extern VALUE kconfigskeleton_class;
@ -805,7 +813,7 @@ public:
// isn't in the Smoke runtime // isn't in the Smoke runtime
TQValueList<DCOPRef> windowList; TQValueList<DCOPRef> windowList;
for (long i = 0; i < RARRAY(result)->len; i++) { for (long i = 0; i < RARRAY_LEN(result); i++) {
VALUE item = rb_ary_entry(result, i); VALUE item = rb_ary_entry(result, i);
smokeruby_object *o = value_obj_info(item); smokeruby_object *o = value_obj_info(item);
if( !o || !o->ptr) if( !o || !o->ptr)
@ -822,7 +830,7 @@ public:
// And special case this type too // And special case this type too
TQValueList<TQCString> propertyList; TQValueList<TQCString> propertyList;
for (long i = 0; i < RARRAY(result)->len; i++) { for (long i = 0; i < RARRAY_LEN(result); i++) {
VALUE item = rb_ary_entry(result, i); VALUE item = rb_ary_entry(result, i);
propertyList.append(TQCString(StringValuePtr(item))); propertyList.append(TQCString(StringValuePtr(item)));
} }
@ -836,7 +844,7 @@ public:
// Convert the ruby hash to an array of key/value arrays // Convert the ruby hash to an array of key/value arrays
VALUE temp = rb_funcall(result, rb_intern("to_a"), 0); VALUE temp = rb_funcall(result, rb_intern("to_a"), 0);
for (long i = 0; i < RARRAY(temp)->len; i++) { for (long i = 0; i < RARRAY_LEN(temp); i++) {
VALUE action = rb_ary_entry(rb_ary_entry(temp, i), 0); VALUE action = rb_ary_entry(rb_ary_entry(temp, i), 0);
VALUE item = rb_ary_entry(rb_ary_entry(temp, i), 1); VALUE item = rb_ary_entry(rb_ary_entry(temp, i), 1);
@ -926,7 +934,7 @@ k_dcop_signal(int argc, VALUE * argv, VALUE self)
{ {
VALUE dcopObject = rb_funcall(kde_module, rb_intern("createDCOPObject"), 1, self); VALUE dcopObject = rb_funcall(kde_module, rb_intern("createDCOPObject"), 1, self);
TQString signalname(rb_id2name(rb_frame_last_func())); TQString signalname(rb_id2name(rb_frame_this_func()));
VALUE args = getdcopinfo(self, signalname); VALUE args = getdcopinfo(self, signalname);
if(args == Qnil) return Qfalse; if(args == Qnil) return Qfalse;
@ -1020,7 +1028,7 @@ new_kde(int argc, VALUE * argv, VALUE klass)
if (rb_funcall(kde_module, rb_intern("hasDCOPSignals"), 1, klass) == Qtrue) { if (rb_funcall(kde_module, rb_intern("hasDCOPSignals"), 1, klass) == Qtrue) {
VALUE signalNames = rb_funcall(kde_module, rb_intern("getDCOPSignalNames"), 1, klass); VALUE signalNames = rb_funcall(kde_module, rb_intern("getDCOPSignalNames"), 1, klass);
for (long index = 0; index < RARRAY(signalNames)->len; index++) { for (long index = 0; index < RARRAY_LEN(signalNames); index++) {
VALUE signal = rb_ary_entry(signalNames, index); VALUE signal = rb_ary_entry(signalNames, index);
rb_define_method(klass, StringValuePtr(signal), (VALUE (*) (...)) k_dcop_signal, -1); rb_define_method(klass, StringValuePtr(signal), (VALUE (*) (...)) k_dcop_signal, -1);
} }
@ -1088,9 +1096,9 @@ konsole_part_startprogram(VALUE self, VALUE value_program, VALUE value_args)
TQStrList *args = new TQStrList; TQStrList *args = new TQStrList;
if (value_args != Qnil) { if (value_args != Qnil) {
for (long i = 0; i < RARRAY(value_args)->len; i++) { for (long i = 0; i < RARRAY_LEN(value_args); i++) {
VALUE item = rb_ary_entry(value_args, i); VALUE item = rb_ary_entry(value_args, i);
args->append(TQString::fromLatin1(StringValuePtr(item), RSTRING(item)->len)); args->append(TQString::fromLatin1(StringValuePtr(item), RSTRING_LEN(item)));
} }
} }

@ -52,6 +52,14 @@
#include <dom/dom_string.h> #include <dom/dom_string.h>
#include <dom/html_element.h> #include <dom/html_element.h>
#include "config.h"
#ifndef HAVE_RUBY_1_9
#define RARRAY_LEN(x) (RARRAY(x)->len)
#define RSTRING_LEN(x) (RSTRING(x)->len)
#define rb_str_catf_1 rb_str_catf
#endif
extern "C" { extern "C" {
extern VALUE set_obj_info(const char * className, smokeruby_object * o); extern VALUE set_obj_info(const char * className, smokeruby_object * o);
}; };
@ -122,7 +130,7 @@ void marshall_TQCStringList(Marshall *m) {
break; break;
} }
int count = RARRAY(list)->len; int count = RARRAY_LEN(list);
QCStringList *stringlist = new QCStringList; QCStringList *stringlist = new QCStringList;
for(long i = 0; i < count; i++) { for(long i = 0; i < count; i++) {
@ -131,7 +139,7 @@ void marshall_TQCStringList(Marshall *m) {
stringlist->append(TQCString()); stringlist->append(TQCString());
continue; continue;
} }
stringlist->append(TQCString(StringValuePtr(item), RSTRING(item)->len + 1)); stringlist->append(TQCString(StringValuePtr(item), RSTRING_LEN(item) + 1));
} }
m->item().s_voidp = stringlist; m->item().s_voidp = stringlist;
@ -184,19 +192,19 @@ void marshall_KCmdLineOptions(Marshall *m) {
VALUE optionslist = *(m->var()); VALUE optionslist = *(m->var());
if (optionslist == Qnil if (optionslist == Qnil
|| TYPE(optionslist) != T_ARRAY || TYPE(optionslist) != T_ARRAY
|| RARRAY(optionslist)->len == 0 ) || RARRAY_LEN(optionslist) == 0 )
{ {
m->item().s_voidp = 0; m->item().s_voidp = 0;
break; break;
} }
// Allocate 'length + 1' entries, to include an all NULLs last entry // Allocate 'length + 1' entries, to include an all NULLs last entry
KCmdLineOptions *cmdLineOptions = (KCmdLineOptions *) calloc( RARRAY(optionslist)->len + 1, KCmdLineOptions *cmdLineOptions = (KCmdLineOptions *) calloc( RARRAY_LEN(optionslist) + 1,
sizeof(struct KCmdLineOptions) ); sizeof(struct KCmdLineOptions) );
VALUE options; VALUE options;
long i; long i;
for(i = 0; i < RARRAY(optionslist)->len; i++) { for(i = 0; i < RARRAY_LEN(optionslist); i++) {
options = rb_ary_entry(optionslist, i); options = rb_ary_entry(optionslist, i);
VALUE temp = rb_ary_entry(options, 0); VALUE temp = rb_ary_entry(options, 0);
cmdLineOptions[i].name = StringValuePtr(temp); cmdLineOptions[i].name = StringValuePtr(temp);
@ -244,7 +252,7 @@ void marshall_WIdList(Marshall *m) {
m->item().s_voidp = 0; m->item().s_voidp = 0;
break; break;
} }
int count = RARRAY(list)->len; int count = RARRAY_LEN(list);
TQValueList<WId> *valuelist = new TQValueList<WId>; TQValueList<WId> *valuelist = new TQValueList<WId>;
long i; long i;
for(i = 0; i < count; i++) { for(i = 0; i < count; i++) {
@ -815,7 +823,7 @@ void marshall_KURLList(Marshall *m) {
m->item().s_voidp = 0; m->item().s_voidp = 0;
break; break;
} }
int count = RARRAY(list)->len; int count = RARRAY_LEN(list);
KURL::List *kurllist = new KURL::List; KURL::List *kurllist = new KURL::List;
long i; long i;
for(i = 0; i < count; i++) { for(i = 0; i < count; i++) {
@ -916,11 +924,11 @@ void marshall_UDSEntryList(Marshall *m) {
KIO::UDSEntryList *cpplist = new KIO::UDSEntryList; KIO::UDSEntryList *cpplist = new KIO::UDSEntryList;
for(long i = 0; i < RARRAY(list)->len; i++) { for(long i = 0; i < RARRAY_LEN(list); i++) {
VALUE item = rb_ary_entry(list, i); VALUE item = rb_ary_entry(list, i);
KIO::UDSEntry *cppsublist = new KIO::UDSEntry; KIO::UDSEntry *cppsublist = new KIO::UDSEntry;
for (int j = 0; j < RARRAY(item)->len; j++) { for (int j = 0; j < RARRAY_LEN(item); j++) {
VALUE subitem = rb_ary_entry(item, j); VALUE subitem = rb_ary_entry(item, j);
smokeruby_object *o = value_obj_info(subitem); smokeruby_object *o = value_obj_info(subitem);
if(!o || !o->ptr) if(!o || !o->ptr)
@ -998,7 +1006,7 @@ void marshall_ItemList(Marshall *m) {
m->item().s_voidp = 0; m->item().s_voidp = 0;
break; break;
} }
int count = RARRAY(list)->len; int count = RARRAY_LEN(list);
ItemList *cpplist = new ItemList; ItemList *cpplist = new ItemList;
long i; long i;
for(i = 0; i < count; i++) { for(i = 0; i < count; i++) {
@ -1103,7 +1111,7 @@ void marshall_ValueItemList(Marshall *m) {
m->item().s_voidp = 0; m->item().s_voidp = 0;
break; break;
} }
int count = RARRAY(list)->len; int count = RARRAY_LEN(list);
ItemList *cpplist = new ItemList; ItemList *cpplist = new ItemList;
long i; long i;
for(i = 0; i < count; i++) { for(i = 0; i < count; i++) {
@ -1211,7 +1219,7 @@ void marshall_Map(Marshall *m) {
// Convert the ruby hash to an array of key/value arrays // Convert the ruby hash to an array of key/value arrays
VALUE temp = rb_funcall(hash, rb_intern("to_a"), 0); VALUE temp = rb_funcall(hash, rb_intern("to_a"), 0);
for (long i = 0; i < RARRAY(temp)->len; i++) { for (long i = 0; i < RARRAY_LEN(temp); i++) {
VALUE key = rb_ary_entry(rb_ary_entry(temp, i), 0); VALUE key = rb_ary_entry(rb_ary_entry(temp, i), 0);
VALUE value = rb_ary_entry(rb_ary_entry(temp, i), 1); VALUE value = rb_ary_entry(rb_ary_entry(temp, i), 1);
@ -1316,7 +1324,7 @@ void marshall_TQMapTQCStringDCOPRef(Marshall *m) {
// Convert the ruby hash to an array of key/value arrays // Convert the ruby hash to an array of key/value arrays
VALUE temp = rb_funcall(hash, rb_intern("to_a"), 0); VALUE temp = rb_funcall(hash, rb_intern("to_a"), 0);
for (long i = 0; i < RARRAY(temp)->len; i++) { for (long i = 0; i < RARRAY_LEN(temp); i++) {
VALUE key = rb_ary_entry(rb_ary_entry(temp, i), 0); VALUE key = rb_ary_entry(rb_ary_entry(temp, i), 0);
VALUE value = rb_ary_entry(rb_ary_entry(temp, i), 1); VALUE value = rb_ary_entry(rb_ary_entry(temp, i), 1);

@ -1,4 +1,4 @@
INCLUDES = $(all_includes) -I$(RUBY_ARCHDIR) INCLUDES = $(all_includes) -I$(RUBY_ARCHDIR) $(RUBY_CFLAGS)
bin_PROGRAMS = qtrubyinit bin_PROGRAMS = qtrubyinit
qtrubyinit_LDFLAGS = -module $(all_libraries) -version-info 0:0:0 -L$(top_srcdir)/smoke/qt/ -L$(RUBY_LIBDIR) qtrubyinit_LDFLAGS = -module $(all_libraries) -version-info 0:0:0 -L$(top_srcdir)/smoke/qt/ -L$(RUBY_LIBDIR)

@ -1,5 +1,13 @@
#include <ruby.h> #include <ruby.h>
#include "config.h"
#ifndef HAVE_RUBY_1_9
#define RARRAY_LEN(x) (RARRAY(x)->len)
#define RSTRING_LEN(x) (RSTRING(x)->len)
#define rb_str_catf_1 rb_str_catf
#endif
/*************************************************************************** /***************************************************************************
qrubyinit - makes use of tdeinit_wrapper possible for ruby programs qrubyinit - makes use of tdeinit_wrapper possible for ruby programs
------------------- -------------------
@ -24,6 +32,6 @@ static const char* script_name = "qrubyinit_app";
int main(int argc, char **argv) { int main(int argc, char **argv) {
ruby_init(); ruby_init();
ruby_script((char*)script_name); ruby_script((char*)script_name);
ruby_options(argc, argv); void* node = ruby_options(argc, argv);
ruby_run(); ruby_run_node(node);
} }

@ -1,4 +1,4 @@
INCLUDES = -I$(top_srcdir)/smoke -I$(top_srcdir)/qtruby/rubylib/qtruby $(all_includes) -I$(RUBY_ARCHDIR) INCLUDES = -I$(top_srcdir)/smoke -I$(top_srcdir)/qtruby/rubylib/qtruby $(all_includes) -I$(RUBY_ARCHDIR) $(RUBY_CFLAGS)
rubylibdir = $(RUBY_ARCHDIR) rubylibdir = $(RUBY_ARCHDIR)
rubylib_LTLIBRARIES = tqui.la rubylib_LTLIBRARIES = tqui.la

@ -60,6 +60,14 @@
#include "smokeruby.h" #include "smokeruby.h"
#include "smoke.h" #include "smoke.h"
#include "config.h"
#ifndef HAVE_RUBY_1_9
#define RARRAY_LEN(x) (RARRAY(x)->len)
#define RSTRING_LEN(x) (RSTRING(x)->len)
#define rb_str_catf_1 rb_str_catf
#endif
// #define DEBUG // #define DEBUG
#define TQTRUBY_VERSION "1.0.13" #define TQTRUBY_VERSION "1.0.13"
@ -110,7 +118,7 @@ bool application_terminated = false;
}; };
#define logger logger_backend #define logger logger_backend
void rb_str_catf(VALUE self, const char *format, ...) __attribute__ ((format (printf, 2, 3))); void rb_str_catf_1(VALUE self, const char *format, ...) __attribute__ ((format (printf, 2, 3)));
static VALUE (*_new_kde)(int, VALUE *, VALUE) = 0; static VALUE (*_new_kde)(int, VALUE *, VALUE) = 0;
static VALUE (*_kconfigskeletonitem_immutable)(VALUE) = 0; static VALUE (*_kconfigskeletonitem_immutable)(VALUE) = 0;
@ -820,7 +828,7 @@ public:
} }
}; };
void rb_str_catf(VALUE self, const char *format, ...) void rb_str_catf_1(VALUE self, const char *format, ...)
{ {
va_list ap; va_list ap;
va_start(ap, format); va_start(ap, format);
@ -985,16 +993,16 @@ VALUE prettyPrintMethod(Smoke::Index id)
VALUE r = rb_str_new2(""); VALUE r = rb_str_new2("");
Smoke::Method &meth = qt_Smoke->methods[id]; Smoke::Method &meth = qt_Smoke->methods[id];
const char *tname = qt_Smoke->types[meth.ret].name; const char *tname = qt_Smoke->types[meth.ret].name;
if(meth.flags & Smoke::mf_static) rb_str_catf(r, "static "); if(meth.flags & Smoke::mf_static) rb_str_catf_1(r, "static ");
rb_str_catf(r, "%s ", (tname ? tname:"void")); rb_str_catf_1(r, "%s ", (tname ? tname:"void"));
rb_str_catf(r, "%s::%s(", qt_Smoke->classes[meth.classId].className, qt_Smoke->methodNames[meth.name]); rb_str_catf_1(r, "%s::%s(", qt_Smoke->classes[meth.classId].className, qt_Smoke->methodNames[meth.name]);
for(int i = 0; i < meth.numArgs; i++) { for(int i = 0; i < meth.numArgs; i++) {
if(i) rb_str_catf(r, ", "); if(i) rb_str_catf_1(r, ", ");
tname = qt_Smoke->types[qt_Smoke->argumentList[meth.args+i]].name; tname = qt_Smoke->types[qt_Smoke->argumentList[meth.args+i]].name;
rb_str_catf(r, "%s", (tname ? tname:"void")); rb_str_catf_1(r, "%s", (tname ? tname:"void"));
} }
rb_str_catf(r, ")"); rb_str_catf_1(r, ")");
if(meth.flags & Smoke::mf_const) rb_str_catf(r, " const"); if(meth.flags & Smoke::mf_const) rb_str_catf_1(r, " const");
return r; return r;
} }
@ -1177,7 +1185,7 @@ inspect_qobject(VALUE self)
// Start with #<TQt::HBoxLayout:0x30139030> from the original inspect() call // Start with #<TQt::HBoxLayout:0x30139030> from the original inspect() call
// Drop the closing '>' // Drop the closing '>'
VALUE inspect_str = rb_call_super(0, 0); VALUE inspect_str = rb_call_super(0, 0);
rb_str_resize(inspect_str, RSTRING(inspect_str)->len - 1); rb_str_resize(inspect_str, RSTRING_LEN(inspect_str) - 1);
smokeruby_object * o = 0; smokeruby_object * o = 0;
Data_Get_Struct(self, smokeruby_object, o); Data_Get_Struct(self, smokeruby_object, o);
@ -1220,7 +1228,7 @@ pretty_print_qobject(VALUE self, VALUE pp)
// Start with #<TQt::HBoxLayout:0x30139030> // Start with #<TQt::HBoxLayout:0x30139030>
// Drop the closing '>' // Drop the closing '>'
VALUE inspect_str = rb_funcall(self, rb_intern("to_s"), 0, 0); VALUE inspect_str = rb_funcall(self, rb_intern("to_s"), 0, 0);
rb_str_resize(inspect_str, RSTRING(inspect_str)->len - 1); rb_str_resize(inspect_str, RSTRING_LEN(inspect_str) - 1);
rb_funcall(pp, rb_intern("text"), 1, inspect_str); rb_funcall(pp, rb_intern("text"), 1, inspect_str);
rb_funcall(pp, rb_intern("breakable"), 0); rb_funcall(pp, rb_intern("breakable"), 0);
@ -1236,7 +1244,7 @@ pretty_print_qobject(VALUE self, VALUE pp)
VALUE obj = getPointerObject(qobject->parent()); VALUE obj = getPointerObject(qobject->parent());
if (obj != Qnil) { if (obj != Qnil) {
VALUE parent_inspect_str = rb_funcall(obj, rb_intern("to_s"), 0, 0); VALUE parent_inspect_str = rb_funcall(obj, rb_intern("to_s"), 0, 0);
rb_str_resize(parent_inspect_str, RSTRING(parent_inspect_str)->len - 1); rb_str_resize(parent_inspect_str, RSTRING_LEN(parent_inspect_str) - 1);
parentInspectString = StringValuePtr(parent_inspect_str); parentInspectString = StringValuePtr(parent_inspect_str);
} else { } else {
parentInspectString.sprintf("#<%s:0x0", qobject->parent()->className()); parentInspectString.sprintf("#<%s:0x0", qobject->parent()->className());
@ -1382,7 +1390,7 @@ static Smoke::Index new_qvariant_qmap = 0;
return *(c.var()); return *(c.var());
} else if ( argc == 1 } else if ( argc == 1
&& TYPE(argv[0]) == T_ARRAY && TYPE(argv[0]) == T_ARRAY
&& RARRAY(argv[0])->len > 0 && RARRAY_LEN(argv[0]) > 0
&& TYPE(rb_ary_entry(argv[0], 0)) != T_STRING ) && TYPE(rb_ary_entry(argv[0], 0)) != T_STRING )
{ {
_current_method = new_qvariant_qlist; _current_method = new_qvariant_qlist;
@ -1741,7 +1749,7 @@ new_qapplication(int argc, VALUE * argv, VALUE klass)
VALUE * local_argv = (VALUE *) calloc(argc + 1, sizeof(VALUE)); VALUE * local_argv = (VALUE *) calloc(argc + 1, sizeof(VALUE));
VALUE temp = rb_ary_dup(argv[0]); VALUE temp = rb_ary_dup(argv[0]);
rb_ary_unshift(temp, rb_gv_get("$0")); rb_ary_unshift(temp, rb_gv_get("$0"));
local_argv[0] = INT2NUM(RARRAY(temp)->len); local_argv[0] = INT2NUM(RARRAY_LEN(temp));
local_argv[1] = temp; local_argv[1] = temp;
result = new_qt(2, local_argv, klass); result = new_qt(2, local_argv, klass);
free(local_argv); free(local_argv);
@ -1772,7 +1780,7 @@ qapplication_argv(VALUE /*self*/)
VALUE VALUE
getmetainfo(VALUE self, int &offset, int &index) getmetainfo(VALUE self, int &offset, int &index)
{ {
const char * signalname = rb_id2name(rb_frame_last_func()); const char * signalname = rb_id2name(rb_frame_this_func());
VALUE metaObject_value = rb_funcall(qt_internal_module, rb_intern("getMetaObject"), 1, self); VALUE metaObject_value = rb_funcall(qt_internal_module, rb_intern("getMetaObject"), 1, self);
smokeruby_object *ometa = value_obj_info(metaObject_value); smokeruby_object *ometa = value_obj_info(metaObject_value);
@ -1862,7 +1870,7 @@ tqt_invoke(int /*argc*/, VALUE * argv, VALUE self)
// Now, I need to find out if this means me // Now, I need to find out if this means me
int index; int index;
char *slotname; char *slotname;
bool isSignal = tqstrcmp(rb_id2name(rb_frame_last_func()), "qt_emit") == 0; bool isSignal = tqstrcmp(rb_id2name(rb_frame_this_func()), "qt_emit") == 0;
VALUE mocArgs = getslotinfo(self, id, slotname, index, isSignal); VALUE mocArgs = getslotinfo(self, id, slotname, index, isSignal);
if(mocArgs == Qnil) { if(mocArgs == Qnil) {
// No ruby slot/signal found, assume the target is a C++ one // No ruby slot/signal found, assume the target is a C++ one
@ -2009,7 +2017,7 @@ qbytearray_setRawData(VALUE self, VALUE data)
return Qnil; return Qnil;
} }
TQByteArray * dataArray = (TQByteArray*) o->ptr; TQByteArray * dataArray = (TQByteArray*) o->ptr;
dataArray->setRawData(StringValuePtr(data), RSTRING(data)->len); dataArray->setRawData(StringValuePtr(data), RSTRING_LEN(data));
return self; return self;
} }
@ -2195,7 +2203,7 @@ make_QUMethod(VALUE /*self*/, VALUE name_value, VALUE params)
m->name = new char[strlen(name) + 1]; // this too m->name = new char[strlen(name) + 1]; // this too
strcpy((char*)m->name, name); strcpy((char*)m->name, name);
m->parameters = 0; m->parameters = 0;
m->count = RARRAY(params)->len; m->count = RARRAY_LEN(params);
if (m->count > 0) { if (m->count > 0) {
m->parameters = new TQUParameter[m->count]; m->parameters = new TQUParameter[m->count];
@ -2213,7 +2221,7 @@ make_QUMethod(VALUE /*self*/, VALUE name_value, VALUE params)
static VALUE static VALUE
make_QMetaData_tbl(VALUE /*self*/, VALUE list) make_QMetaData_tbl(VALUE /*self*/, VALUE list)
{ {
long count = RARRAY(list)->len; long count = RARRAY_LEN(list);
TQMetaData *m = new TQMetaData[count]; TQMetaData *m = new TQMetaData[count];
for (long i = 0; i < count; i++) { for (long i = 0; i < count; i++) {
@ -2281,7 +2289,7 @@ add_metaobject_methods(VALUE self, VALUE klass)
static VALUE static VALUE
add_signal_methods(VALUE self, VALUE klass, VALUE signalNames) add_signal_methods(VALUE self, VALUE klass, VALUE signalNames)
{ {
for (long index = 0; index < RARRAY(signalNames)->len; index++) { for (long index = 0; index < RARRAY_LEN(signalNames); index++) {
VALUE signal = rb_ary_entry(signalNames, index); VALUE signal = rb_ary_entry(signalNames, index);
rb_define_method(klass, StringValuePtr(signal), (VALUE (*) (...)) qt_signal, -1); rb_define_method(klass, StringValuePtr(signal), (VALUE (*) (...)) qt_signal, -1);
} }
@ -2597,28 +2605,28 @@ dumpCandidates(VALUE /*self*/, VALUE rmeths)
{ {
VALUE errmsg = rb_str_new2(""); VALUE errmsg = rb_str_new2("");
if(rmeths != Qnil) { if(rmeths != Qnil) {
int count = RARRAY(rmeths)->len; int count = RARRAY_LEN(rmeths);
for(int i = 0; i < count; i++) { for(int i = 0; i < count; i++) {
rb_str_catf(errmsg, "\t"); rb_str_catf_1(errmsg, "\t");
int id = NUM2INT(rb_ary_entry(rmeths, i)); int id = NUM2INT(rb_ary_entry(rmeths, i));
Smoke::Method &meth = qt_Smoke->methods[id]; Smoke::Method &meth = qt_Smoke->methods[id];
const char *tname = qt_Smoke->types[meth.ret].name; const char *tname = qt_Smoke->types[meth.ret].name;
if(meth.flags & Smoke::mf_enum) { if(meth.flags & Smoke::mf_enum) {
rb_str_catf(errmsg, "enum "); rb_str_catf_1(errmsg, "enum ");
rb_str_catf(errmsg, "%s::%s", qt_Smoke->classes[meth.classId].className, qt_Smoke->methodNames[meth.name]); rb_str_catf_1(errmsg, "%s::%s", qt_Smoke->classes[meth.classId].className, qt_Smoke->methodNames[meth.name]);
rb_str_catf(errmsg, "\n"); rb_str_catf_1(errmsg, "\n");
} else { } else {
if(meth.flags & Smoke::mf_static) rb_str_catf(errmsg, "static "); if(meth.flags & Smoke::mf_static) rb_str_catf(errmsg, "static ");
rb_str_catf(errmsg, "%s ", (tname ? tname:"void")); rb_str_catf_1(errmsg, "%s ", (tname ? tname:"void"));
rb_str_catf(errmsg, "%s::%s(", qt_Smoke->classes[meth.classId].className, qt_Smoke->methodNames[meth.name]); rb_str_catf_1(errmsg, "%s::%s(", qt_Smoke->classes[meth.classId].className, qt_Smoke->methodNames[meth.name]);
for(int i = 0; i < meth.numArgs; i++) { for(int i = 0; i < meth.numArgs; i++) {
if(i) rb_str_catf(errmsg, ", "); if(i) rb_str_catf_1(errmsg, ", ");
tname = qt_Smoke->types[qt_Smoke->argumentList[meth.args+i]].name; tname = qt_Smoke->types[qt_Smoke->argumentList[meth.args+i]].name;
rb_str_catf(errmsg, "%s", (tname ? tname:"void")); rb_str_catf_1(errmsg, "%s", (tname ? tname:"void"));
} }
rb_str_catf(errmsg, ")"); rb_str_catf_1(errmsg, ")");
if(meth.flags & Smoke::mf_const) rb_str_catf(errmsg, " const"); if(meth.flags & Smoke::mf_const) rb_str_catf_1(errmsg, " const");
rb_str_catf(errmsg, "\n"); rb_str_catf_1(errmsg, "\n");
} }
} }
} }

@ -47,6 +47,14 @@
#define HINT_BYTES HINT_BYTE #define HINT_BYTES HINT_BYTE
#endif #endif
#include "config.h"
#ifndef HAVE_RUBY_1_9
#define RARRAY_LEN(x) (RARRAY(x)->len)
#define RSTRING_LEN(x) (RSTRING(x)->len)
#define rb_str_catf_1 rb_str_catf
#endif
extern "C" { extern "C" {
extern VALUE set_obj_info(const char * className, smokeruby_object * o); extern VALUE set_obj_info(const char * className, smokeruby_object * o);
extern VALUE qt_internal_module; extern VALUE qt_internal_module;
@ -755,7 +763,7 @@ static void marshall_charP(Marshall *m) {
break; break;
} }
int len = RSTRING(rv)->len; int len = RSTRING_LEN(rv);
char* mem = (char*) malloc(len+1); char* mem = (char*) malloc(len+1);
memcpy(mem, StringValuePtr(rv), len); memcpy(mem, StringValuePtr(rv), len);
mem[len] ='\0'; mem[len] ='\0';
@ -788,7 +796,7 @@ void marshall_ucharP(Marshall *m) {
m->item().s_voidp = 0; m->item().s_voidp = 0;
break; break;
} }
int len = RSTRING(rv)->len; int len = RSTRING_LEN(rv);
char* mem = (char*) malloc(len+1); char* mem = (char*) malloc(len+1);
memcpy(mem, StringValuePtr(rv), len); memcpy(mem, StringValuePtr(rv), len);
mem[len] ='\0'; mem[len] ='\0';
@ -824,7 +832,7 @@ qstringFromRString(VALUE rstring) {
TQString * s; TQString * s;
if (tqstrcmp(KCODE, "UTF8") == 0) if (tqstrcmp(KCODE, "UTF8") == 0)
s = new TQString(TQString::fromUtf8(StringValuePtr(rstring), RSTRING(rstring)->len)); s = new TQString(TQString::fromUtf8(StringValuePtr(rstring), RSTRING_LEN(rstring)));
else if (tqstrcmp(KCODE, "EUC") == 0) else if (tqstrcmp(KCODE, "EUC") == 0)
s = new TQString(codec->toUnicode(StringValuePtr(rstring))); s = new TQString(codec->toUnicode(StringValuePtr(rstring)));
else if (tqstrcmp(KCODE, "SJIS") == 0) else if (tqstrcmp(KCODE, "SJIS") == 0)
@ -832,7 +840,7 @@ qstringFromRString(VALUE rstring) {
else if(tqstrcmp(KCODE, "NONE") == 0) else if(tqstrcmp(KCODE, "NONE") == 0)
s = new TQString(TQString::fromLatin1(StringValuePtr(rstring))); s = new TQString(TQString::fromLatin1(StringValuePtr(rstring)));
else else
s = new TQString(TQString::fromLocal8Bit(StringValuePtr(rstring), RSTRING(rstring)->len)); s = new TQString(TQString::fromLocal8Bit(StringValuePtr(rstring), RSTRING_LEN(rstring)));
return s; return s;
} }
@ -944,7 +952,7 @@ static void marshall_TQCString(Marshall *m) {
s = new TQCString(); s = new TQCString();
} else { } else {
// Add 1 to the ruby string length to allow for a TQCString '\0' terminator // Add 1 to the ruby string length to allow for a TQCString '\0' terminator
s = new TQCString(StringValuePtr(*(m->var())), RSTRING(*(m->var()))->len + 1); s = new TQCString(StringValuePtr(*(m->var())), RSTRING_LEN(*(m->var())) + 1);
} }
m->item().s_voidp = s; m->item().s_voidp = s;
@ -1007,7 +1015,7 @@ static void marshall_TQCOORD_array(Marshall *m) {
m->item().s_voidp = 0; m->item().s_voidp = 0;
break; break;
} }
int count = RARRAY(av)->len; int count = RARRAY_LEN(av);
TQCOORD *coord = new TQCOORD[count + 2]; TQCOORD *coord = new TQCOORD[count + 2];
for(long i = 0; i < count; i++) { for(long i = 0; i < count; i++) {
VALUE svp = rb_ary_entry(av, i); VALUE svp = rb_ary_entry(av, i);
@ -1167,15 +1175,15 @@ static void marshall_charP_array(Marshall *m) {
VALUE arglist = *(m->var()); VALUE arglist = *(m->var());
if (arglist == Qnil if (arglist == Qnil
|| TYPE(arglist) != T_ARRAY || TYPE(arglist) != T_ARRAY
|| RARRAY(arglist)->len == 0 ) || RARRAY_LEN(arglist) == 0 )
{ {
m->item().s_voidp = 0; m->item().s_voidp = 0;
break; break;
} }
char **argv = new char *[RARRAY(arglist)->len + 1]; char **argv = new char *[RARRAY_LEN(arglist) + 1];
long i; long i;
for(i = 0; i < RARRAY(arglist)->len; i++) { for(i = 0; i < RARRAY_LEN(arglist); i++) {
VALUE item = rb_ary_entry(arglist, i); VALUE item = rb_ary_entry(arglist, i);
char *s = StringValuePtr(item); char *s = StringValuePtr(item);
argv[i] = new char[strlen(s) + 1]; argv[i] = new char[strlen(s) + 1];
@ -1207,7 +1215,7 @@ void marshall_TQStringList(Marshall *m) {
break; break;
} }
int count = RARRAY(list)->len; int count = RARRAY_LEN(list);
TQStringList *stringlist = new TQStringList; TQStringList *stringlist = new TQStringList;
for(long i = 0; i < count; i++) { for(long i = 0; i < count; i++) {
@ -1269,7 +1277,7 @@ void marshall_TQStrList(Marshall *m) {
break; break;
} }
int count = RARRAY(list)->len; int count = RARRAY_LEN(list);
TQStrList *stringlist = new TQStrList; TQStrList *stringlist = new TQStrList;
for(long i = 0; i < count; i++) { for(long i = 0; i < count; i++) {
@ -1278,7 +1286,7 @@ void marshall_TQStrList(Marshall *m) {
stringlist->append(TQString()); stringlist->append(TQString());
continue; continue;
} }
stringlist->append(TQString::fromUtf8(StringValuePtr(item), RSTRING(item)->len)); stringlist->append(TQString::fromUtf8(StringValuePtr(item), RSTRING_LEN(item)));
} }
m->item().s_voidp = stringlist; m->item().s_voidp = stringlist;
@ -1331,7 +1339,7 @@ void marshall_ItemList(Marshall *m) {
m->item().s_voidp = 0; m->item().s_voidp = 0;
break; break;
} }
int count = RARRAY(list)->len; int count = RARRAY_LEN(list);
ItemList *cpplist = new ItemList; ItemList *cpplist = new ItemList;
long i; long i;
for(i = 0; i < count; i++) { for(i = 0; i < count; i++) {
@ -1421,7 +1429,7 @@ void marshall_TQValueListInt(Marshall *m) {
m->item().s_voidp = 0; m->item().s_voidp = 0;
break; break;
} }
int count = RARRAY(list)->len; int count = RARRAY_LEN(list);
TQValueList<int> *valuelist = new TQValueList<int>; TQValueList<int> *valuelist = new TQValueList<int>;
long i; long i;
for(i = 0; i < count; i++) { for(i = 0; i < count; i++) {
@ -1513,7 +1521,7 @@ void marshall_TQMapTQStringTQString(Marshall *m) {
// Convert the ruby hash to an array of key/value arrays // Convert the ruby hash to an array of key/value arrays
VALUE temp = rb_funcall(hash, rb_intern("to_a"), 0); VALUE temp = rb_funcall(hash, rb_intern("to_a"), 0);
for (long i = 0; i < RARRAY(temp)->len; i++) { for (long i = 0; i < RARRAY_LEN(temp); i++) {
VALUE key = rb_ary_entry(rb_ary_entry(temp, i), 0); VALUE key = rb_ary_entry(rb_ary_entry(temp, i), 0);
VALUE value = rb_ary_entry(rb_ary_entry(temp, i), 1); VALUE value = rb_ary_entry(rb_ary_entry(temp, i), 1);
(*map)[TQString(StringValuePtr(key))] = TQString(StringValuePtr(value)); (*map)[TQString(StringValuePtr(key))] = TQString(StringValuePtr(value));
@ -1569,7 +1577,7 @@ void marshall_TQMapTQStringTQVariant(Marshall *m) {
// Convert the ruby hash to an array of key/value arrays // Convert the ruby hash to an array of key/value arrays
VALUE temp = rb_funcall(hash, rb_intern("to_a"), 0); VALUE temp = rb_funcall(hash, rb_intern("to_a"), 0);
for (long i = 0; i < RARRAY(temp)->len; i++) { for (long i = 0; i < RARRAY_LEN(temp); i++) {
VALUE key = rb_ary_entry(rb_ary_entry(temp, i), 0); VALUE key = rb_ary_entry(rb_ary_entry(temp, i), 0);
VALUE value = rb_ary_entry(rb_ary_entry(temp, i), 1); VALUE value = rb_ary_entry(rb_ary_entry(temp, i), 1);
@ -1673,7 +1681,7 @@ void marshall_TQRgb_array(Marshall *m) {
m->item().s_voidp = 0; m->item().s_voidp = 0;
break; break;
} }
int count = RARRAY(list)->len; int count = RARRAY_LEN(list);
TQRgb *rgb = new TQRgb[count + 2]; TQRgb *rgb = new TQRgb[count + 2];
long i; long i;
for(i = 0; i < count; i++) { for(i = 0; i < count; i++) {
@ -1702,7 +1710,7 @@ void marshall_TQPairintint(Marshall *m) {
case Marshall::FromVALUE: case Marshall::FromVALUE:
{ {
VALUE list = *(m->var()); VALUE list = *(m->var());
if (TYPE(list) != T_ARRAY || RARRAY(list)->len != 2) { if (TYPE(list) != T_ARRAY || RARRAY_LEN(list) != 2) {
m->item().s_voidp = 0; m->item().s_voidp = 0;
break; break;
} }
@ -1770,7 +1778,7 @@ void marshall_ValueItemList(Marshall *m) {
m->item().s_voidp = 0; m->item().s_voidp = 0;
break; break;
} }
int count = RARRAY(list)->len; int count = RARRAY_LEN(list);
ItemList *cpplist = new ItemList; ItemList *cpplist = new ItemList;
long i; long i;
for(i = 0; i < count; i++) { for(i = 0; i < count; i++) {

Loading…
Cancel
Save