#ifndef ADDRESS_H
#define ADDRESS_H
#include <string>
class Address {
public:
enum Type {
NONE,
COMMON_STRING,
SOCKET,
};
Type type;
std::string text;
char data[512];
inline Address(): type(NONE), data() { }
template<typename T>
inline const T& as() const
{ assert(sizeof(T) < sizeof(data)); return *reinterpret_cast<const T*>(data); }
template<typename T>
inline T& as() const
{ assert(sizeof(T) < sizeof(data)); return *reinterpret_cast<T*>(data); }
};
#endif