mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-15 16:41:29 +00:00
Merge pull request #1208 from EQEmu/perl_hate_macro
[Quest API] Perl Hate Validation Macro
This commit is contained in:
commit
ddfc0dda42
@ -35,6 +35,19 @@
|
|||||||
#undef THIS
|
#undef THIS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define VALIDATE_THIS_IS_HATE \
|
||||||
|
do { \
|
||||||
|
if (sv_derived_from(ST(0), "HateEntry")) { \
|
||||||
|
IV tmp = SvIV((SV*)SvRV(ST(0))); \
|
||||||
|
THIS = INT2PTR(struct_HateList*, tmp); \
|
||||||
|
} else { \
|
||||||
|
Perl_croak(aTHX_ "THIS is not of type HateEntry"); \
|
||||||
|
} \
|
||||||
|
if (THIS == nullptr) { \
|
||||||
|
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash."); \
|
||||||
|
} \
|
||||||
|
} while (0);
|
||||||
|
|
||||||
XS(XS_HateEntry_GetEnt); /* prototype to pass -Wmissing-prototypes */
|
XS(XS_HateEntry_GetEnt); /* prototype to pass -Wmissing-prototypes */
|
||||||
XS(XS_HateEntry_GetEnt) {
|
XS(XS_HateEntry_GetEnt) {
|
||||||
dXSARGS;
|
dXSARGS;
|
||||||
@ -43,15 +56,7 @@ XS(XS_HateEntry_GetEnt) {
|
|||||||
{
|
{
|
||||||
struct_HateList *THIS;
|
struct_HateList *THIS;
|
||||||
Mob *RETVAL;
|
Mob *RETVAL;
|
||||||
|
VALIDATE_THIS_IS_HATE;
|
||||||
if (sv_derived_from(ST(0), "HateEntry")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(struct_HateList *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type tHateEntry");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->entity_on_hatelist;
|
RETVAL = THIS->entity_on_hatelist;
|
||||||
ST(0) = sv_newmortal();
|
ST(0) = sv_newmortal();
|
||||||
sv_setref_pv(ST(0), "Mob", (void *) RETVAL);
|
sv_setref_pv(ST(0), "Mob", (void *) RETVAL);
|
||||||
@ -68,15 +73,7 @@ XS(XS_HateEntry_GetHate) {
|
|||||||
struct_HateList *THIS;
|
struct_HateList *THIS;
|
||||||
int32 RETVAL;
|
int32 RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_HATE;
|
||||||
if (sv_derived_from(ST(0), "HateEntry")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(struct_HateList *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type tHateEntry");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->stored_hate_amount;
|
RETVAL = THIS->stored_hate_amount;
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHi((IV) RETVAL);
|
PUSHi((IV) RETVAL);
|
||||||
@ -93,15 +90,7 @@ XS(XS_HateEntry_GetDamage) {
|
|||||||
struct_HateList *THIS;
|
struct_HateList *THIS;
|
||||||
int32 RETVAL;
|
int32 RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_HATE;
|
||||||
if (sv_derived_from(ST(0), "HateEntry")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(struct_HateList *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type tHateEntry");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->hatelist_damage;
|
RETVAL = THIS->hatelist_damage;
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHi((IV) RETVAL);
|
PUSHi((IV) RETVAL);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user