21 lines
739 B
C++
21 lines
739 B
C++
#include "network/aopacket.h"
|
|
|
|
class PacketFactory
|
|
{
|
|
public:
|
|
// thingy here to register/map strings to constructors
|
|
static AOPacket *createPacket(QString header, QStringList contents);
|
|
static AOPacket *createPacket(QString raw_packet);
|
|
template <typename T>
|
|
static void registerClass(QString header) { class_map[header] = &createInstance<T>; };
|
|
|
|
private:
|
|
template <typename T>
|
|
static AOPacket *createInstance(QStringList contents) { return new T(contents); };
|
|
template <typename T>
|
|
static AOPacket *createInstance(QString header, QStringList contents) { return new T(header, contents); };
|
|
typedef std::map<QString, AOPacket *(*)(QStringList)> type_map;
|
|
|
|
static inline type_map class_map;
|
|
};
|