Blob Blame Raw
#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