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