19 #ifndef __kgenericfactory_h__
20 #define __kgenericfactory_h__
22 #include <klibloader.h>
23 #include <ktypelist.h>
24 #include <kinstance.h>
25 #include <kgenericfactory.tcc>
32 class KGenericFactoryBase
35 KGenericFactoryBase(
const char *instanceName )
36 : m_instanceName( instanceName )
40 m_catalogueInitialized =
false;
46 m_catalogueInitialized =
false;
49 virtual ~KGenericFactoryBase()
65 if ( m_instanceName.isEmpty() ) {
66 kdWarning() <<
"KGenericFactory: instance requested but no instance name or about data passed to the constructor!" <<
endl;
72 virtual void setupTranslations(
void )
78 void initializeMessageCatalogue()
80 if ( !m_catalogueInitialized )
82 m_catalogueInitialized =
true;
88 TQCString m_instanceName;
90 bool m_catalogueInitialized;
93 static KGenericFactoryBase<T> *s_self;
98 KInstance *KGenericFactoryBase<T>::s_instance = 0;
102 KGenericFactoryBase<T> *KGenericFactoryBase<T>::s_self = 0;
106 KInstance *KGenericFactoryBase<T>::instance()
108 if ( !s_instance && s_self )
109 s_instance = s_self->createInstance();
172 template <
class Product,
class ParentType = TQObject>
177 : KGenericFactoryBase<Product>( instanceName )
184 : KGenericFactoryBase<Product>( data )
190 const char *className,
const TQStringList &args )
192 KGenericFactoryBase<Product>::initializeMessageCatalogue();
193 return TQT_TQOBJECT((KDEPrivate::ConcreteFactory<Product, ParentType>
194 ::
create( 0, 0, parent, name, className, args )));
265 template <
class Product,
class ProductListTail>
268 public KGenericFactoryBase< KTypeList<Product, ProductListTail> >
272 : KGenericFactoryBase< KTypeList<Product, ProductListTail> >( instanceName )
279 : KGenericFactoryBase<
KTypeList<Product, ProductListTail> >( data )
285 const char *className,
const TQStringList &args )
287 this->initializeMessageCatalogue();
288 return KDEPrivate::MultiFactory< KTypeList< Product, ProductListTail > >
289 ::create( 0, 0, parent, name, className, args );
360 template <
class Product,
class ProductListTail,
361 class ParentType,
class ParentTypeListTail>
363 KTypeList<ParentType, ParentTypeListTail> >
365 public KGenericFactoryBase< KTypeList<Product, ProductListTail> >
369 : KGenericFactoryBase< KTypeList<Product, ProductListTail> >( instanceName )
375 : KGenericFactoryBase<
KTypeList<Product, ProductListTail> >( data )
381 const char *className,
const TQStringList &args )
383 this->initializeMessageCatalogue();
384 return KDEPrivate::MultiFactory< KTypeList< Product, ProductListTail >,