eqemu-server/zone/perl_perlpacket.cpp
hg 7e8a24fcec
[Quest API] Use binding library for perl apis (#2216)
* Add perlbind library

* Convert perl apis to perlbind
2022-07-03 21:33:45 -05:00

153 lines
3.8 KiB
C++

#include "../common/features.h"
#ifdef EMBPERL_XS_CLASSES
#include "../common/global_define.h"
#include "../common/types.h"
#include "embperl.h"
#include "perlpacket.h"
PerlPacket* Perl_PerlPacket_new(const char* class_name)
{
return new PerlPacket();
}
PerlPacket* Perl_PerlPacket_new(const char* class_name, const char* opcode)
{
return new PerlPacket(opcode);
}
PerlPacket* Perl_PerlPacket_new(const char* class_name, const char* opcode, uint32_t len)
{
return new PerlPacket(opcode, len);
}
void Perl_PerlPacket_DESTROY(PerlPacket* self)
{
delete self;
}
bool Perl_PerlPacket_SetOpcode(PerlPacket* self, const char* opcode)
{
return self->SetOpcode(opcode);
}
void Perl_PerlPacket_Resize(PerlPacket* self, uint32_t len)
{
self->Resize(len);
}
void Perl_PerlPacket_SendTo(PerlPacket* self, Client* who)
{
self->SendTo(who);
}
void Perl_PerlPacket_SendToAll(PerlPacket* self)
{
self->SendToAll();
}
void Perl_PerlPacket_Zero(PerlPacket* self)
{
self->Zero();
}
void Perl_PerlPacket_FromArray(PerlPacket* self, perl::reference avref, uint32_t length)
{
perl::array av_numbers = avref;
int* numbers = new int[av_numbers.size()];
for (int i = 0; i < av_numbers.size(); ++i)
{
numbers[i] = av_numbers[i];
}
self->FromArray(numbers, length);
delete[] numbers;
}
void Perl_PerlPacket_SetByte(PerlPacket* self, uint32_t pos, uint8_t val)
{
self->SetByte(pos, val);
}
void Perl_PerlPacket_SetShort(PerlPacket* self, uint32_t pos, uint16_t val)
{
self->SetShort(pos, val);
}
void Perl_PerlPacket_SetLong(PerlPacket* self, uint32_t pos, uint32_t val)
{
self->SetLong(pos, val);
}
void Perl_PerlPacket_SetFloat(PerlPacket* self, uint32_t pos, float val)
{
self->SetFloat(pos, val);
}
void Perl_PerlPacket_SetString(PerlPacket* self, uint32_t pos, char* str)
{
self->SetString(pos, str);
}
void Perl_PerlPacket_SetEQ1319(PerlPacket* self, uint32_t pos, float part13, float part19)
{
self->SetEQ1319(pos, part13, part19);
}
void Perl_PerlPacket_SetEQ1913(PerlPacket* self, uint32_t pos, float part19, float part13)
{
self->SetEQ1913(pos, part19, part13);
}
uint8_t Perl_PerlPacket_GetByte(PerlPacket* self, uint32_t pos)
{
return self->GetByte(pos);
}
uint16_t Perl_PerlPacket_GetShort(PerlPacket* self, uint32_t pos)
{
return self->GetShort(pos);
}
uint32_t Perl_PerlPacket_GetLong(PerlPacket* self, uint32_t pos)
{
return self->GetLong(pos);
}
float Perl_PerlPacket_GetFloat(PerlPacket* self, uint32_t pos)
{
return self->GetFloat(pos);
}
void perl_register_perlpacket()
{
perl::interpreter perl(PERL_GET_THX);
auto package = perl.new_class<PerlPacket>("PerlPacket");
package.add("DESTROY", &Perl_PerlPacket_DESTROY);
package.add("FromArray", &Perl_PerlPacket_FromArray);
package.add("GetByte", &Perl_PerlPacket_GetByte);
package.add("GetFloat", &Perl_PerlPacket_GetFloat);
package.add("GetLong", &Perl_PerlPacket_GetLong);
package.add("GetShort", &Perl_PerlPacket_GetShort);
package.add("Resize", &Perl_PerlPacket_Resize);
package.add("SendTo", &Perl_PerlPacket_SendTo);
package.add("SendToAll", &Perl_PerlPacket_SendToAll);
package.add("SetByte", &Perl_PerlPacket_SetByte);
package.add("SetEQ1319", &Perl_PerlPacket_SetEQ1319);
package.add("SetEQ1913", &Perl_PerlPacket_SetEQ1913);
package.add("SetFloat", &Perl_PerlPacket_SetFloat);
package.add("SetLong", &Perl_PerlPacket_SetLong);
package.add("SetOpcode", &Perl_PerlPacket_SetOpcode);
package.add("SetShort", &Perl_PerlPacket_SetShort);
package.add("SetString", &Perl_PerlPacket_SetString);
package.add("Zero", &Perl_PerlPacket_Zero);
package.add("new", (PerlPacket*(*)(const char*))&Perl_PerlPacket_new);
package.add("new", (PerlPacket*(*)(const char*, const char*))&Perl_PerlPacket_new);
package.add("new", (PerlPacket*(*)(const char*, const char*, uint32_t))&Perl_PerlPacket_new);
}
#endif //EMBPERL_XS_CLASSES