 |
OpendTect
6.6
|
Go to the documentation of this file.
120 typedef T* (*Creator)();
121 inline void addCreator(Creator,
const char* nm,
131 inline T*
create(
const char* nm)
const;
187 template <
class T,
class P>
191 typedef T* (*Creator)(
P);
192 inline void addCreator(Creator,
const char* nm=
nullptr,
201 inline T*
create(
const char* nm,
P,
bool chknm=
true)
const;
214 template <
class T,
class P0,
class P1>
218 typedef T* (*Creator)(P0,P1);
219 inline void addCreator(Creator,
const char* nm=
nullptr,
227 inline T*
create(
const char* nm, P0, P1,
228 bool chknm=
true)
const;
241 template <
class T,
class P0,
class P1,
class P2>
245 typedef T* (*Creator)(P0,P1,P2);
246 inline void addCreator(Creator,
const char* nm=
nullptr,
254 inline T*
create(
const char* nm, P0, P1, P2,
255 bool chknm=
true)
const;
264 #define mDefaultFactoryStringImpl \
265 const char* factoryKeyword() const { return sFactoryKeyword(); } \
266 uiString factoryDisplayName() const \
267 { return sFactoryDisplayName(); }
269 #define mDefaultStaticFactoryStringDeclaration \
270 static const char* sFactoryKeyword(); \
271 static uiString sFactoryDisplayName()
273 #define mDefaultFactoryInitClassImpl( baseclss, createfunc ) \
275 baseclss::factory().addCreator(createfunc,sFactoryKeyword(), \
276 sFactoryDisplayName()); \
279 #define mDefaultFactoryInstanciationBase( keywrd, usernm ) \
280 mDefaultFactoryStringImpl \
281 static const char* sFactoryKeyword() { return keywrd; } \
282 static uiString sFactoryDisplayName() { return usernm; } \
283 static void initClass()
285 #define mDefaultFactoryCreatorImpl( baseclss, clss ) \
286 static baseclss* createInstance() { return new clss; } \
288 #define mDefaultFactoryInstantiation( baseclss, clss, keywrd, usernm ) \
289 mDefaultFactoryCreatorImpl( baseclss, clss ); \
290 mDefaultFactoryInstanciationBase( keywrd, usernm ) \
291 mDefaultFactoryInitClassImpl( baseclss, createInstance )
294 #define mDefaultFactoryCreatorImpl1Param( baseclss, clss, parclss ) \
295 static baseclss* createInstance( parclss p1 ) \
296 { return new clss( p1 ); }
298 #define mDefaultFactoryInstantiation1Param( baseclss, clss, parclss,\
300 mDefaultFactoryCreatorImpl1Param( baseclss, clss, parclss ) \
301 mDefaultFactoryInstanciationBase( keywrd, usernm ) \
302 mDefaultFactoryInitClassImpl( baseclss, createInstance )
304 #define mDefaultFactoryCreatorImpl2Param( baseclss, clss, parclss1, parclss2 ) \
305 static baseclss* createInstance( parclss1 p1, parclss2 p2 ) \
306 { return new clss( p1, p2 ); }
308 #define mDefaultFactoryInstantiation2Param( baseclss, clss, parclss1,\
309 parclss2, keywrd, usernm ) \
310 mDefaultFactoryCreatorImpl2Param( baseclss, clss, parclss1, parclss2 ) \
311 mDefaultFactoryInstanciationBase( keywrd, usernm ) \
312 mDefaultFactoryInitClassImpl( baseclss, createInstance )
315 #define mCreateImpl( donames, createfunc ) \
316 currentname_.getObject() = name; \
319 const int idx = indexOf( name ); \
322 errmsgs_.getObject() = "Name "; \
323 errmsgs_.getObject().add( name ).add(" not found.\n" ) \
324 .add( "Perhaps all plugins are not loaded\n" );\
330 for ( int idx=0; idx<creators_.size(); idx++ ) \
332 T* res = createfunc; \
333 if ( res ) return res; \
339 #define mAddCreator \
340 const int idx = indexOf( name );\
344 addNames( name, username ); \
349 setNames( idx, name, username ); \
350 creators_[idx] = cr;\
353 template <
class T>
inline
357 if ( !name )
return;\
362 template <
class T>
inline
369 template <
class T,
class P>
inline
377 template <
class T,
class P>
inline
384 template <
class T,
class P0,
class P1>
inline
392 template <
class T,
class P0,
class P1>
inline
400 template <
class T,
class P0,
class P1,
class P2>
inline
408 template <
class T,
class P0,
class P1,
class P2>
inline
416 #define mDefineFactory( mod, T, funcname ) \
417 mGlobal(mod) ::Factory<T>& funcname()
420 #define mDefineFactoryInClasswKW( T, funcname, kw ) \
421 static ::Factory<T>& funcname(); \
422 virtual uiString factoryDisplayName() const \
423 { return ::toUiString( factoryKeyword() ); } \
424 virtual const char* factoryKeyword() const { return kw; }
425 #define mDefineFactoryInClass( T, funcname ) \
426 mDefineFactoryInClasswKW( T, funcname, nullptr )
429 #define mImplFactory( T, funcname ) \
430 ::Factory<T>& funcname() \
432 mDefineStaticLocalObject(PtrMan< ::Factory<T> >,inst,(new ::Factory<T>)); \
437 #define mDefineFactory1Param( mod, T, P, funcname ) \
438 mGlobal(mod) ::Factory1Param<T,P>& funcname()
441 #define mDefineFactory1ParamInClasswKW( T, P, funcname, kw ) \
442 static ::Factory1Param<T,P>& funcname(); \
443 virtual uiString factoryDisplayName() const \
444 { return ::toUiString(factoryKeyword()); } \
445 virtual const char* factoryKeyword() const { return kw; }
446 #define mDefineFactory1ParamInClass( T, P, funcname ) \
447 mDefineFactory1ParamInClasswKW( T, P, funcname, nullptr )
449 #define mImplFactory1Param( T, P, funcname ) \
450 ::Factory1Param<T,P>& funcname() \
452 static PtrMan< ::Factory1Param<T,P> > \
453 inst(new ::Factory1Param<T,P>); \
458 #define mDefineFactory2Param( mod, T, P0, P1, funcname ) \
459 mGlobal(mod) ::Factory2Param<T,P0,P1>& funcname()
462 #define mDefineFactory2ParamInClasswKW( T, P0, P1, funcname, kw ) \
463 static ::Factory2Param<T,P0,P1>& funcname(); \
464 virtual uiString factoryDisplayName() const \
465 { return ::toUiString( factoryKeyword() ); } \
466 virtual const char* factoryKeyword() const { return kw; }
467 #define mDefineFactory2ParamInClass( T, P0, P1, funcname ) \
468 mDefineFactory2ParamInClasswKW( T, P0, P1, funcname, nullptr )
471 #define mImplFactory2Param( T, P0, P1, funcname ) \
472 ::Factory2Param<T,P0,P1>& funcname() \
474 static PtrMan< ::Factory2Param<T,P0,P1> > \
475 inst(new ::Factory2Param<T,P0,P1>); \
480 #define mDefineFactory3Param( mod, T, P0, P1, P2, funcname ) \
481 mGlobal(mod) ::Factory3Param<T,P0,P1,P2>& funcname()
484 #define mDefineFactory3ParamInClasswKW( T, P0, P1, P2, funcname, kw ) \
485 static ::Factory3Param<T,P0,P1,P2>& funcname(); \
486 virtual uiString factoryDisplayName() const \
487 { return ::toUiString( factoryKeyword() ); } \
488 virtual const char* factoryKeyword() const { return kw; }
489 #define mDefineFactory3ParamInClass( T, P0, P1, P2, funcname ) \
490 mDefineFactory3ParamInClasswKW( T, P0, P1, P2, funcname, nullptr )
493 #define mImplFactory3Param( T, P0, P1, P2,funcname ) \
494 ::Factory3Param<T,P0,P1,P2>& funcname() \
496 static PtrMan< ::Factory3Param<T,P0,P1,P2> > \
497 inst(new ::Factory3Param<T,P0,P1,P2>); \
void addCreator(Creator, const char *nm=nullptr, const uiString &usernm=uiString::emptyString())
Definition: factory.h:385
BufferString defaultname_
Definition: factory.h:69
TypeSet< Creator > creators_
Definition: factory.h:206
const char * currentName() const
Definition: uistringset.h:23
Set of BufferString objects.
Definition: bufstringset.h:26
#define mAddCreator
Definition: factory.h:339
void setNames(int, const char *, const uiString &)
Subclass of FactoryBase.
Definition: factory.h:243
BufferStringSet names_
Definition: factory.h:66
TypeSet< Creator > creators_
Definition: factory.h:260
Base class for Factories ( Factory, Factory1Param, Factory2Param and Factory3Param....
Definition: factory.h:27
#define mExpClass(module)
Definition: commondefs.h:177
@ P
Definition: seistype.h:60
const uiStringSet & getUserNames() const
T * create(const char *nm, P, bool chknm=true) const
Definition: factory.h:378
T * create(const char *nm) const
Name may be not be null.
Definition: factory.h:363
#define mODTextTranslationClass(clss)
Definition: uistring.h:40
BufferString & errMsg() const
uiStringSet usernames_
Definition: factory.h:67
Subclass of FactoryBase.
Definition: factory.h:216
TypeSet< Creator > creators_
Definition: factory.h:135
const BufferStringSet & getNames() const
BufferStringSet::idx_type indexOf(const BufferStringSet &, const char *)
int indexOf(const char *) const
BufferStringSet aliases_
Definition: factory.h:68
static char cSeparator()
Definition: factory.h:41
#define mClass(module)
Definition: commondefs.h:181
bool hasName(const char *n)
Definition: factory.h:34
void addCreator(Creator, const char *nm=nullptr, const uiString &usernm=uiString::emptyString())
Definition: factory.h:370
TypeSet< Creator > creators_
Definition: factory.h:233
const char * getDefaultName() const
Generalized static factory that can deliver instances of T, when no variable is needed in the creatio...
Definition: factory.h:118
void addCreator(Creator, const char *nm, const uiString &username=uiString::emptyString())
Definition: factory.h:354
StaticStringManager currentname_
Definition: factory.h:62
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
static const uiString & emptyString()
Definition: uistring.h:300
#define mCreateImpl(donames, createfunc)
Definition: factory.h:315
void addCreator(Creator, const char *nm=nullptr, const uiString &usernm=uiString::emptyString())
Definition: factory.h:401
void addNames(const char *, const uiString &)
void setDefaultName(int idx)
StaticStringManager errmsgs_
Definition: factory.h:61
Generalized static factory that can deliver instances of T, when a variable is needed in the creation...
Definition: factory.h:189
static uiHor3DInterpol * create(uiParent *)
T * create(const char *nm, P0, P1, bool chknm=true) const
Definition: factory.h:393
T * create(const char *nm, P0, P1, P2, bool chknm=true) const
Definition: factory.h:409
Generated at
for the OpendTect
seismic interpretation project.
Copyright (C): dGB Beheer B.V. 1995-2021