Class: Nanoarrow::CArray

Inherits:
Object
  • Object
show all
Defined in:
ext/nanoarrow/array.c

Instance Method Summary collapse

Instance Method Details

#assert_validObject



49
50
51
52
53
54
55
56
57
58
59
60
# File 'ext/nanoarrow/array.c', line 49

static VALUE array_assert_valid(VALUE self)
{
    array_t* array;
    GetArray(self, array);

    if (array->ptr == NULL)
        rb_raise(rb_eRuntimeError, "CArray is NULL");
    if (array->ptr->release == NULL)
        rb_raise(rb_eRuntimeError, "CArray is released");

    return Qnil;
}

#child(idx) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'ext/nanoarrow/array.c', line 72

static VALUE array_child(VALUE self, VALUE idx)
{
    array_t* array;
    GetArray(self, array);

    array_assert_valid(self);

    int64_t i = NUM2LL(idx);
    if (i < 0 || i >= array->ptr->n_children)
        rb_raise(rb_eIndexError, "out of range");

    array_t* out_ptr;
    VALUE out = TypedData_Make_Struct(cCArray, array_t, &array_data_type, out_ptr);
    out_ptr->base = array->base;
    out_ptr->ptr = array->ptr->children[i];
    out_ptr->schema = rb_funcall(array->schema, rb_intern("child"), 1, idx);
    return out;
}

#lengthObject



62
63
64
65
66
67
68
69
70
# File 'ext/nanoarrow/array.c', line 62

static VALUE array_length(VALUE self)
{
    array_t* array;
    GetArray(self, array);

    array_assert_valid(self);

    return LL2NUM(array->ptr->length);
}

#schemaObject



33
34
35
36
37
38
39
# File 'ext/nanoarrow/array.c', line 33

static VALUE array_schema(VALUE self)
{
    array_t* array;
    GetArray(self, array);

    return array->schema;
}

#valid?Boolean

Returns:

  • (Boolean)


41
42
43
44
45
46
47
# File 'ext/nanoarrow/array.c', line 41

static VALUE array_is_valid(VALUE self)
{
    array_t* array;
    GetArray(self, array);

    return array->ptr != NULL && array->ptr->release != NULL ? Qtrue : Qfalse;
}