mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-19 20:41:33 +00:00
[Quest API] Perl Object Validation Macro
Add validation macro to all object methods.
This commit is contained in:
parent
9b8845949e
commit
772c88d020
@ -42,6 +42,19 @@
|
|||||||
#undef THIS
|
#undef THIS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define VALIDATE_THIS_IS_OBJECT \
|
||||||
|
do { \
|
||||||
|
if (sv_derived_from(ST(0), "Object")) { \
|
||||||
|
IV tmp = SvIV((SV*)SvRV(ST(0))); \
|
||||||
|
THIS = INT2PTR(Object*, tmp); \
|
||||||
|
} else { \
|
||||||
|
Perl_croak(aTHX_ "THIS is not of type Object"); \
|
||||||
|
} \
|
||||||
|
if (THIS == nullptr) { \
|
||||||
|
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash."); \
|
||||||
|
} \
|
||||||
|
} while (0);
|
||||||
|
|
||||||
XS(XS_Object_IsGroundSpawn); /* prototype to pass -Wmissing-prototypes */
|
XS(XS_Object_IsGroundSpawn); /* prototype to pass -Wmissing-prototypes */
|
||||||
XS(XS_Object_IsGroundSpawn) {
|
XS(XS_Object_IsGroundSpawn) {
|
||||||
dXSARGS;
|
dXSARGS;
|
||||||
@ -50,15 +63,7 @@ XS(XS_Object_IsGroundSpawn) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
bool RETVAL;
|
bool RETVAL;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->IsGroundSpawn();
|
RETVAL = THIS->IsGroundSpawn();
|
||||||
ST(0) = boolSV(RETVAL);
|
ST(0) = boolSV(RETVAL);
|
||||||
sv_2mortal(ST(0));
|
sv_2mortal(ST(0));
|
||||||
@ -74,15 +79,7 @@ XS(XS_Object_Close) {
|
|||||||
Perl_croak(aTHX_ "Usage: Object::Close(THIS)");
|
Perl_croak(aTHX_ "Usage: Object::Close(THIS)");
|
||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->Close();
|
THIS->Close();
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -97,15 +94,7 @@ XS(XS_Object_Delete) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
bool reset_state;
|
bool reset_state;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
if (items < 2)
|
if (items < 2)
|
||||||
reset_state = false;
|
reset_state = false;
|
||||||
else {
|
else {
|
||||||
@ -123,15 +112,7 @@ XS(XS_Object_StartDecay) {
|
|||||||
Perl_croak(aTHX_ "Usage: Object::StartDecay(THIS)");
|
Perl_croak(aTHX_ "Usage: Object::StartDecay(THIS)");
|
||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->StartDecay();
|
THIS->StartDecay();
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -146,15 +127,7 @@ XS(XS_Object_DeleteItem) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
uint8 index = (uint8) SvUV(ST(1));
|
uint8 index = (uint8) SvUV(ST(1));
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->DeleteItem(index);
|
THIS->DeleteItem(index);
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -168,15 +141,7 @@ XS(XS_Object_IsObject) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
bool RETVAL;
|
bool RETVAL;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->IsObject();
|
RETVAL = THIS->IsObject();
|
||||||
ST(0) = boolSV(RETVAL);
|
ST(0) = boolSV(RETVAL);
|
||||||
sv_2mortal(ST(0));
|
sv_2mortal(ST(0));
|
||||||
@ -193,15 +158,7 @@ XS(XS_Object_Save) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
bool RETVAL;
|
bool RETVAL;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->Save();
|
RETVAL = THIS->Save();
|
||||||
ST(0) = boolSV(RETVAL);
|
ST(0) = boolSV(RETVAL);
|
||||||
sv_2mortal(ST(0));
|
sv_2mortal(ST(0));
|
||||||
@ -218,15 +175,7 @@ XS(XS_Object_SetID) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
uint16 set_id = (uint16) SvUV(ST(1));
|
uint16 set_id = (uint16) SvUV(ST(1));
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->SetID(set_id);
|
THIS->SetID(set_id);
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -240,15 +189,7 @@ XS(XS_Object_ClearUser) {
|
|||||||
Perl_croak(aTHX_ "Usage: Object::ClearUser(THIS)");
|
Perl_croak(aTHX_ "Usage: Object::ClearUser(THIS)");
|
||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->ClearUser();
|
THIS->ClearUser();
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -264,15 +205,7 @@ XS(XS_Object_GetDBID) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
uint32 RETVAL;
|
uint32 RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetDBID();
|
RETVAL = THIS->GetDBID();
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHu((UV) RETVAL);
|
PUSHu((UV) RETVAL);
|
||||||
@ -289,15 +222,7 @@ XS(XS_Object_GetID) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
uint16 RETVAL;
|
uint16 RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetID();
|
RETVAL = THIS->GetID();
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHu((UV) RETVAL);
|
PUSHu((UV) RETVAL);
|
||||||
@ -314,15 +239,7 @@ XS(XS_Object_GetX) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
float RETVAL;
|
float RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetX();
|
RETVAL = THIS->GetX();
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHn((double) RETVAL);
|
PUSHn((double) RETVAL);
|
||||||
@ -339,15 +256,7 @@ XS(XS_Object_GetY) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
float RETVAL;
|
float RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetY();
|
RETVAL = THIS->GetY();
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHn((double) RETVAL);
|
PUSHn((double) RETVAL);
|
||||||
@ -364,15 +273,7 @@ XS(XS_Object_GetZ) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
float RETVAL;
|
float RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetZ();
|
RETVAL = THIS->GetZ();
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHn((double) RETVAL);
|
PUSHn((double) RETVAL);
|
||||||
@ -389,15 +290,7 @@ XS(XS_Object_GetHeading) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
float RETVAL;
|
float RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetHeadingData();
|
RETVAL = THIS->GetHeadingData();
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHn((double) RETVAL);
|
PUSHn((double) RETVAL);
|
||||||
@ -414,15 +307,7 @@ XS(XS_Object_VarSave) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
uint32 RETVAL;
|
uint32 RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->VarSave();
|
RETVAL = THIS->VarSave();
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHu((UV) RETVAL);
|
PUSHu((UV) RETVAL);
|
||||||
@ -440,15 +325,7 @@ XS(XS_Object_GetType) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
uint32 RETVAL;
|
uint32 RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetType();
|
RETVAL = THIS->GetType();
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHu((UV) RETVAL);
|
PUSHu((UV) RETVAL);
|
||||||
@ -465,15 +342,7 @@ XS(XS_Object_SetType) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
uint32 type = (uint32) SvUV(ST(1));
|
uint32 type = (uint32) SvUV(ST(1));
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->SetType(type);
|
THIS->SetType(type);
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -489,15 +358,7 @@ XS(XS_Object_GetIcon) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
uint32 RETVAL;
|
uint32 RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetIcon();
|
RETVAL = THIS->GetIcon();
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHu((UV) RETVAL);
|
PUSHu((UV) RETVAL);
|
||||||
@ -514,15 +375,7 @@ XS(XS_Object_SetIcon) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
uint32 icon = (uint32) SvUV(ST(1));
|
uint32 icon = (uint32) SvUV(ST(1));
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->SetIcon(icon);
|
THIS->SetIcon(icon);
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -538,15 +391,7 @@ XS(XS_Object_GetItemID) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
uint32 RETVAL;
|
uint32 RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetItemID();
|
RETVAL = THIS->GetItemID();
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHu((UV) RETVAL);
|
PUSHu((UV) RETVAL);
|
||||||
@ -563,15 +408,7 @@ XS(XS_Object_SetItemID) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
uint32 itemid = (uint32) SvUV(ST(1));
|
uint32 itemid = (uint32) SvUV(ST(1));
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->SetItemID(itemid);
|
THIS->SetItemID(itemid);
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -587,15 +424,7 @@ XS(XS_Object_SetLocation) {
|
|||||||
float x = (float) SvNV(ST(1));
|
float x = (float) SvNV(ST(1));
|
||||||
float y = (float) SvNV(ST(2));
|
float y = (float) SvNV(ST(2));
|
||||||
float z = (float) SvNV(ST(3));
|
float z = (float) SvNV(ST(3));
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->SetLocation(x, y, z);
|
THIS->SetLocation(x, y, z);
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -609,15 +438,7 @@ XS(XS_Object_SetX) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
float pos = (float) SvNV(ST(1));
|
float pos = (float) SvNV(ST(1));
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->SetX(pos);
|
THIS->SetX(pos);
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -631,15 +452,7 @@ XS(XS_Object_SetY) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
float pos = (float) SvNV(ST(1));
|
float pos = (float) SvNV(ST(1));
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->SetY(pos);
|
THIS->SetY(pos);
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -653,15 +466,7 @@ XS(XS_Object_SetZ) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
float pos = (float) SvNV(ST(1));
|
float pos = (float) SvNV(ST(1));
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->SetZ(pos);
|
THIS->SetZ(pos);
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -675,15 +480,7 @@ XS(XS_Object_SetHeading) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
float heading = (float) SvNV(ST(1));
|
float heading = (float) SvNV(ST(1));
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->SetHeading(heading);
|
THIS->SetHeading(heading);
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -697,15 +494,7 @@ XS(XS_Object_SetModelName) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
char *name = nullptr;
|
char *name = nullptr;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
if (items > 1) { name = (char *) SvPV_nolen(ST(1)); }
|
if (items > 1) { name = (char *) SvPV_nolen(ST(1)); }
|
||||||
|
|
||||||
THIS->SetModelName(name);
|
THIS->SetModelName(name);
|
||||||
@ -721,15 +510,7 @@ XS(XS_Object_GetModelName) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
Const_char *RETVAL;
|
Const_char *RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetModelName();
|
RETVAL = THIS->GetModelName();
|
||||||
sv_setpv(TARG, RETVAL);
|
sv_setpv(TARG, RETVAL);
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
@ -746,15 +527,7 @@ XS(XS_Object_Repop) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT; THIS->Repop();
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
THIS->Repop();
|
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
}
|
}
|
||||||
@ -767,15 +540,7 @@ XS(XS_Object_Depop) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT; THIS->Depop();
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
THIS->Depop();
|
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
}
|
}
|
||||||
@ -791,15 +556,7 @@ XS(XS_Object_GetEntityVariable) {
|
|||||||
Const_char *id = SvPV_nolen(ST(1));
|
Const_char *id = SvPV_nolen(ST(1));
|
||||||
Const_char *RETVAL;
|
Const_char *RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetEntityVariable(id);
|
RETVAL = THIS->GetEntityVariable(id);
|
||||||
sv_setpv(TARG, RETVAL);
|
sv_setpv(TARG, RETVAL);
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
@ -817,15 +574,7 @@ XS(XS_Object_EntityVariableExists) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
Const_char *id = SvPV_nolen(ST(1));
|
Const_char *id = SvPV_nolen(ST(1));
|
||||||
bool RETVAL;
|
bool RETVAL;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->EntityVariableExists(id);
|
RETVAL = THIS->EntityVariableExists(id);
|
||||||
ST(0) = boolSV(RETVAL);
|
ST(0) = boolSV(RETVAL);
|
||||||
sv_2mortal(ST(0));
|
sv_2mortal(ST(0));
|
||||||
@ -842,15 +591,7 @@ XS(XS_Object_SetEntityVariable) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
Const_char *id = SvPV_nolen(ST(1));
|
Const_char *id = SvPV_nolen(ST(1));
|
||||||
const char *var = (const char *) SvPV_nolen(ST(2));
|
const char *var = (const char *) SvPV_nolen(ST(2));
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->SetEntityVariable(id, var);
|
THIS->SetEntityVariable(id, var);
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -865,15 +606,7 @@ XS(XS_Object_GetSolidType) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
uint16 RETVAL;
|
uint16 RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetSolidType();
|
RETVAL = THIS->GetSolidType();
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHu((UV) RETVAL);
|
PUSHu((UV) RETVAL);
|
||||||
@ -890,15 +623,7 @@ XS(XS_Object_SetSolidType) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
uint16 type = (uint16) SvUV(ST(1));
|
uint16 type = (uint16) SvUV(ST(1));
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->SetSolidType(type);
|
THIS->SetSolidType(type);
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -913,15 +638,7 @@ XS(XS_Object_GetSize) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
float RETVAL;
|
float RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetSize();
|
RETVAL = THIS->GetSize();
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHn((double) RETVAL);
|
PUSHn((double) RETVAL);
|
||||||
@ -938,15 +655,7 @@ XS(XS_Object_SetSize) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
float size = (float) SvNV(ST(1));
|
float size = (float) SvNV(ST(1));
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->SetSize(size);
|
THIS->SetSize(size);
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -960,15 +669,7 @@ XS(XS_Object_SetTiltX) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
float pos = (float) SvNV(ST(1));
|
float pos = (float) SvNV(ST(1));
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->SetTiltX(pos);
|
THIS->SetTiltX(pos);
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -982,15 +683,7 @@ XS(XS_Object_SetTiltY) {
|
|||||||
{
|
{
|
||||||
Object *THIS;
|
Object *THIS;
|
||||||
float pos = (float) SvNV(ST(1));
|
float pos = (float) SvNV(ST(1));
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->SetTiltY(pos);
|
THIS->SetTiltY(pos);
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -1005,15 +698,7 @@ XS(XS_Object_GetTiltX) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
float RETVAL;
|
float RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetTiltX();
|
RETVAL = THIS->GetTiltX();
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHn((double) RETVAL);
|
PUSHn((double) RETVAL);
|
||||||
@ -1030,15 +715,7 @@ XS(XS_Object_GetTiltY) {
|
|||||||
Object *THIS;
|
Object *THIS;
|
||||||
float RETVAL;
|
float RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_OBJECT;
|
||||||
if (sv_derived_from(ST(0), "Object")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Object *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Object");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetTiltY();
|
RETVAL = THIS->GetTiltY();
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHn((double) RETVAL);
|
PUSHn((double) RETVAL);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user