Data-Buffer-Shared

 view release on metacpan or  search on metacpan

xs/f32.xs  view on Meta::CPAN

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]);

xs/f64.xs  view on Meta::CPAN

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]);

xs/i16.xs  view on Meta::CPAN

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]);

xs/i32.xs  view on Meta::CPAN

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]);

xs/i64.xs  view on Meta::CPAN

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]);

xs/i8.xs  view on Meta::CPAN

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]);

xs/str.xs  view on Meta::CPAN

    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++) {

xs/u16.xs  view on Meta::CPAN

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]);

xs/u32.xs  view on Meta::CPAN

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]);

xs/u64.xs  view on Meta::CPAN

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]);

xs/u8.xs  view on Meta::CPAN

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 )