Data-Buffer-Shared
view release on metacpan or search on metacpan
bool
set(SV* self_sv, UV idx, NV val)
CODE:
EXTRACT_BUF("Data::Buffer::Shared::F32", self_sv);
RETVAL = buf_f32_set(h, (uint64_t)idx, (float)val);
OUTPUT:
RETVAL
void
slice(SV* self_sv, UV from, UV count)
PPCODE:
EXTRACT_BUF("Data::Buffer::Shared::F32", self_sv);
if (count == 0) XSRETURN_EMPTY;
float *tmp;
Newx(tmp, count, float);
SAVEFREEPV(tmp);
if (!buf_f32_get_slice(h, (uint64_t)from, (uint64_t)count, tmp))
croak("Data::Buffer::Shared::F32: slice out of bounds");
EXTEND(SP, count);
for (UV i = 0; i < count; i++)
mPUSHn(tmp[i]);
bool
set(SV* self_sv, UV idx, NV val)
CODE:
EXTRACT_BUF("Data::Buffer::Shared::F64", self_sv);
RETVAL = buf_f64_set(h, (uint64_t)idx, (double)val);
OUTPUT:
RETVAL
void
slice(SV* self_sv, UV from, UV count)
PPCODE:
EXTRACT_BUF("Data::Buffer::Shared::F64", self_sv);
if (count == 0) XSRETURN_EMPTY;
double *tmp;
Newx(tmp, count, double);
SAVEFREEPV(tmp);
if (!buf_f64_get_slice(h, (uint64_t)from, (uint64_t)count, tmp))
croak("Data::Buffer::Shared::F64: slice out of bounds");
EXTEND(SP, count);
for (UV i = 0; i < count; i++)
mPUSHn(tmp[i]);
bool
set(SV* self_sv, UV idx, IV val)
CODE:
EXTRACT_BUF("Data::Buffer::Shared::I16", self_sv);
RETVAL = buf_i16_set(h, (uint64_t)idx, (int16_t)val);
OUTPUT:
RETVAL
void
slice(SV* self_sv, UV from, UV count)
PPCODE:
EXTRACT_BUF("Data::Buffer::Shared::I16", self_sv);
if (count == 0) XSRETURN_EMPTY;
int16_t *tmp;
Newx(tmp, count, int16_t);
SAVEFREEPV(tmp);
if (!buf_i16_get_slice(h, (uint64_t)from, (uint64_t)count, tmp))
croak("Data::Buffer::Shared::I16: slice out of bounds");
EXTEND(SP, count);
for (UV i = 0; i < count; i++)
mPUSHi(tmp[i]);
bool
set(SV* self_sv, UV idx, IV val)
CODE:
EXTRACT_BUF("Data::Buffer::Shared::I32", self_sv);
RETVAL = buf_i32_set(h, (uint64_t)idx, (int32_t)val);
OUTPUT:
RETVAL
void
slice(SV* self_sv, UV from, UV count)
PPCODE:
EXTRACT_BUF("Data::Buffer::Shared::I32", self_sv);
if (count == 0) XSRETURN_EMPTY;
int32_t *tmp;
Newx(tmp, count, int32_t);
SAVEFREEPV(tmp);
if (!buf_i32_get_slice(h, (uint64_t)from, (uint64_t)count, tmp))
croak("Data::Buffer::Shared::I32: slice out of bounds");
EXTEND(SP, count);
for (UV i = 0; i < count; i++)
mPUSHi(tmp[i]);
bool
set(SV* self_sv, UV idx, IV val)
CODE:
EXTRACT_BUF("Data::Buffer::Shared::I64", self_sv);
RETVAL = buf_i64_set(h, (uint64_t)idx, (int64_t)val);
OUTPUT:
RETVAL
void
slice(SV* self_sv, UV from, UV count)
PPCODE:
EXTRACT_BUF("Data::Buffer::Shared::I64", self_sv);
if (count == 0) XSRETURN_EMPTY;
int64_t *tmp;
Newx(tmp, count, int64_t);
SAVEFREEPV(tmp);
if (!buf_i64_get_slice(h, (uint64_t)from, (uint64_t)count, tmp))
croak("Data::Buffer::Shared::I64: slice out of bounds");
EXTEND(SP, count);
for (UV i = 0; i < count; i++)
mPUSHi(tmp[i]);
bool
set(SV* self_sv, UV idx, IV val)
CODE:
EXTRACT_BUF("Data::Buffer::Shared::I8", self_sv);
RETVAL = buf_i8_set(h, (uint64_t)idx, (int8_t)val);
OUTPUT:
RETVAL
void
slice(SV* self_sv, UV from, UV count)
PPCODE:
EXTRACT_BUF("Data::Buffer::Shared::I8", self_sv);
if (count == 0) XSRETURN_EMPTY;
int8_t *tmp;
Newx(tmp, count, int8_t);
SAVEFREEPV(tmp);
if (!buf_i8_get_slice(h, (uint64_t)from, (uint64_t)count, tmp))
croak("Data::Buffer::Shared::I8: slice out of bounds");
EXTEND(SP, count);
for (UV i = 0; i < count; i++)
mPUSHi(tmp[i]);
CODE:
EXTRACT_BUF("Data::Buffer::Shared::Str", self_sv);
STRLEN vlen;
const char *vstr = SvPV(val_sv, vlen);
RETVAL = buf_str_set(h, (uint64_t)idx, vstr, (uint32_t)vlen);
OUTPUT:
RETVAL
void
slice(SV* self_sv, UV from, UV count)
PPCODE:
EXTRACT_BUF("Data::Buffer::Shared::Str", self_sv);
if (count == 0) XSRETURN_EMPTY;
uint32_t esz = h->hdr->elem_size;
char *tmp;
Newx(tmp, count * esz, char);
SAVEFREEPV(tmp);
if (!buf_str_get_slice(h, (uint64_t)from, (uint64_t)count, tmp))
croak("Data::Buffer::Shared::Str: slice out of bounds");
EXTEND(SP, count);
for (UV i = 0; i < count; i++) {
bool
set(SV* self_sv, UV idx, UV val)
CODE:
EXTRACT_BUF("Data::Buffer::Shared::U16", self_sv);
RETVAL = buf_u16_set(h, (uint64_t)idx, (uint16_t)val);
OUTPUT:
RETVAL
void
slice(SV* self_sv, UV from, UV count)
PPCODE:
EXTRACT_BUF("Data::Buffer::Shared::U16", self_sv);
if (count == 0) XSRETURN_EMPTY;
uint16_t *tmp;
Newx(tmp, count, uint16_t);
SAVEFREEPV(tmp);
if (!buf_u16_get_slice(h, (uint64_t)from, (uint64_t)count, tmp))
croak("Data::Buffer::Shared::U16: slice out of bounds");
EXTEND(SP, count);
for (UV i = 0; i < count; i++)
mPUSHu(tmp[i]);
bool
set(SV* self_sv, UV idx, UV val)
CODE:
EXTRACT_BUF("Data::Buffer::Shared::U32", self_sv);
RETVAL = buf_u32_set(h, (uint64_t)idx, (uint32_t)val);
OUTPUT:
RETVAL
void
slice(SV* self_sv, UV from, UV count)
PPCODE:
EXTRACT_BUF("Data::Buffer::Shared::U32", self_sv);
if (count == 0) XSRETURN_EMPTY;
uint32_t *tmp;
Newx(tmp, count, uint32_t);
SAVEFREEPV(tmp);
if (!buf_u32_get_slice(h, (uint64_t)from, (uint64_t)count, tmp))
croak("Data::Buffer::Shared::U32: slice out of bounds");
EXTEND(SP, count);
for (UV i = 0; i < count; i++)
mPUSHu(tmp[i]);
bool
set(SV* self_sv, UV idx, UV val)
CODE:
EXTRACT_BUF("Data::Buffer::Shared::U64", self_sv);
RETVAL = buf_u64_set(h, (uint64_t)idx, (uint64_t)val);
OUTPUT:
RETVAL
void
slice(SV* self_sv, UV from, UV count)
PPCODE:
EXTRACT_BUF("Data::Buffer::Shared::U64", self_sv);
if (count == 0) XSRETURN_EMPTY;
uint64_t *tmp;
Newx(tmp, count, uint64_t);
SAVEFREEPV(tmp);
if (!buf_u64_get_slice(h, (uint64_t)from, (uint64_t)count, tmp))
croak("Data::Buffer::Shared::U64: slice out of bounds");
EXTEND(SP, count);
for (UV i = 0; i < count; i++)
mPUSHu(tmp[i]);
bool
set(SV* self_sv, UV idx, UV val)
CODE:
EXTRACT_BUF("Data::Buffer::Shared::U8", self_sv);
RETVAL = buf_u8_set(h, (uint64_t)idx, (uint8_t)val);
OUTPUT:
RETVAL
void
slice(SV* self_sv, UV from, UV count)
PPCODE:
EXTRACT_BUF("Data::Buffer::Shared::U8", self_sv);
if (count == 0) XSRETURN_EMPTY;
uint8_t *tmp;
Newx(tmp, count, uint8_t);
SAVEFREEPV(tmp);
if (!buf_u8_get_slice(h, (uint64_t)from, (uint64_t)count, tmp))
croak("Data::Buffer::Shared::U8: slice out of bounds");
EXTEND(SP, count);
for (UV i = 0; i < count; i++)
mPUSHu(tmp[i]);
( run in 0.902 second using v1.01-cache-2.11-cpan-5511b514fd6 )