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); (&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); (&error, "ArrowArrayViewSetArray()", code); view->array_base = array_ptr->base; return self; } |