Class: Nanoarrow::CArrayView
- Inherits:
-
Object
- Object
- Nanoarrow::CArrayView
- Defined in:
- ext/nanoarrow/array_view.c
Class Method Summary collapse
Instance Method Summary collapse
- #child(idx) ⇒ Object
- #children ⇒ Object
- #each_binary ⇒ Object
- #each_bool ⇒ Object
- #each_decimal(bitwidth, precision, scale) ⇒ Object
- #each_double ⇒ Object
- #each_int ⇒ Object
- #each_string ⇒ Object
- #each_uint ⇒ Object
- #n_children ⇒ Object
- #set_array(array) ⇒ Object
Class Method Details
.from_schema(schema) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'ext/nanoarrow/array_view.c', line 40
static VALUE array_view_from_schema(VALUE klass, VALUE schema)
{
struct ArrowArrayView* c_array_view;
VALUE base = alloc_c_array_view(&c_array_view);
schema_t* schema_ptr;
GetSchema(schema, schema_ptr);
struct ArrowError error;
int code = ArrowArrayViewInitFromSchema(c_array_view, schema_ptr->ptr, &error);
raise_message_not_ok(&error, "ArrowArrayViewInitFromSchema()", code);
array_view_t* view;
VALUE obj = TypedData_Make_Struct(klass, array_view_t, &array_view_data_type, view);
view->base = base;
view->array_base = Qnil;
view->ptr = c_array_view;
return obj;
}
|
Instance Method Details
#child(idx) ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'ext/nanoarrow/array_view.c', line 87
static VALUE array_view_child(VALUE self, VALUE idx)
{
array_view_t* view;
GetArrayView(self, view);
int64_t i = NUM2LL(idx);
if (i < 0 || i >= view->ptr->n_children)
rb_raise(rb_eIndexError, "out of range");
VALUE child = array_view_allocate(cCArrayView);
array_view_t* child_ptr;
GetArrayView(child, child_ptr);
child_ptr->base = view->base;
child_ptr->ptr = view->ptr->children[i];
return child;
}
|
#children ⇒ Object
105 106 107 108 109 110 111 112 |
# File 'ext/nanoarrow/array_view.c', line 105
static VALUE array_view_children(VALUE self)
{
int64_t n_children = NUM2LL(array_view_n_children(self));
VALUE children = rb_ary_new();
for (int64_t i = 0; i < n_children; i++)
rb_ary_push(children, array_view_child(self, LL2NUM(i)));
return children;
}
|
#each_binary ⇒ Object
179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 |
# File 'ext/nanoarrow/array_view.c', line 179
static VALUE array_view_each_binary(VALUE self)
{
array_view_t* view;
GetArrayView(self, view);
for (int64_t i = 0; i < view->ptr->length; i++)
{
VALUE v;
if (ArrowArrayViewIsNull(view->ptr, i))
v = Qnil;
else
{
struct ArrowBufferView bv = ArrowArrayViewGetBytesUnsafe(view->ptr, i);
v = rb_str_new(bv.data.data, bv.size_bytes);
}
rb_yield(v);
}
return self;
}
|
#each_bool ⇒ Object
114 115 116 117 118 119 120 121 122 123 |
# File 'ext/nanoarrow/array_view.c', line 114
static VALUE array_view_each_bool(VALUE self)
{
array_view_t* view;
GetArrayView(self, view);
for (int64_t i = 0; i < view->ptr->length; i++)
rb_yield(ArrowArrayViewIsNull(view->ptr, i) ? Qnil : ArrowArrayViewGetIntUnsafe(view->ptr, i) ? Qtrue : Qfalse);
return self;
}
|
#each_decimal(bitwidth, precision, scale) ⇒ Object
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 |
# File 'ext/nanoarrow/array_view.c', line 200
static VALUE array_view_each_decimal(VALUE self, VALUE bitwidth, VALUE precision, VALUE scale)
{
array_view_t* view;
GetArrayView(self, view);
struct ArrowDecimal decimal;
ArrowDecimalInit(&decimal, NUM2INT(bitwidth), NUM2INT(precision), NUM2INT(scale));
struct ArrowBuffer buffer;
ArrowBufferInit(&buffer);
for (int64_t i = 0; i < view->ptr->length; i++)
{
VALUE v;
if (ArrowArrayViewIsNull(view->ptr, i))
v = Qnil;
else
{
ArrowArrayViewGetDecimalUnsafe(view->ptr, i, &decimal);
int code = ArrowDecimalAppendStringToBuffer(&decimal, &buffer);
raise_error_not_ok("ArrowDecimalAppendStringToBuffer()", code);
v = rb_str_new((char*) buffer.data, buffer.size_bytes);
ArrowBufferReset(&buffer);
}
rb_yield(v);
}
return self;
}
|
#each_double ⇒ Object
147 148 149 150 151 152 153 154 155 156 |
# File 'ext/nanoarrow/array_view.c', line 147
static VALUE array_view_each_double(VALUE self)
{
array_view_t* view;
GetArrayView(self, view);
for (int64_t i = 0; i < view->ptr->length; i++)
rb_yield(ArrowArrayViewIsNull(view->ptr, i) ? Qnil : DBL2NUM(ArrowArrayViewGetDoubleUnsafe(view->ptr, i)));
return self;
}
|
#each_int ⇒ Object
125 126 127 128 129 130 131 132 133 134 |
# File 'ext/nanoarrow/array_view.c', line 125
static VALUE array_view_each_int(VALUE self)
{
array_view_t* view;
GetArrayView(self, view);
for (int64_t i = 0; i < view->ptr->length; i++)
rb_yield(ArrowArrayViewIsNull(view->ptr, i) ? Qnil : LL2NUM(ArrowArrayViewGetIntUnsafe(view->ptr, i)));
return self;
}
|
#each_string ⇒ Object
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# File 'ext/nanoarrow/array_view.c', line 158
static VALUE array_view_each_string(VALUE self)
{
array_view_t* view;
GetArrayView(self, view);
for (int64_t i = 0; i < view->ptr->length; i++)
{
VALUE v;
if (ArrowArrayViewIsNull(view->ptr, i))
v = Qnil;
else
{
struct ArrowStringView sv = ArrowArrayViewGetStringUnsafe(view->ptr, i);
v = rb_str_new(sv.data, sv.size_bytes);
}
rb_yield(v);
}
return self;
}
|
#each_uint ⇒ Object
136 137 138 139 140 141 142 143 144 145 |
# File 'ext/nanoarrow/array_view.c', line 136
static VALUE array_view_each_uint(VALUE self)
{
array_view_t* view;
GetArrayView(self, view);
for (int64_t i = 0; i < view->ptr->length; i++)
rb_yield(ArrowArrayViewIsNull(view->ptr, i) ? Qnil : ULL2NUM(ArrowArrayViewGetUIntUnsafe(view->ptr, i)));
return self;
}
|
#n_children ⇒ Object
79 80 81 82 83 84 85 |
# File 'ext/nanoarrow/array_view.c', line 79
static VALUE array_view_n_children(VALUE self)
{
array_view_t* view;
GetArrayView(self, view);
return LL2NUM(view->ptr->n_children);
}
|
#set_array(array) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'ext/nanoarrow/array_view.c', line 60
static VALUE array_view_set_array(VALUE self, VALUE array)
{
array_view_t* view;
GetArrayView(self, view);
struct ArrowError error;
int code;
array_t* array_ptr;
GetArray(array, array_ptr);
code = ArrowArrayViewSetArray(view->ptr, array_ptr->ptr, &error);
raise_message_not_ok(&error, "ArrowArrayViewSetArray()", code);
view->array_base = array_ptr->base;
return self;
}
|