28 virtual ~FactoryBase();
36 void setDefaultName(
int idx);
39 const char* getDefaultName()
const;
46 const char* currentName()
const;
58 void setNames(
int,
const char*,
const uiString&);
119 typedef T* (*Creator)();
120 inline void addCreator(Creator,
const char* nm,
130 inline T*
create(
const char* nm)
const;
186 template <
class T,
class P>
190 typedef T* (*Creator)(
P);
191 inline void addCreator(Creator,
const char* nm=0,
200 inline T*
create(
const char* nm,
P,
bool chknm=
true)
const;
213 template <
class T,
class P0,
class P1>
217 typedef T* (*Creator)(P0,P1);
218 inline void addCreator(Creator,
const char* nm=0,
226 inline T*
create(
const char* nm, P0, P1,
227 bool chknm=
true)
const;
240 template <
class T,
class P0,
class P1,
class P2>
244 typedef T* (*Creator)(P0,P1,P2);
245 inline void addCreator(Creator,
const char* nm=0,
253 inline T*
create(
const char* nm, P0, P1, P2,
254 bool chknm=
true)
const;
263 #define mDefaultFactoryStringImpl \ 264 const char* factoryKeyword() const { return sFactoryKeyword(); } \ 265 uiString factoryDisplayName() const \ 266 { return sFactoryDisplayName(); } 268 #define mDefaultStaticFactoryStringDeclaration \ 269 static const char* sFactoryKeyword(); \ 270 static uiString sFactoryDisplayName() 272 #define mDefaultFactoryInitClassImpl( baseclss, createfunc ) \ 274 baseclss::factory().addCreator(createfunc,sFactoryKeyword(), \ 275 sFactoryDisplayName()); \ 278 #define mDefaultFactoryInstanciationBase( keywrd, usernm ) \ 279 mDefaultFactoryStringImpl \ 280 static const char* sFactoryKeyword() { return keywrd; } \ 281 static uiString sFactoryDisplayName() { return usernm; } \ 282 static void initClass() 284 #define mDefaultFactoryCreatorImpl( baseclss, clss ) \ 285 static baseclss* createInstance() { return new clss; } \ 287 #define mDefaultFactoryInstantiation( baseclss, clss, keywrd, usernm ) \ 288 mDefaultFactoryCreatorImpl( baseclss, clss ); \ 289 mDefaultFactoryInstanciationBase( keywrd, usernm ) \ 290 mDefaultFactoryInitClassImpl( baseclss, createInstance ) 293 #define mDefaultFactoryCreatorImpl1Param( baseclss, clss, parclss ) \ 294 static baseclss* createInstance( parclss p1 ) \ 295 { return new clss( p1 ); } 297 #define mDefaultFactoryInstantiation1Param( baseclss, clss, parclss,\ 299 mDefaultFactoryCreatorImpl1Param( baseclss, clss, parclss ) \ 300 mDefaultFactoryInstanciationBase( keywrd, usernm ) \ 301 mDefaultFactoryInitClassImpl( baseclss, createInstance ) 303 #define mDefaultFactoryCreatorImpl2Param( baseclss, clss, parclss1, parclss2 ) \ 304 static baseclss* createInstance( parclss1 p1, parclss2 p2 ) \ 305 { return new clss( p1, p2 ); } 307 #define mDefaultFactoryInstantiation2Param( baseclss, clss, parclss1,\ 308 parclss2, keywrd, usernm ) \ 309 mDefaultFactoryCreatorImpl2Param( baseclss, clss, parclss1, parclss2 ) \ 310 mDefaultFactoryInstanciationBase( keywrd, usernm ) \ 311 mDefaultFactoryInitClassImpl( baseclss, createInstance ) 314 #define mCreateImpl( donames, createfunc ) \ 315 currentname_.getObject() = name; \ 318 const int idx = indexOf( name ); \ 321 errmsgs_.getObject() = "Name "; \ 322 errmsgs_.getObject().add( name ).add(" not found.\n" ) \ 323 .add( "Perhaps all plugins are not loaded\n" );\ 329 for ( int idx=0; idx<creators_.size(); idx++ ) \ 331 T* res = createfunc; \ 332 if ( res ) return res; \ 338 #define mAddCreator \ 339 const int idx = indexOf( name );\ 343 addNames( name, username ); \ 348 setNames( idx, name, username ); \ 349 creators_[idx] = cr;\ 352 template <
class T>
inline 356 if ( !name )
return;\
361 template <
class T>
inline 368 template <
class T,
class P>
inline 376 template <
class T,
class P>
inline 383 template <
class T,
class P0,
class P1>
inline 391 template <
class T,
class P0,
class P1>
inline 399 template <
class T,
class P0,
class P1,
class P2>
inline 407 template <
class T,
class P0,
class P1,
class P2>
inline 415 #define mDefineFactory( mod, T, funcname ) \ 416 mGlobal(mod) ::Factory<T>& funcname() 419 #define mDefineFactoryInClasswKW( T, funcname, kw ) \ 420 static ::Factory<T>& funcname(); \ 421 virtual uiString factoryDisplayName() const \ 422 { return ::toUiString( factoryKeyword() ); } \ 423 virtual const char* factoryKeyword() const { return kw; } 424 #define mDefineFactoryInClass( T, funcname ) \ 425 mDefineFactoryInClasswKW( T, funcname, 0 ) 428 #define mImplFactory( T, funcname ) \ 429 ::Factory<T>& funcname() \ 431 mDefineStaticLocalObject(PtrMan< ::Factory<T> >,inst,(new ::Factory<T>)); \ 436 #define mDefineFactory1Param( mod, T, P, funcname ) \ 437 mGlobal(mod) ::Factory1Param<T,P>& funcname() 440 #define mDefineFactory1ParamInClasswKW( T, P, funcname, kw ) \ 441 static ::Factory1Param<T,P>& funcname(); \ 442 virtual uiString factoryDisplayName() const \ 443 { return ::toUiString(factoryKeyword()); } \ 444 virtual const char* factoryKeyword() const { return kw; } 445 #define mDefineFactory1ParamInClass( T, P, funcname ) \ 446 mDefineFactory1ParamInClasswKW( T, P, funcname, 0 ) 448 #define mImplFactory1Param( T, P, funcname ) \ 449 ::Factory1Param<T,P>& funcname() \ 451 mLockStaticInitLock( static_inst_lck__ ); \ 452 static PtrMan< ::Factory1Param<T,P> > \ 453 inst(new ::Factory1Param<T,P>); \ 454 mUnlockStaticInitLock( static_inst_lck__ ); \ 460 #define mDefineFactory2Param( mod, T, P0, P1, funcname ) \ 461 mGlobal(mod) ::Factory2Param<T,P0,P1>& funcname() 464 #define mDefineFactory2ParamInClasswKW( T, P0, P1, funcname, kw ) \ 465 static ::Factory2Param<T,P0,P1>& funcname(); \ 466 virtual uiString factoryDisplayName() const \ 467 { return ::toUiString( factoryKeyword() ); } \ 468 virtual const char* factoryKeyword() const { return kw; } 469 #define mDefineFactory2ParamInClass( T, P0, P1, funcname ) \ 470 mDefineFactory2ParamInClasswKW( T, P0, P1, funcname, 0 ) 473 #define mImplFactory2Param( T, P0, P1, funcname ) \ 474 ::Factory2Param<T,P0,P1>& funcname() \ 476 mLockStaticInitLock( static_inst_lck__ ); \ 477 static PtrMan< ::Factory2Param<T,P0,P1> > \ 478 inst(new ::Factory2Param<T,P0,P1>); \ 479 mUnlockStaticInitLock( static_inst_lck__ ); \ 485 #define mDefineFactory3Param( mod, T, P0, P1, P2, funcname ) \ 486 mGlobal(mod) ::Factory3Param<T,P0,P1,P2>& funcname() 489 #define mDefineFactory3ParamInClasswKW( T, P0, P1, P2, funcname, kw ) \ 490 static ::Factory3Param<T,P0,P1,P2>& funcname(); \ 491 virtual uiString factoryDisplayName() const \ 492 { return ::toUiString( factoryKeyword() ); } \ 493 virtual const char* factoryKeyword() const { return kw; } 494 #define mDefineFactory3ParamInClass( T, P0, P1, P2, funcname ) \ 495 mDefineFactory3ParamInClasswKW( T, P0, P1, P2, funcname, 0 ) 498 #define mImplFactory3Param( T, P0, P1, P2,funcname ) \ 499 ::Factory3Param<T,P0,P1,P2>& funcname() \ 501 mLockStaticInitLock( static_inst_lck__ ); \ 502 static PtrMan< ::Factory3Param<T,P0,P1,P2> > \ 503 inst(new ::Factory3Param<T,P0,P1,P2>); \ 504 mUnlockStaticInitLock( static_inst_lck__ ); \ #define mExpClass(module)
Definition: commondefs.h:157
Subclass of FactoryBase.
Definition: factory.h:214
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
TypeSet< Creator > creators_
Definition: factory.h:134
void addCreator(Creator, const char *nm=0, const uiString &usernm=uiString::emptyString())
Definition: factory.h:369
Generalized static factory that can deliver instances of T, when no variable is needed in the creatio...
Definition: factory.h:116
BufferString defaultname_
Definition: factory.h:68
T * create(const char *nm, P0, P1, P2, bool chknm=true) const
Definition: factory.h:408
#define mAddCreator
Definition: factory.h:338
static const uiString & emptyString()
Definition: uistring.h:107
BufferStringSet names_
Definition: factory.h:65
Definition: uistring.h:88
Set of BufferString objects.
Definition: bufstringset.h:25
ObjectSet< T >::size_type indexOf(const ObjectSet< T > &os, const S &val)
Locate object in set.
Definition: objectset.h:173
T * create(const char *nm, P0, P1, bool chknm=true) const
Definition: factory.h:392
static char cSeparator()
Definition: factory.h:40
TypeSet< Creator > creators_
Definition: factory.h:205
BufferStringSet aliases_
Definition: factory.h:67
Definition: seistype.h:59
TypeSet< Creator > creators_
Definition: factory.h:259
void addCreator(Creator, const char *nm, const uiString &username=uiString::emptyString())
Definition: factory.h:353
uiStringSet usernames_
Definition: factory.h:66
Generalized static factory that can deliver instances of T, when a variable is needed in the creation...
Definition: factory.h:187
bool hasName(const char *n)
Definition: factory.h:33
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
Base class for Factories ( Factory, Factory1Param, Factory2Param and Factory3Param. )
Definition: factory.h:25
T * create(const char *nm, P, bool chknm=true) const
Definition: factory.h:377
bool isEmpty(const char *)
StaticStringManager currentname_
Definition: factory.h:61
static uiHor3DInterpol * create(uiParent *)
#define mCreateImpl(donames, createfunc)
Definition: factory.h:314
Definition: uistring.h:235
StaticStringManager errmsgs_
Definition: factory.h:60
void addCreator(Creator, const char *nm=0, const uiString &usernm=uiString::emptyString())
Definition: factory.h:400
const char * errMsg() const
Definition: horizontracker.h:59
void addNames(const ODSET &inp, WITHADD &withadd)
Adds all names from a set to another set with an add() function (typically a BufferStringSet) ...
Definition: odset.h:65
T * create(const char *nm) const
Name may be not be null.
Definition: factory.h:362
#define mClass(module)
Definition: commondefs.h:161
Subclass of FactoryBase.
Definition: factory.h:241
TypeSet< Creator > creators_
Definition: factory.h:232
void addCreator(Creator, const char *nm=0, const uiString &usernm=uiString::emptyString())
Definition: factory.h:384