#ifndef TMENULIST_H #define TMENULIST_H #include "pso/forward.h" #include "pso/protocol.h" #include "pso/macros.h" #include "pso/TArray.h" #include "pso/TPlyGuildCardTag.h" #include template class TMenuListEntry : public TPlyGuildCardTag { public: T entry; TMenuListEntry() : TPlyGuildCardTag() {}; void bswap(); void assign(const TMenuListEntry &src); TMenuListEntry &operator=(const TMenuListEntry &src) { _assign(src); return *this; }; private: void _assign(const TMenuListEntry &src); } __packed__; template class TMenuList { public: packet_header header; TArray, num_pad_entries> pad_entries; TArray, num_entries> entries; void bswap(); TMenuList &assign(const TMenuList &src); } __packed__; template class TMenuList { public: packet_header header; TArray, num_entries> entries; void bswap(); TMenuList &assign(const TMenuList &src); } __packed__; template class TMenuList { public: packet_header header; TArray, num_pad_entries> pad_entries; void bswap(); TMenuList &assign(const TMenuList &src); } __packed__; template void TMenuList::bswap() { header.bswap(); for (int i = 0; i < num_entries; i++) { entries[i].bswap(); } } template void TMenuList::bswap() { header.bswap(); for (int i = 0; i < num_pad_entries; i++) { pad_entries[i].bswap(); } } template void TMenuList::bswap() { header.bswap(); if (num_pad_entries) { for (int i = 0; i < num_pad_entries; i++) { pad_entries[i].bswap(); } } if (num_entries) { for (int i = 0; i < num_entries; i++) { entries[i].bswap(); } } } template void TMenuListEntry::bswap() { TPlyGuildCardTag::bswap(); entry.bswap(); } template TMenuList &TMenuList::assign(const TMenuList &src) { *this = src; return *this; } template TMenuList &TMenuList::assign(const TMenuList &src) { *this = src; return *this; } template TMenuList &TMenuList::assign(const TMenuList &src) { *this = src; return *this; } template void TMenuListEntry::_assign(const TMenuListEntry &src) { TPlyGuildCardTag::assign(src); entry = src.entry; } template void TMenuListEntry::assign(const TMenuListEntry &src) { TPlyGuildCardTag::operator=(src); entry = src.entry; } #endif