/* method: to_string */ static VALUE na_to_string(VALUE self) { VALUE v; struct NARRAY *a1, *a2; GetNArray(self,a1); if (a1->total==0) v = na_make_empty(NA_ROBJ, CLASS_OF(self)); else if (a1->type==NA_BYTE) { if (a1->rank==1) return rb_str_new(a1->ptr,a1->shape[0]); v = na_make_object(NA_ROBJ, a1->rank-1, a1->shape+1, cNArray); GetNArray(v,a2); na_to_string_binary( a2->total, a2->ptr, sizeof(VALUE), a1->ptr, a1->shape[0] ); } else { v = na_make_object(NA_ROBJ, a1->rank, a1->shape, CLASS_OF(self)); GetNArray(v,a2); ToStrFuncs[a1->type]( a2->total, a2->ptr, sizeof(VALUE), a1->ptr, na_sizeof[a1->type] ); } return v; }