bool T::Register(T##Id id, T##Creator c, const char *name) { \
DBG(#T "::Register(..., %s)\n", name); \
} \
T* T::create(const char* name) { return T::create(T::id(name));} \
T##Id* T::next(T##Id *id) { \
if (!id) return (T##Id*)&ids[0]; \
T##Id *id0 = (T##Id*)&ids[0], *id1 = (T##Id*)&ids[ids.size() - 1]; \
if (id >= id0 && id < id1) return id + 1; \
if (id == id1) return NULL; \
std::vector<T##Id>::const_iterator it = std::find(ids.begin(), ids.end(), *
id); \
if (it == ids.end()) return NULL; \
return (T##Id*)&*(it++); \
} \
T##Id T::id(
const char* name) {
DBG(#T
"::id(\"%s\")\n", name);
return T##
Factory::Instance().id(name,
false);} \
#define DBG(fmt,...)
Definition: singleton.h:33
ID id(const char *name, bool caseSensitive=true) const
Definition: factory.h:169
static Class & Instance()
Definition: singleton.h:75