[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:002876] Re: ruby-1.9.0
- To: dennou-ruby@xxxxxxxxxxx, Shigenori OTSUKA <otsuka@xxxxxxxxxxxxxxxxxx>
- Subject: [dennou-ruby:002876] Re: ruby-1.9.0
- From: ÂçÄÍÀ®ÆÁ<otsuka@xxxxxxxxxxxxxxxxxx>
- Date: Wed, 26 Dec 2007 16:33:39 +0900
大塚@京大です。
> 西澤です
>
> 公約通りruby-1.9.0がリリースされましたね
> 昔試したときはnarrayから失敗したので挫折した記憶があります。
NArray を ruby 1.9 で使うためのパッチを作ったので投げます。
アドホックなものですが、とりあえず使ってみたい方はどうぞ。
拡張ライブラリから ruby の機能を呼ぶときに
RSTRING( hoge )->ptr
みたいなのが廃止されて
RSTRING_PTR( hoge )
となっている類がいくつかあるようです。
--
京都大学大学院理学研究科
気象学研究室 D2
大塚成徳 (Shigenori OTSUKA)
email: otsuka@xxxxxxxxxxxxxxxxxx
diff -Naur narray-0.5.9p2-org/na_array.c narray-0.5.9p2/na_array.c
--- narray-0.5.9p2-org/na_array.c 2005-08-05 13:36:28.000000000 +0900
+++ narray-0.5.9p2/na_array.c 2007-12-26 15:04:54.359375000 +0900
@@ -560,7 +560,8 @@
{
VALUE str=Qnil, tmp;
int max_col = 77;
- int sep_len = RSTRING(sep)->len;
+ //int sep_len = RSTRING(sep)->len;
+ int sep_len = RSTRING_LEN(sep);
if (n>0)
(*tostr)(&str,p2);
@@ -571,7 +572,8 @@
if (!NIL_P(sep)) rb_str_concat(str, sep);
- if (RSTRING(str)->len + RSTRING(tmp)->len + rank*4 + sep_len < max_col) {
+ //if (RSTRING(str)->len + RSTRING(tmp)->len + rank*4 + sep_len < max_col) {
+ if (RSTRING_LEN(str) + RSTRING_LEN(tmp) + rank*4 + sep_len < max_col) {
rb_str_concat(str, tmp);
} else {
rb_str_cat(str,"...",3);
diff -Naur narray-0.5.9p2-org/narray.c narray-0.5.9p2/narray.c
--- narray-0.5.9p2-org/narray.c 2006-08-09 01:10:11.000000000 +0900
+++ narray-0.5.9p2/narray.c 2007-12-26 15:04:09.953125000 +0900
@@ -10,13 +10,13 @@
*/
#define NARRAY_C
#include <ruby.h>
-#include <version.h>
+//#include <version.h>
#include "narray.h"
#include "narray_local.h"
-#if RUBY_VERSION_CODE < 150
-#define NARRAY_GC
-#endif
+//#if RUBY_VERSION_CODE < 150
+//#define NARRAY_GC
+//#endif
/* global variables within this module */
VALUE cNArray, cNArrayScalar, cComplex;
@@ -170,7 +170,8 @@
while (v) {
if (v == cNArray || RCLASS(v)->m_tbl == RCLASS(cNArray)->m_tbl)
return;
- v = RCLASS(v)->super;
+ //v = RCLASS(v)->super;
+ v = RCLASS_SUPER(v);
}
rb_raise(rb_eRuntimeError, "need NArray or its subclass");
}
@@ -378,7 +379,8 @@
}
if (TYPE(v)==T_STRING) {
for (i=1; i<NA_NTYPES; i++) {
- if ( !strncmp( RSTRING(v)->ptr, na_typestring[i], RSTRING(v)->len) )
+ //if ( !strncmp( RSTRING(v)->ptr, na_typestring[i], RSTRING(v)->len) )
+ if ( !strncmp( RSTRING_PTR(v), na_typestring[i], RSTRING_LEN(v)) )
return i;
}
}
@@ -602,7 +604,8 @@
type = na_get_typecode(argv[0]);
- str_len = RSTRING(str)->len;
+ //str_len = RSTRING(str)->len;
+ str_len = RSTRING_LEN(str);
if (argc == 1) {
rank = 1;
@@ -622,7 +625,8 @@
v = na_make_object( type, rank, shape, cNArray );
GetNArray(v,ary);
- memcpy( ary->ptr, RSTRING(str)->ptr, ary->total*na_sizeof[type] );
+ //memcpy( ary->ptr, RSTRING(str)->ptr, ary->total*na_sizeof[type] );
+ memcpy( ary->ptr, RSTRING_PTR(str), ary->total*na_sizeof[type] );
return v;
}