 |
OpendTect
6.6
|
Go to the documentation of this file.
68 int enumval,
const char* iconfile);
79 {
return isValidKey(key); }
80 const char*
convert(
int idx)
const {
return getKeyForIndex(idx); }
89 bool parse(
const char* txt,ENUM& res)
const;
90 bool parse(
const IOPar& par,
const char* key,ENUM& res)
const;
91 ENUM
parse(
const char* txt)
const;
93 const char*
getKey(ENUM theenum)
const;
99 const char*
toString(ENUM theenum)
const {
return getKey(theenum); }
257 #define mDeclareEnumUtils(enm) \
259 static const EnumDefImpl<enm>& enm##Def(); \
260 static const char** enm##Names();\
261 static bool parseEnum##enm(const char*,enm&); \
262 static bool parseEnum(const char*,enm&); \
263 static bool parseEnum(const IOPar&,const char*,enm&); \
264 static enm parseEnum##enm(const char*); \
265 static const char* toString(enm); \
266 static uiString toUiString(enm); \
267 static const char* get##enm##String(enm); \
269 static const char* enm##Keys_[]; \
270 static ConstPtrMan<EnumDefImpl<enm> > enm##Definition_; \
273 #define mDeclareNameSpaceEnumUtils(mod,enm) \
274 mExtern(mod) const EnumDefImpl<enm>& enm##Def(); \
275 mExtern(mod) const char** enm##Names();\
276 extern const char* enm##Keys_[]; \
277 mExtern(mod) bool parseEnum(const IOPar&,const char*,enm&); \
278 mExtern(mod) bool parseEnum(const char*,enm&); \
279 mExtern(mod) bool parseEnum##enm(const char*,enm&); \
280 mExtern(mod) enm parseEnum##enm(const char*); \
281 mExtern(mod) const char* toString(enm); \
282 mExtern(mod) uiString toUiString(enm); \
283 mExtern(mod) const char* get##enm##String(enm);
285 #define _DefineEnumNames(prefix,enm,deflen,prettynm) \
286 const EnumDefImpl<prefix::enm>& prefix::enm##Def() \
288 if ( !enm##Definition_ ) \
290 EnumDefImpl<prefix::enm>* newdef = \
291 new EnumDefImpl<prefix::enm>(prettynm,prefix::enm##Keys_,deflen); \
292 enm##Definition_.setIfNull( newdef,true ); \
295 return *enm##Definition_; \
297 const char** prefix::enm##Names() \
298 { return prefix::enm##Keys_; } \
299 bool prefix::parseEnum##enm(const char* txt, prefix::enm& res ) \
301 const bool isok = prefix::parseEnum( txt, res ); \
302 if ( !isok ) res = (prefix::enm) 0; \
305 bool prefix::parseEnum(const char* txt, prefix::enm& res ) \
306 { return prefix::enm##Def().parse( txt, res ); } \
307 bool prefix::parseEnum( const IOPar& par, const char* key, prefix::enm& res ) \
308 { return prefix::enm##Def().parse( par, key, res ); } \
309 prefix::enm prefix::parseEnum##enm(const char* txt) \
310 { return prefix::enm##Def().parse( txt ); } \
311 const char* prefix::get##enm##String( prefix::enm theenum ) \
312 { return prefix::toString( theenum ); } \
313 const char* prefix::toString( prefix::enm theenum ) \
314 { return enm##Def().getKey( theenum ); } \
315 uiString prefix::toUiString( prefix::enm theenum ) \
316 { return enm##Def().toUiString( theenum ); } \
317 const char* prefix::enm##Keys_[] =
320 #define DefineEnumNames(clss,enm,deflen,prettynm) \
321 ConstPtrMan<EnumDefImpl<clss::enm> > clss::enm##Definition_ = 0; \
322 _DefineEnumNames( clss, enm, deflen, prettynm )
324 #define DefineNameSpaceEnumNames(nmspc,enm,deflen,prettynm) \
325 static ConstPtrMan<EnumDefImpl<nmspc::enm> > enm##Definition_ = 0; \
326 _DefineEnumNames( nmspc, enm, deflen, prettynm )
329 #define mDefineEnumUtils(clss,enm,prettynm) \
330 DefineEnumNames(clss,enm,0,prettynm)
332 #define mDefineNameSpaceEnumUtils(nmspc,enm,prettynm) \
333 DefineNameSpaceEnumNames(nmspc,enm,0,prettynm)
336 #define DeclareEnumUtils(enm) mDeclareEnumUtils(enm)
337 #define DefineEnumUtils(clss,enm,prettynm) mDefineEnumUtils(clss,enm,prettynm)
338 #define DefineNameSpaceEnumUtils(nmspc,enm,prettynm) \
339 mDefineNameSpaceEnumUtils(nmspc,enm,prettynm)
340 #define DeclareNameSpaceEnumUtils(mod,enm) mDeclareNameSpaceEnumUtils(mod,enm)
342 #define mEnumTr(str) tr(str)
345 template <
class ENUM>
inline
352 pErrMsg(
"Wrong number of uistrings" );
360 pErrMsg(
"Wrong number of iconfiles" );
364 template <
class ENUM>
inline
367 const int idx = isValidKey( txt )
373 res = (ENUM) enums_[idx];
378 template <
class ENUM>
inline
382 const char* val = par.
find( key );
383 return parse( val, res );
387 template <
class ENUM>
inline
390 return (ENUM) enums_[idx];
394 template <
class ENUM>
inline
397 return getEnumForIndex(
indexOf( txt ) );
401 template <
class ENUM>
inline
407 const int idx = enums_.indexOf( (
int) theenum );
408 return keys_.get(idx>=0?idx:0).buf();
412 template <
class ENUM>
inline
415 const int idx = enums_.indexOf( (
int) theenum );
416 return getUiStringForIndex( idx );
420 template <
class ENUM>
inline
const char * getKeyForIndex(int i) const
object with a name.
Definition: namedobj.h:42
uiString toUiString(ENUM theenum) const
Definition: enums.h:413
uiStringSet uistrings_
Definition: enums.h:72
BufferString & get(idx_type idx)
Definition: bufstringset.h:57
int indexOf(const char *s) const
Definition: uistringset.h:23
BufferStringSet keys_
Definition: enums.h:73
Set of BufferString objects.
Definition: bufstringset.h:26
void remove(const char *key)
EnumDef(const char *nm, const char *s[], short nrs=0)
#define mExpClass(module)
Definition: commondefs.h:177
void setIconFileForIndex(int idx, const char *)
const char * convert(int idx) const
Definition: enums.h:80
TypeSet< int > enums_
Definition: enums.h:74
bool parse(const IOPar &par, const char *key, ENUM &res) const
Definition: enums.h:379
bool isValidName(const char *key) const
Definition: enums.h:78
const char * getKey(ENUM theenum) const
Definition: enums.h:402
#define mODTextTranslationClass(clss)
Definition: uistring.h:40
void setUiStringForIndex(int, const uiString &)
const uiStringSet & strings() const
Definition: enums.h:58
BufferStringSet::idx_type indexOf(const BufferStringSet &, const char *)
#define mClass(module)
Definition: commondefs.h:181
int indexOf(int enumval) const
bool parse(const char *txt, ENUM &res) const
Definition: enums.h:365
ENUM getEnumForIndex(int idx) const
Definition: enums.h:388
bool isEmpty() const
Definition: bufstringset.h:44
Holds data pertinent to a certain enum. It does not know the enum values themselves,...
Definition: enums.h:45
#define pErrMsg(msg)
Usual access point for programmer error messages.
Definition: errmsg.h:37
int convert(const char *txt) const
Definition: enums.h:81
const char * toString(ENUM theenum) const
Definition: enums.h:99
size_type size() const
Definition: bufstringset.h:43
const BufferStringSet & keys() const
Definition: enums.h:57
BufferStringSet iconfiles_
Definition: enums.h:75
EnumDefImpl(const char *nm, const char *s[], short nrs=0)
Definition: enums.h:346
const char * find(const char *) const
returns null if not found
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
ENUM parse(const char *txt) const
Definition: enums.h:395
void init()
Definition: enums.h:421
bool isValidKey(const char *) const
void add(const char *key, const uiString &, int enumval, const char *iconfile)
const char * getIconFileForIndex(int idx) const
uiString getUiStringForIndex(int i) const
int getEnumValForIndex(int) const
size_type size() const
Definition: uistringset.h:41
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
bool isEmpty() const
Definition: uistringset.h:44
Generated at
for the OpendTect
seismic interpretation project.
Copyright (C): dGB Beheer B.V. 1995-2021