/* DO NOT MODIFY THIS FILE it is generated from these files: * inc/template/accessor.tt * inc/template/accessor_wrapper.tt * inc/run/generate_record_accessor.pl */ #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" #include "ffi_platypus.h" #include "ffi_platypus_guts.h" XS(ffi_pl_record_accessor_uint8) { ffi_pl_record_member *member; SV *self; char *ptr1; uint8_t *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); if(!SvOK(self)) croak("Null record error"); ptr1 = (char*) SvPV_nolen(self); ptr2 = (uint8_t*) &ptr1[member->offset]; if(items > 1) { if(SvREADONLY(self)) { croak("record is read-only"); } else { *ptr2 = (uint8_t) SvUV(ST(1)); } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; XSRETURN_UV(*ptr2); } XS(ffi_pl_record_accessor_uint8_array) { ffi_pl_record_member *member; SV *self; SV *arg; SV **item; AV *av; char *ptr1; int i; uint8_t *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); ptr1 = (char*) SvPV_nolen(self); ptr2 = (uint8_t*) &ptr1[member->offset]; if(items > 1 && SvREADONLY(self)) { croak("record is read-only"); } if(items > 2) { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { arg = ST(2); ptr2[i] = SvUV(arg); } else { warn("illegal index %d", i); } } else if(items > 1) { arg = ST(1); if(SvROK(arg) && SvTYPE(SvRV(arg)) == SVt_PVAV) { av = (AV*) SvRV(arg); for(i=0; i < member->count; i++) { item = av_fetch(av, i, 0); if(item != NULL && SvOK(*item)) { ptr2[i] = SvUV(*item); } else { ptr2[i] = 0; } } } else { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { XSRETURN_UV(ptr2[i]); } else { warn("illegal index %d", i); XSRETURN_EMPTY; } } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; av = newAV(); av_fill(av, member->count-1); for(i=0; i < member->count; i++) { sv_setuv(*av_fetch(av, i, 1), ptr2[i]); } ST(0) = newRV_inc((SV*)av); XSRETURN(1); } XS(ffi_pl_record_accessor_sint8) { ffi_pl_record_member *member; SV *self; char *ptr1; int8_t *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); if(!SvOK(self)) croak("Null record error"); ptr1 = (char*) SvPV_nolen(self); ptr2 = (int8_t*) &ptr1[member->offset]; if(items > 1) { if(SvREADONLY(self)) { croak("record is read-only"); } else { *ptr2 = (int8_t) SvIV(ST(1)); } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; XSRETURN_IV(*ptr2); } XS(ffi_pl_record_accessor_sint8_array) { ffi_pl_record_member *member; SV *self; SV *arg; SV **item; AV *av; char *ptr1; int i; int8_t *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); ptr1 = (char*) SvPV_nolen(self); ptr2 = (int8_t*) &ptr1[member->offset]; if(items > 1 && SvREADONLY(self)) { croak("record is read-only"); } if(items > 2) { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { arg = ST(2); ptr2[i] = SvIV(arg); } else { warn("illegal index %d", i); } } else if(items > 1) { arg = ST(1); if(SvROK(arg) && SvTYPE(SvRV(arg)) == SVt_PVAV) { av = (AV*) SvRV(arg); for(i=0; i < member->count; i++) { item = av_fetch(av, i, 0); if(item != NULL && SvOK(*item)) { ptr2[i] = SvIV(*item); } else { ptr2[i] = 0; } } } else { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { XSRETURN_IV(ptr2[i]); } else { warn("illegal index %d", i); XSRETURN_EMPTY; } } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; av = newAV(); av_fill(av, member->count-1); for(i=0; i < member->count; i++) { sv_setiv(*av_fetch(av, i, 1), ptr2[i]); } ST(0) = newRV_inc((SV*)av); XSRETURN(1); } XS(ffi_pl_record_accessor_uint16) { ffi_pl_record_member *member; SV *self; char *ptr1; uint16_t *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); if(!SvOK(self)) croak("Null record error"); ptr1 = (char*) SvPV_nolen(self); ptr2 = (uint16_t*) &ptr1[member->offset]; if(items > 1) { if(SvREADONLY(self)) { croak("record is read-only"); } else { *ptr2 = (uint16_t) SvUV(ST(1)); } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; XSRETURN_UV(*ptr2); } XS(ffi_pl_record_accessor_uint16_array) { ffi_pl_record_member *member; SV *self; SV *arg; SV **item; AV *av; char *ptr1; int i; uint16_t *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); ptr1 = (char*) SvPV_nolen(self); ptr2 = (uint16_t*) &ptr1[member->offset]; if(items > 1 && SvREADONLY(self)) { croak("record is read-only"); } if(items > 2) { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { arg = ST(2); ptr2[i] = SvUV(arg); } else { warn("illegal index %d", i); } } else if(items > 1) { arg = ST(1); if(SvROK(arg) && SvTYPE(SvRV(arg)) == SVt_PVAV) { av = (AV*) SvRV(arg); for(i=0; i < member->count; i++) { item = av_fetch(av, i, 0); if(item != NULL && SvOK(*item)) { ptr2[i] = SvUV(*item); } else { ptr2[i] = 0; } } } else { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { XSRETURN_UV(ptr2[i]); } else { warn("illegal index %d", i); XSRETURN_EMPTY; } } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; av = newAV(); av_fill(av, member->count-1); for(i=0; i < member->count; i++) { sv_setuv(*av_fetch(av, i, 1), ptr2[i]); } ST(0) = newRV_inc((SV*)av); XSRETURN(1); } XS(ffi_pl_record_accessor_sint16) { ffi_pl_record_member *member; SV *self; char *ptr1; int16_t *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); if(!SvOK(self)) croak("Null record error"); ptr1 = (char*) SvPV_nolen(self); ptr2 = (int16_t*) &ptr1[member->offset]; if(items > 1) { if(SvREADONLY(self)) { croak("record is read-only"); } else { *ptr2 = (int16_t) SvIV(ST(1)); } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; XSRETURN_IV(*ptr2); } XS(ffi_pl_record_accessor_sint16_array) { ffi_pl_record_member *member; SV *self; SV *arg; SV **item; AV *av; char *ptr1; int i; int16_t *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); ptr1 = (char*) SvPV_nolen(self); ptr2 = (int16_t*) &ptr1[member->offset]; if(items > 1 && SvREADONLY(self)) { croak("record is read-only"); } if(items > 2) { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { arg = ST(2); ptr2[i] = SvIV(arg); } else { warn("illegal index %d", i); } } else if(items > 1) { arg = ST(1); if(SvROK(arg) && SvTYPE(SvRV(arg)) == SVt_PVAV) { av = (AV*) SvRV(arg); for(i=0; i < member->count; i++) { item = av_fetch(av, i, 0); if(item != NULL && SvOK(*item)) { ptr2[i] = SvIV(*item); } else { ptr2[i] = 0; } } } else { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { XSRETURN_IV(ptr2[i]); } else { warn("illegal index %d", i); XSRETURN_EMPTY; } } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; av = newAV(); av_fill(av, member->count-1); for(i=0; i < member->count; i++) { sv_setiv(*av_fetch(av, i, 1), ptr2[i]); } ST(0) = newRV_inc((SV*)av); XSRETURN(1); } XS(ffi_pl_record_accessor_uint32) { ffi_pl_record_member *member; SV *self; char *ptr1; uint32_t *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); if(!SvOK(self)) croak("Null record error"); ptr1 = (char*) SvPV_nolen(self); ptr2 = (uint32_t*) &ptr1[member->offset]; if(items > 1) { if(SvREADONLY(self)) { croak("record is read-only"); } else { *ptr2 = (uint32_t) SvUV(ST(1)); } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; XSRETURN_UV(*ptr2); } XS(ffi_pl_record_accessor_uint32_array) { ffi_pl_record_member *member; SV *self; SV *arg; SV **item; AV *av; char *ptr1; int i; uint32_t *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); ptr1 = (char*) SvPV_nolen(self); ptr2 = (uint32_t*) &ptr1[member->offset]; if(items > 1 && SvREADONLY(self)) { croak("record is read-only"); } if(items > 2) { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { arg = ST(2); ptr2[i] = SvUV(arg); } else { warn("illegal index %d", i); } } else if(items > 1) { arg = ST(1); if(SvROK(arg) && SvTYPE(SvRV(arg)) == SVt_PVAV) { av = (AV*) SvRV(arg); for(i=0; i < member->count; i++) { item = av_fetch(av, i, 0); if(item != NULL && SvOK(*item)) { ptr2[i] = SvUV(*item); } else { ptr2[i] = 0; } } } else { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { XSRETURN_UV(ptr2[i]); } else { warn("illegal index %d", i); XSRETURN_EMPTY; } } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; av = newAV(); av_fill(av, member->count-1); for(i=0; i < member->count; i++) { sv_setuv(*av_fetch(av, i, 1), ptr2[i]); } ST(0) = newRV_inc((SV*)av); XSRETURN(1); } XS(ffi_pl_record_accessor_sint32) { ffi_pl_record_member *member; SV *self; char *ptr1; int32_t *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); if(!SvOK(self)) croak("Null record error"); ptr1 = (char*) SvPV_nolen(self); ptr2 = (int32_t*) &ptr1[member->offset]; if(items > 1) { if(SvREADONLY(self)) { croak("record is read-only"); } else { *ptr2 = (int32_t) SvIV(ST(1)); } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; XSRETURN_IV(*ptr2); } XS(ffi_pl_record_accessor_sint32_array) { ffi_pl_record_member *member; SV *self; SV *arg; SV **item; AV *av; char *ptr1; int i; int32_t *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); ptr1 = (char*) SvPV_nolen(self); ptr2 = (int32_t*) &ptr1[member->offset]; if(items > 1 && SvREADONLY(self)) { croak("record is read-only"); } if(items > 2) { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { arg = ST(2); ptr2[i] = SvIV(arg); } else { warn("illegal index %d", i); } } else if(items > 1) { arg = ST(1); if(SvROK(arg) && SvTYPE(SvRV(arg)) == SVt_PVAV) { av = (AV*) SvRV(arg); for(i=0; i < member->count; i++) { item = av_fetch(av, i, 0); if(item != NULL && SvOK(*item)) { ptr2[i] = SvIV(*item); } else { ptr2[i] = 0; } } } else { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { XSRETURN_IV(ptr2[i]); } else { warn("illegal index %d", i); XSRETURN_EMPTY; } } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; av = newAV(); av_fill(av, member->count-1); for(i=0; i < member->count; i++) { sv_setiv(*av_fetch(av, i, 1), ptr2[i]); } ST(0) = newRV_inc((SV*)av); XSRETURN(1); } XS(ffi_pl_record_accessor_uint64) { ffi_pl_record_member *member; SV *self; char *ptr1; uint64_t *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); if(!SvOK(self)) croak("Null record error"); ptr1 = (char*) SvPV_nolen(self); ptr2 = (uint64_t*) &ptr1[member->offset]; if(items > 1) { if(SvREADONLY(self)) { croak("record is read-only"); } else { *ptr2 = (uint64_t) SvUV(ST(1)); } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; XSRETURN_UV(*ptr2); } XS(ffi_pl_record_accessor_uint64_array) { ffi_pl_record_member *member; SV *self; SV *arg; SV **item; AV *av; char *ptr1; int i; uint64_t *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); ptr1 = (char*) SvPV_nolen(self); ptr2 = (uint64_t*) &ptr1[member->offset]; if(items > 1 && SvREADONLY(self)) { croak("record is read-only"); } if(items > 2) { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { arg = ST(2); ptr2[i] = SvUV(arg); } else { warn("illegal index %d", i); } } else if(items > 1) { arg = ST(1); if(SvROK(arg) && SvTYPE(SvRV(arg)) == SVt_PVAV) { av = (AV*) SvRV(arg); for(i=0; i < member->count; i++) { item = av_fetch(av, i, 0); if(item != NULL && SvOK(*item)) { ptr2[i] = SvUV(*item); } else { ptr2[i] = 0; } } } else { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { XSRETURN_UV(ptr2[i]); } else { warn("illegal index %d", i); XSRETURN_EMPTY; } } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; av = newAV(); av_fill(av, member->count-1); for(i=0; i < member->count; i++) { sv_setuv(*av_fetch(av, i, 1), ptr2[i]); } ST(0) = newRV_inc((SV*)av); XSRETURN(1); } XS(ffi_pl_record_accessor_sint64) { ffi_pl_record_member *member; SV *self; char *ptr1; int64_t *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); if(!SvOK(self)) croak("Null record error"); ptr1 = (char*) SvPV_nolen(self); ptr2 = (int64_t*) &ptr1[member->offset]; if(items > 1) { if(SvREADONLY(self)) { croak("record is read-only"); } else { *ptr2 = (int64_t) SvIV(ST(1)); } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; XSRETURN_IV(*ptr2); } XS(ffi_pl_record_accessor_sint64_array) { ffi_pl_record_member *member; SV *self; SV *arg; SV **item; AV *av; char *ptr1; int i; int64_t *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); ptr1 = (char*) SvPV_nolen(self); ptr2 = (int64_t*) &ptr1[member->offset]; if(items > 1 && SvREADONLY(self)) { croak("record is read-only"); } if(items > 2) { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { arg = ST(2); ptr2[i] = SvIV(arg); } else { warn("illegal index %d", i); } } else if(items > 1) { arg = ST(1); if(SvROK(arg) && SvTYPE(SvRV(arg)) == SVt_PVAV) { av = (AV*) SvRV(arg); for(i=0; i < member->count; i++) { item = av_fetch(av, i, 0); if(item != NULL && SvOK(*item)) { ptr2[i] = SvIV(*item); } else { ptr2[i] = 0; } } } else { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { XSRETURN_IV(ptr2[i]); } else { warn("illegal index %d", i); XSRETURN_EMPTY; } } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; av = newAV(); av_fill(av, member->count-1); for(i=0; i < member->count; i++) { sv_setiv(*av_fetch(av, i, 1), ptr2[i]); } ST(0) = newRV_inc((SV*)av); XSRETURN(1); } XS(ffi_pl_record_accessor_float) { ffi_pl_record_member *member; SV *self; char *ptr1; float *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); if(!SvOK(self)) croak("Null record error"); ptr1 = (char*) SvPV_nolen(self); ptr2 = (float*) &ptr1[member->offset]; if(items > 1) { if(SvREADONLY(self)) { croak("record is read-only"); } else { *ptr2 = (float) SvNV(ST(1)); } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; XSRETURN_NV(*ptr2); } XS(ffi_pl_record_accessor_float_array) { ffi_pl_record_member *member; SV *self; SV *arg; SV **item; AV *av; char *ptr1; int i; float *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); ptr1 = (char*) SvPV_nolen(self); ptr2 = (float*) &ptr1[member->offset]; if(items > 1 && SvREADONLY(self)) { croak("record is read-only"); } if(items > 2) { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { arg = ST(2); ptr2[i] = SvNV(arg); } else { warn("illegal index %d", i); } } else if(items > 1) { arg = ST(1); if(SvROK(arg) && SvTYPE(SvRV(arg)) == SVt_PVAV) { av = (AV*) SvRV(arg); for(i=0; i < member->count; i++) { item = av_fetch(av, i, 0); if(item != NULL && SvOK(*item)) { ptr2[i] = SvNV(*item); } else { ptr2[i] = 0.0; } } } else { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { XSRETURN_NV(ptr2[i]); } else { warn("illegal index %d", i); XSRETURN_EMPTY; } } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; av = newAV(); av_fill(av, member->count-1); for(i=0; i < member->count; i++) { sv_setnv(*av_fetch(av, i, 1), ptr2[i]); } ST(0) = newRV_inc((SV*)av); XSRETURN(1); } XS(ffi_pl_record_accessor_double) { ffi_pl_record_member *member; SV *self; char *ptr1; double *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); if(!SvOK(self)) croak("Null record error"); ptr1 = (char*) SvPV_nolen(self); ptr2 = (double*) &ptr1[member->offset]; if(items > 1) { if(SvREADONLY(self)) { croak("record is read-only"); } else { *ptr2 = (double) SvNV(ST(1)); } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; XSRETURN_NV(*ptr2); } XS(ffi_pl_record_accessor_double_array) { ffi_pl_record_member *member; SV *self; SV *arg; SV **item; AV *av; char *ptr1; int i; double *ptr2; dVAR; dXSARGS; if(items == 0) croak("This is a method, you must provide at least the object"); member = (ffi_pl_record_member*) CvXSUBANY(cv).any_ptr; self = ST(0); if(SvROK(self)) self = SvRV(self); ptr1 = (char*) SvPV_nolen(self); ptr2 = (double*) &ptr1[member->offset]; if(items > 1 && SvREADONLY(self)) { croak("record is read-only"); } if(items > 2) { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { arg = ST(2); ptr2[i] = SvNV(arg); } else { warn("illegal index %d", i); } } else if(items > 1) { arg = ST(1); if(SvROK(arg) && SvTYPE(SvRV(arg)) == SVt_PVAV) { av = (AV*) SvRV(arg); for(i=0; i < member->count; i++) { item = av_fetch(av, i, 0); if(item != NULL && SvOK(*item)) { ptr2[i] = SvNV(*item); } else { ptr2[i] = 0.0; } } } else { i = SvIV(ST(1)); if(i >= 0 && i < member->count) { XSRETURN_NV(ptr2[i]); } else { warn("illegal index %d", i); XSRETURN_EMPTY; } } } if(GIMME_V == G_VOID) XSRETURN_EMPTY; av = newAV(); av_fill(av, member->count-1); for(i=0; i < member->count; i++) { sv_setnv(*av_fetch(av, i, 1), ptr2[i]); } ST(0) = newRV_inc((SV*)av); XSRETURN(1); }