// (c) Electronic Arts.  All Rights Reserved.
//
// EATypeOf/internal/linkid.h
//
// LinkID<T>::ID() returns a unique pointer for the supplied T.  This address is
// assigned at link-time and is therefore not suitable for DLL builds.
//
// David Bollo (mailto:dbollo@ea.com)
 
#ifndef EATYPEOF_INTERNAL_LINKID_H
#define EATYPEOF_INTERNAL_LINKID_H


namespace EA		{
namespace Type		{
namespace internal	{


template <typename T> class LinkID
{
public:
	static uintptr_t ID()
	{
		static unsigned int unique_address;
		return reinterpret_cast<uintptr_t>(&unique_address);
	}
};


}
}
}


#endif
