} //#define ENTRYX1(nic, name, defparam, decl) factory.register_device( decl (pstring(# name), pstring(xstr(nic)), pstring(defparam)) ); static void ENTRYX(factory.constructor_ptr_t decl, string nic, string name, string defparam) { ENTRYX1("nld_" + nic, name, defparam, decl); } //#define ENTRYX(nic, name, defparam) { NETLIB_DEVICE_DECL(nic) ENTRYX1(NETLIB_NAME(nic), name, defparam, decl_ ## nic) }
} //#define LIB_DECL(decl) factory.add( decl () ); static void LIB_ENTRY(string nic, factory.constructor_ptr_t decl) { LIB_DECL(decl); } //#define LIB_ENTRY(nic) { NETLIB_DEVICE_DECL(nic); LIB_DECL(decl_ ## nic) }
//#define xstr(s) # s //#define NETLIB_DEVICE_DECL(chip) extern factory::constructor_ptr_t decl_ ## chip; static void ENTRYX1(string nic, string name, string defparam, factory.constructor_ptr_t decl) { initialize_factory_factory.register_device(decl(name, nic, defparam)); } //#define ENTRYX1(nic, name, defparam, decl) factory.register_device( decl (pstring(# name), pstring(xstr(nic)), pstring(defparam)) );
//#define xstr(s) # s //#define NETLIB_DEVICE_DECL(chip) extern factory::constructor_ptr_t decl_ ## chip; static void LIB_DECL(factory.constructor_ptr_t decl) { initialize_factory_factory.add(decl()); } //#define LIB_DECL(decl) factory.add( decl () );