mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 13:41:31 +00:00
[Quest API] Perl Group Validation Macro
Add validation macro to all group methods.
This commit is contained in:
parent
9b8845949e
commit
6cfe7853f5
@ -42,6 +42,18 @@
|
|||||||
#undef THIS
|
#undef THIS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define VALIDATE_THIS_IS_GROUP \
|
||||||
|
do { \
|
||||||
|
if (sv_derived_from(ST(0), "Group")) { \
|
||||||
|
IV tmp = SvIV((SV*)SvRV(ST(0))); \
|
||||||
|
THIS = INT2PTR(Group*, tmp); \
|
||||||
|
} else { \
|
||||||
|
Perl_croak(aTHX_ "THIS is not of type Group"); \
|
||||||
|
} \
|
||||||
|
if (THIS == nullptr) { \
|
||||||
|
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash."); \
|
||||||
|
} \
|
||||||
|
} while (0);
|
||||||
|
|
||||||
XS(XS_Group_DisbandGroup); /* prototype to pass -Wmissing-prototypes */
|
XS(XS_Group_DisbandGroup); /* prototype to pass -Wmissing-prototypes */
|
||||||
XS(XS_Group_DisbandGroup) {
|
XS(XS_Group_DisbandGroup) {
|
||||||
@ -50,15 +62,7 @@ XS(XS_Group_DisbandGroup) {
|
|||||||
Perl_croak(aTHX_ "Usage: Group::DisbandGroup(THIS)");
|
Perl_croak(aTHX_ "Usage: Group::DisbandGroup(THIS)");
|
||||||
{
|
{
|
||||||
Group *THIS;
|
Group *THIS;
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->DisbandGroup();
|
THIS->DisbandGroup();
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -73,15 +77,7 @@ XS(XS_Group_IsGroupMember) {
|
|||||||
Group *THIS;
|
Group *THIS;
|
||||||
bool RETVAL;
|
bool RETVAL;
|
||||||
Mob *client;
|
Mob *client;
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
if (sv_derived_from(ST(1), "Mob")) {
|
if (sv_derived_from(ST(1), "Mob")) {
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
||||||
client = INT2PTR(Mob *, tmp);
|
client = INT2PTR(Mob *, tmp);
|
||||||
@ -106,15 +102,7 @@ XS(XS_Group_CastGroupSpell) {
|
|||||||
Group *THIS;
|
Group *THIS;
|
||||||
Mob *caster;
|
Mob *caster;
|
||||||
uint16 spellid = (uint16) SvUV(ST(2));
|
uint16 spellid = (uint16) SvUV(ST(2));
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
if (sv_derived_from(ST(1), "Mob")) {
|
if (sv_derived_from(ST(1), "Mob")) {
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
||||||
caster = INT2PTR(Mob *, tmp);
|
caster = INT2PTR(Mob *, tmp);
|
||||||
@ -137,15 +125,7 @@ XS(XS_Group_SplitExp) {
|
|||||||
Group *THIS;
|
Group *THIS;
|
||||||
uint32 exp = (uint32) SvUV(ST(1));
|
uint32 exp = (uint32) SvUV(ST(1));
|
||||||
Mob *other;
|
Mob *other;
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
if (sv_derived_from(ST(2), "Mob")) {
|
if (sv_derived_from(ST(2), "Mob")) {
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(2)));
|
IV tmp = SvIV((SV *) SvRV(ST(2)));
|
||||||
other = INT2PTR(Mob *, tmp);
|
other = INT2PTR(Mob *, tmp);
|
||||||
@ -169,15 +149,7 @@ XS(XS_Group_GroupMessage) {
|
|||||||
Mob *sender;
|
Mob *sender;
|
||||||
uint8 language;
|
uint8 language;
|
||||||
char *message;
|
char *message;
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
if (sv_derived_from(ST(1), "Mob")) {
|
if (sv_derived_from(ST(1), "Mob")) {
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
||||||
sender = INT2PTR(Mob *, tmp);
|
sender = INT2PTR(Mob *, tmp);
|
||||||
@ -210,15 +182,7 @@ XS(XS_Group_GetTotalGroupDamage) {
|
|||||||
uint32 RETVAL;
|
uint32 RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
Mob *other;
|
Mob *other;
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
if (sv_derived_from(ST(1), "Mob")) {
|
if (sv_derived_from(ST(1), "Mob")) {
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
||||||
other = INT2PTR(Mob *, tmp);
|
other = INT2PTR(Mob *, tmp);
|
||||||
@ -245,15 +209,7 @@ XS(XS_Group_SplitMoney) {
|
|||||||
uint32 silver = (uint32) SvUV(ST(2));
|
uint32 silver = (uint32) SvUV(ST(2));
|
||||||
uint32 gold = (uint32) SvUV(ST(3));
|
uint32 gold = (uint32) SvUV(ST(3));
|
||||||
uint32 platinum = (uint32) SvUV(ST(4));
|
uint32 platinum = (uint32) SvUV(ST(4));
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
THIS->SplitMoney(copper, silver, gold, platinum);
|
THIS->SplitMoney(copper, silver, gold, platinum);
|
||||||
}
|
}
|
||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
@ -267,15 +223,7 @@ XS(XS_Group_SetLeader) {
|
|||||||
{
|
{
|
||||||
Group *THIS;
|
Group *THIS;
|
||||||
Mob *newleader;
|
Mob *newleader;
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
if (sv_derived_from(ST(1), "Mob")) {
|
if (sv_derived_from(ST(1), "Mob")) {
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
||||||
newleader = INT2PTR(Mob *, tmp);
|
newleader = INT2PTR(Mob *, tmp);
|
||||||
@ -297,15 +245,7 @@ XS(XS_Group_GetLeader) {
|
|||||||
{
|
{
|
||||||
Group *THIS;
|
Group *THIS;
|
||||||
Mob *RETVAL;
|
Mob *RETVAL;
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetLeader();
|
RETVAL = THIS->GetLeader();
|
||||||
ST(0) = sv_newmortal();
|
ST(0) = sv_newmortal();
|
||||||
sv_setref_pv(ST(0), "Mob", (void *) RETVAL);
|
sv_setref_pv(ST(0), "Mob", (void *) RETVAL);
|
||||||
@ -322,15 +262,7 @@ XS(XS_Group_GetLeaderName) {
|
|||||||
Group *THIS;
|
Group *THIS;
|
||||||
const char *RETVAL;
|
const char *RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetLeaderName();
|
RETVAL = THIS->GetLeaderName();
|
||||||
sv_setpv(TARG, RETVAL);
|
sv_setpv(TARG, RETVAL);
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
@ -347,15 +279,7 @@ XS(XS_Group_SendHPPacketsTo) {
|
|||||||
{
|
{
|
||||||
Group *THIS;
|
Group *THIS;
|
||||||
Mob *newmember;
|
Mob *newmember;
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
if (sv_derived_from(ST(1), "Mob")) {
|
if (sv_derived_from(ST(1), "Mob")) {
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
||||||
newmember = INT2PTR(Mob *, tmp);
|
newmember = INT2PTR(Mob *, tmp);
|
||||||
@ -377,15 +301,7 @@ XS(XS_Group_SendHPPacketsFrom) {
|
|||||||
{
|
{
|
||||||
Group *THIS;
|
Group *THIS;
|
||||||
Mob *newmember;
|
Mob *newmember;
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
if (sv_derived_from(ST(1), "Mob")) {
|
if (sv_derived_from(ST(1), "Mob")) {
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
||||||
newmember = INT2PTR(Mob *, tmp);
|
newmember = INT2PTR(Mob *, tmp);
|
||||||
@ -408,15 +324,7 @@ XS(XS_Group_IsLeader) {
|
|||||||
Group *THIS;
|
Group *THIS;
|
||||||
bool RETVAL;
|
bool RETVAL;
|
||||||
Mob *leadertest;
|
Mob *leadertest;
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
if (sv_derived_from(ST(1), "Mob")) {
|
if (sv_derived_from(ST(1), "Mob")) {
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
||||||
leadertest = INT2PTR(Mob *, tmp);
|
leadertest = INT2PTR(Mob *, tmp);
|
||||||
@ -441,15 +349,7 @@ XS(XS_Group_GroupCount) {
|
|||||||
Group *THIS;
|
Group *THIS;
|
||||||
uint8 RETVAL;
|
uint8 RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GroupCount();
|
RETVAL = THIS->GroupCount();
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHu((UV) RETVAL);
|
PUSHu((UV) RETVAL);
|
||||||
@ -466,15 +366,7 @@ XS(XS_Group_GetHighestLevel) {
|
|||||||
Group *THIS;
|
Group *THIS;
|
||||||
uint32 RETVAL;
|
uint32 RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
RETVAL = THIS->GetHighestLevel();
|
RETVAL = THIS->GetHighestLevel();
|
||||||
XSprePUSH;
|
XSprePUSH;
|
||||||
PUSHu((UV) RETVAL);
|
PUSHu((UV) RETVAL);
|
||||||
@ -495,15 +387,7 @@ XS(XS_Group_TeleportGroup) {
|
|||||||
float y = (float) SvNV(ST(4));
|
float y = (float) SvNV(ST(4));
|
||||||
float z = (float) SvNV(ST(5));
|
float z = (float) SvNV(ST(5));
|
||||||
float heading = (float) SvNV(ST(6));
|
float heading = (float) SvNV(ST(6));
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
if (sv_derived_from(ST(1), "Mob")) {
|
if (sv_derived_from(ST(1), "Mob")) {
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
IV tmp = SvIV((SV *) SvRV(ST(1)));
|
||||||
sender = INT2PTR(Mob *, tmp);
|
sender = INT2PTR(Mob *, tmp);
|
||||||
@ -526,15 +410,7 @@ XS(XS_Group_GetID) {
|
|||||||
Group *THIS;
|
Group *THIS;
|
||||||
uint32 RETVAL;
|
uint32 RETVAL;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
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);
|
||||||
@ -552,15 +428,7 @@ XS(XS_Group_GetMember) {
|
|||||||
Mob *member;
|
Mob *member;
|
||||||
Client *RETVAL = nullptr;
|
Client *RETVAL = nullptr;
|
||||||
dXSTARG;
|
dXSTARG;
|
||||||
|
VALIDATE_THIS_IS_GROUP;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
int index = (int) SvUV(ST(1));
|
int index = (int) SvUV(ST(1));
|
||||||
if (index < 0 || index > 5)
|
if (index < 0 || index > 5)
|
||||||
RETVAL = nullptr;
|
RETVAL = nullptr;
|
||||||
@ -584,14 +452,7 @@ XS(XS_Group_DoesAnyMemberHaveExpeditionLockout) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Group* THIS = nullptr;
|
Group* THIS = nullptr;
|
||||||
if (sv_derived_from(ST(0), "Group")) {
|
VALIDATE_THIS_IS_GROUP;
|
||||||
IV tmp = SvIV((SV *) SvRV(ST(0)));
|
|
||||||
THIS = INT2PTR(Group *, tmp);
|
|
||||||
} else
|
|
||||||
Perl_croak(aTHX_ "THIS is not of type Group");
|
|
||||||
if (THIS == nullptr)
|
|
||||||
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
|
|
||||||
|
|
||||||
std::string expedition_name(SvPV_nolen(ST(1)));
|
std::string expedition_name(SvPV_nolen(ST(1)));
|
||||||
std::string event_name(SvPV_nolen(ST(2)));
|
std::string event_name(SvPV_nolen(ST(2)));
|
||||||
int max_check_count = (items == 4) ? static_cast<int>(SvIV(ST(3))) : 0;
|
int max_check_count = (items == 4) ? static_cast<int>(SvIV(ST(3))) : 0;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user