Нет я не про это. У луа есть и методы в полноценном понимании и функции таблицы.
То есть вызов packet.read8() это вызов функции из таблицы, а packet:read8() вызов метода.
У меня например было так.
Код:
PacketParser::PacketParser(const Packet* aPkt)
{
pkt=aPkt;
L = lua_open();
luaL_openlibs(L);
luabind::open(L);
module(L)
[
class_<PacketParser>("CPacket")
.def("Opcode", &PacketParser::GetOpcode)
.def("OpcodeName", &PacketParser::GetOpcodeName)
.def("ReadInt32", &PacketParser::ReadInt32)
.def("ReadUInt32", &PacketParser::ReadInt32)
.def("ReadInt64", &PacketParser::ReadInt64)
.def("ReadUInt64", &PacketParser::ReadInt64)
.def("ReadString", &PacketParser::ReadString)
.def("ReadByte", &PacketParser::ReadByte)
.def("ReadBytes", &PacketParser::ReadBytes)
.def("DeCompress", &PacketParser::DeCompress)
.def("HexPrint", &PacketParser::HexPrint)
];
globals(L)["Packet"] = this;
А в луа использовал вот так соответственно.
Код:
local addon_count=Packet:ReadInt32();