19#ifndef __kgenericfactory_h__
20#define __kgenericfactory_h__
22#include <klibloader.h>
24#include <tdeinstance.h>
25#include <kgenericfactory.tcc>
32class KGenericFactoryBase
35 KGenericFactoryBase(
const char *instanceName )
36 : m_instanceName( instanceName )
40 m_catalogueInitialized =
false;
42 KGenericFactoryBase(
const TDEAboutData *data )
46 m_catalogueInitialized =
false;
49 virtual ~KGenericFactoryBase()
58 static TDEInstance *instance();
61 virtual TDEInstance *createInstance()
64 return new TDEInstance( m_aboutData );
65 if ( m_instanceName.isEmpty() ) {
66 kdWarning() <<
"KGenericFactory: instance requested but no instance name or about data passed to the constructor!" <<
endl;
69 return new TDEInstance( m_instanceName );
72 virtual void setupTranslations(
void )
78 void initializeMessageCatalogue()
80 if ( !m_catalogueInitialized )
82 m_catalogueInitialized =
true;
88 TQCString m_instanceName;
89 const TDEAboutData *m_aboutData;
90 bool m_catalogueInitialized;
92 static TDEInstance *s_instance;
93 static KGenericFactoryBase<T> *s_self;
102KGenericFactoryBase<T> *KGenericFactoryBase<T>::s_self = 0;
108 if ( !s_instance && s_self )
109 s_instance = s_self->createInstance();
172template <
class Product,
class ParentType = TQObject>
173class KGenericFactory :
public KLibFactory,
public KGenericFactoryBase<Product>
176 KGenericFactory(
const char *instanceName = 0 )
177 : KGenericFactoryBase<Product>( instanceName )
184 : KGenericFactoryBase<Product>( data )
190 const char *className,
const TQStringList &args )
192 KGenericFactoryBase<Product>::initializeMessageCatalogue();
193 return (KDEPrivate::ConcreteFactory<Product, ParentType>
194 ::create( 0, 0, parent, name, className, args ));
265template <
class Product,
class ProductListTail>
266class KGenericFactory<
KTypeList<Product, ProductListTail>, TQObject >
268 public KGenericFactoryBase< KTypeList<Product, ProductListTail> >
271 KGenericFactory(
const char *instanceName = 0 )
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 );
360template <
class Product,
class ProductListTail,
361 class ParentType,
class ParentTypeListTail>
362class KGenericFactory<
KTypeList<Product, ProductListTail>,
363 KTypeList<ParentType, ParentTypeListTail> >
365 public KGenericFactoryBase< KTypeList<Product, ProductListTail> >
368 KGenericFactory(
const char *instanceName = 0 )
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 >,
KGenericFactory(const TDEAboutData *data)
virtual TQObject * createObject(TQObject *parent, const char *name, const char *className, const TQStringList &args)
Creates a new object.
virtual TQObject * createObject(TQObject *parent, const char *name, const char *className, const TQStringList &args)
Creates a new object.
KGenericFactory(const TDEAboutData *data)
virtual TQObject * createObject(TQObject *parent, const char *name, const char *className, const TQStringList &args)
Creates a new object.
KGenericFactory(const TDEAboutData *data)
TQObject * create(TQObject *parent=0, const char *name=0, const char *classname="TQObject", const TQStringList &args=TQStringList())
Creates a new object.
KLibFactory(TQObject *parent=0, const char *name=0)
Create a new factory.
This class is used to store information about a program.
static TDELocale * locale()
Returns the global locale object.
Access to TDE global objects for use in shared libraries.
void removeCatalogue(const TQString &catalog)
Removes a catalog for translation lookup.
void insertCatalogue(const TQString &catalog)
Adds another catalog to search for translation lookup.
kndbgstream & endl(kndbgstream &s)
Does nothing.
The building block of typelists of any length.