19#ifndef __kgenericfactory_h__
20#define __kgenericfactory_h__
22#include <klibloader.h>
25#include <kgenericfactory.tcc>
32class 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;
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>
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>
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 );
360template <
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 >,
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)
This template provides a generic implementation of a KLibFactory , for use with shared library compon...
virtual TQObject * createObject(TQObject *parent, const char *name, const char *className, const TQStringList &args)
Creates a new object.
KGenericFactory(const TDEAboutData *data)
If you develop a library that is to be loaded dynamically at runtime, then you should return a pointe...
TQObject * create(TQObject *parent=0, const char *name=0, const char *classname="TQObject", const TQStringList &args=TQStringList())
Creates a new object.
This class is used to store information about a program.
static TDELocale * locale()
Returns the global locale object.
Access to KDE 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.
TDEInstance * instance()
Shortcut to KNotifyClient::Instance::current() :)
The building block of typelists of any length.