OpendTect  6.6
attribdesc.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: Kristofer Tingdahl
8  Date: 07-10-1999
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "attributeenginemod.h"
15 #include "refcount.h"
16 #include "bufstring.h"
17 #include "bufstringset.h"
18 #include "seistype.h"
19 #include "attribdescid.h"
20 #include "typeset.h"
21 
22 
23 namespace Attrib
24 {
25 
26 class Desc;
27 class Param;
28 class DescSet;
29 class ValParam;
30 
31 typedef void(*DescStatusUpdater)(Desc&);
32 typedef void(*DescDefaultsUpdater)(Desc&);
33 
38 mExpClass(AttributeEngine) DescSetup
39 {
40  public:
44  mDefSetupClssMemb(DescSetup,bool,singletraceonly)
45  mDefSetupClssMemb(DescSetup,bool,usingtrcpos)
46  mDefSetupClssMemb(DescSetup,bool,depthonly)
50  mDefSetupClssMemb(DescSetup,bool,stored)
51 };
52 
53 
58 mExpClass(AttributeEngine) InputSpec
59 {
60 public:
61  InputSpec( const char* d, bool enabled )
62  : desc_(d), enabled_(enabled)
63  , issteering_(false) {}
64 
65  const char* getDesc() const { return desc_; }
66 
69  bool enabled_;
71 
72  bool operator==(const InputSpec&) const;
73 };
74 
75 
88 mExpClass(AttributeEngine) Desc
89 { mRefCountImpl(Desc)
90 public:
91 
92  enum Locality { SingleTrace, PossiblyMultiTrace, MultiTrace };
93 
94  Desc(const Desc&);
95  Desc(const char* attrname,
96  DescStatusUpdater updater=0,
97  DescDefaultsUpdater defupdater=0);
98 
99  const OD::String& attribName() const;
100 
102  DescSet* descSet() const;
103  DescID id() const;
104  bool getParentID(DescID cid,DescID& pid,int&) const;
106  TypeSet<DescID>&,TypeSet<int>&) const;
107  /*ordered from parent to oldest original*/
108 
109  bool getDefStr(BufferString&) const;
110  bool parseDefStr(const char*);
111 
112  const char* userRef() const;
113  void setUserRef(const char*);
114 
115  int nrOutputs() const;
116  void selectOutput(int);
117  int selectedOutput() const;
118 
119  Seis::DataType dataType(int output=-1) const;
122  Locality locality() const { return locality_; }
123  void setLocality( Locality l ) { locality_ = l; }
124  bool usesTracePosition() const { return usestrcpos_;}
125  void setUsesTrcPos( bool yn ) { usestrcpos_ = yn; }
126  bool isSteering() const { return issteering_;}
127  void setSteering( bool yn ) { issteering_ = yn; }
128  bool isHidden() const { return hidden_; }
130  void setHidden( bool yn ) { hidden_ = yn; }
133  bool isStored() const;
134  bool isStoredInMem() const;
135  BufferString getStoredID(bool recursive=false) const;
136  BufferString getStoredType(bool recursive=false) const;
137 
138  void setNeedProvInit( bool yn=true )
139  { needprovinit_ = yn; }
140  bool needProvInit() const
141  { return needprovinit_;}
142 
143  int nrInputs() const;
145  const InputSpec& inputSpec(int) const;
146  bool setInput(int,const Desc*);
147  Desc* getInput(int);
148  const Desc* getInput(int) const;
154  bool is2D() const { return is2d_; }
155  void set2D( bool yn ) { is2d_ = yn; }
156  bool isPS() const { return isps_; }
157  void setPS( bool yn ) { isps_ = yn; }
158 
159  enum SatisfyLevel { AllOk, Warning, Error };
163  const char* errMsg() const;
164  void setErrMsg( const char* str ) { errmsg_=str; }
165 
166  bool isIdenticalTo(const Desc&,
167  bool cmpoutput=true) const;
168  bool isIdentifiedBy(const char*) const;
169  DescID inputId(int idx) const;
170 
171  /* Interface to factory */
172  void addParam(Param*);
174  const Param* getParam(const char* key) const;
175  Param* getParam(const char* key);
176  const ValParam* getValParam(const char* key) const;
177  ValParam* getValParam(const char* key);
178  void setParamEnabled(const char* key,bool yn=true);
179  bool isParamEnabled(const char* key) const;
180  void setParamRequired(const char* key,bool yn=true);
181  bool isParamRequired(const char* key) const;
182 
183  void updateParams();
185  void changeStoredID(const char*);
186 
187  void addInput(const InputSpec&);
188  bool removeInput(int idx);
194 
195  static bool getAttribName(const char* defstr,BufferString&);
196  static bool getParamString(const char* defstr,
197  const char* key,BufferString&);
198 
201 
202  //Used to clone an attribute chain and apply it on multiple components
203  //of the same input cube (different offsets for instance)
205  BufferString);
206  //6.0 only, next versions will see the protected member
207  //become public instead
208  static void getKeysValsPublic(const char* defstr,
209  BufferStringSet& keys,
210  BufferStringSet& vals,
211  const char* onlyneedkey=0)
212  { getKeysVals(defstr,keys, vals, onlyneedkey); }
216  static const char* sKeyOutput();
217  static const char* sKeyAll();
218  static const char* sKeyInlDipComp();
219  static const char* sKeyCrlDipComp();
220  static const char* sKeyLineDipComp();
221 
222 protected:
223 
224  bool setInput_(int,Desc*);
225  Param* findParam(const char* key);
226 
227  static void getKeysVals(const char* defstr,
228  BufferStringSet& keys,
229  BufferStringSet& vals,
230  const char* onlyneedkey=0);
237  bool hidden_;
239  bool is2d_;
240  bool isps_;
241  Locality locality_;
243 
246 
249 
253 
257 };
258 
259 } // namespace Attrib
260 
261 #define mGetIntFromDesc( __desc, var, varstring ) \
262 {\
263  var = __desc.getValParam(varstring)->getIntValue(0); \
264  if ( mIsUdf(var) )\
265  var = __desc.getValParam(varstring)->getDefaultIntValue(0);\
266 }
267 
268 #define mGetFloatFromDesc( __desc, var, varstring ) \
269 {\
270  var = __desc.getValParam(varstring)->getFValue(0); \
271  if ( mIsUdf(var) )\
272  var = __desc.getValParam(varstring)->getDefaultfValue(0);\
273 }
274 
275 
276 #define mGetDoubleFromDesc( __desc, var, varstring ) \
277 {\
278  var = __desc.getValParam(varstring)->getDValue(0); \
279  if ( mIsUdf(var) )\
280  var = __desc.getValParam(varstring)->getDefaultdValue(0);\
281 }
282 
283 
284 #define mGetBoolFromDesc( __desc, var, varstring ) \
285 {\
286  Attrib::ValParam* valparam##var = \
287  const_cast<Attrib::ValParam*>(__desc.getValParam(varstring));\
288  mDynamicCastGet(Attrib::BoolParam*,boolparam##var,valparam##var);\
289  if ( boolparam##var ) \
290  var = boolparam##var->isSet() ? boolparam##var->getBoolValue(0)\
291  : boolparam##var->getDefaultBoolValue(0);\
292 }
293 
294 #define mGetEnumFromDesc( __desc, var, varstring ) \
295 {\
296  Attrib::ValParam* valparam##var = \
297  const_cast<Attrib::ValParam*>(__desc.getValParam(varstring));\
298  mDynamicCastGet(Attrib::EnumParam*,enumparam##var,valparam##var);\
299  if ( enumparam##var ) \
300  var = enumparam##var->isSet() ? enumparam##var->getIntValue(0)\
301  : enumparam##var->getDefaultIntValue(0);\
302 }
303 
304 #define mGetStringFromDesc( __desc, var, varstring ) \
305 {\
306  var = __desc.getValParam(varstring)->getStringValue(0); \
307  if ( FixedString(var).isEmpty() )\
308  var = __desc.getValParam(varstring)->getDefaultStringValue(0); \
309 }
310 
311 #define mGetBinIDFromDesc( __desc, var, varstring ) \
312 {\
313  var.inl() = __desc.getValParam(varstring)->getIntValue(0); \
314  var.crl() = __desc.getValParam(varstring)->getIntValue(1); \
315  if ( mIsUdf(var.inl()) || mIsUdf(var.crl()) )\
316  {\
317  Attrib::ValParam* valparam##var = \
318  const_cast<Attrib::ValParam*>(__desc.getValParam(varstring));\
319  mDynamicCastGet(Attrib::BinIDParam*,binidparam##var,valparam##var);\
320  if ( binidparam##var ) \
321  var = binidparam##var->getDefaultBinIDValue();\
322  }\
323  if ( __desc.descSet()->is2D() ) \
324  var.inl() = 0; \
325 }
326 
327 #define mGetFloatIntervalFromDesc( __desc, var, varstring ) \
328 {\
329  var.start = __desc.getValParam(varstring)->getFValue(0); \
330  var.stop = __desc.getValParam(varstring)->getFValue(1); \
331  if ( mIsUdf(var.start) || mIsUdf(var.stop) )\
332  {\
333  Attrib::ValParam* valparam##var = \
334  const_cast<Attrib::ValParam*>(__desc.getValParam(varstring));\
335  mDynamicCastGet(Attrib::ZGateParam*,gateparam##var,valparam##var);\
336  if ( gateparam##var ) \
337  var = gateparam##var->getDefaultGateValue();\
338  }\
339 }
340 
341 #define mGetFloat( var, varstring ) \
342  mGetFloatFromDesc( desc_, var, varstring )
343 #define mGetInt( var, varstring ) \
344  mGetIntFromDesc( desc_, var, varstring )
345 #define mGetBool( var, varstring ) \
346  mGetBoolFromDesc( desc_, var, varstring )
347 #define mGetEnum( var, varstring ) \
348  mGetEnumFromDesc( desc_, var, varstring )
349 #define mGetString( var, varstring ) \
350  mGetStringFromDesc( desc_, var, varstring )
351 #define mGetBinID( var, varstring ) \
352  mGetBinIDFromDesc( desc_, var, varstring )
353 #define mGetFloatInterval( var, varstring ) \
354  mGetFloatIntervalFromDesc( desc_, var, varstring )
355 #define mGetDouble( var, varstring ) \
356  mGetDoubleFromDesc( desc_, var, varstring )
357 
Attrib::Desc::isIdenticalTo
bool isIdenticalTo(const Desc &, bool cmpoutput=true) const
Attrib::DescID
AttribDesc ID: each Desc has a unique ID in a set; the boolean isstored allows us to know whether thi...
Definition: attribdescid.h:27
Attrib::Desc::addOutputDataTypeSameAs
void addOutputDataTypeSameAs(int)
Attrib::Desc::parseDefStr
bool parseDefStr(const char *)
Attrib::Desc::setInput
bool setInput(int, const Desc *)
Attrib::Desc::setNeedProvInit
void setNeedProvInit(bool yn=true)
Definition: attribdesc.h:138
Attrib::Desc::outputtypelinks_
TypeSet< int > outputtypelinks_
Definition: attribdesc.h:235
Attrib::Desc::SatisfyLevel
SatisfyLevel
Definition: attribdesc.h:159
Attrib::Desc::updateDefaultParams
void updateDefaultParams()
Attrib::Desc::setDescSet
void setDescSet(DescSet *)
Attrib::Desc::isStored
bool isStored() const
Attrib::Desc::setInput_
bool setInput_(int, Desc *)
Attrib::Desc::isps_
bool isps_
Definition: attribdesc.h:240
Attrib::Desc::usestrcpos_
bool usestrcpos_
Definition: attribdesc.h:242
ObjectSet
Set of pointers to objects.
Definition: commontypes.h:31
Seis::DataType
DataType
Definition: seistype.h:53
Attrib::Desc::seloutput_
int seloutput_
Definition: attribdesc.h:251
BufferStringSet
Set of BufferString objects.
Definition: bufstringset.h:26
Attrib::Desc::selectedOutput
int selectedOutput() const
Attrib::Desc::issteering_
bool issteering_
Definition: attribdesc.h:236
Attrib::Desc::addParam
void addParam(Param *)
Attrib::DescSetup::mDefSetupClssMemb
mDefSetupClssMemb(DescSetup, bool, is2d) mDefSetupClssMemb(DescSetup
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
Attrib::Desc::getMultiOutputInputID
DescID getMultiOutputInputID() const
Attrib::Desc::setErrMsg
void setErrMsg(const char *str)
Definition: attribdesc.h:164
Attrib::Desc::needprovinit_
bool needprovinit_
Definition: attribdesc.h:238
Attrib::InputSpec::getDesc
const char * getDesc() const
Definition: attribdesc.h:65
Attrib::Desc::isSatisfied
SatisfyLevel isSatisfied() const
Attrib::DescStatusUpdater
void(* DescStatusUpdater)(Desc &)
Definition: attribdesc.h:31
Attrib::Desc::setLocality
void setLocality(Locality l)
Definition: attribdesc.h:123
Attrib::Desc::getParentID
bool getParentID(DescID cid, DescID &pid, int &) const
Attrib::InputSpec::operator==
bool operator==(const InputSpec &) const
Attrib::Desc::getValParam
ValParam * getValParam(const char *key)
Attrib::Desc::inputspecs_
TypeSet< InputSpec > inputspecs_
Definition: attribdesc.h:244
Attrib::Desc::userref_
BufferString userref_
Definition: attribdesc.h:250
Attrib::InputSpec::InputSpec
InputSpec(const char *d, bool enabled)
Definition: attribdesc.h:61
Attrib::Desc::set2D
void set2D(bool yn)
Definition: attribdesc.h:155
Attrib::Desc::findParam
Param * findParam(const char *key)
Attrib::Desc::locality
Locality locality() const
Definition: attribdesc.h:122
Attrib::Desc::cloneDescAndPropagateInput
Desc * cloneDescAndPropagateInput(const DescID &, BufferString)
Attrib::Desc::defaultsupdater_
DescDefaultsUpdater defaultsupdater_
Definition: attribdesc.h:255
Attrib::Desc::getParamString
static bool getParamString(const char *defstr, const char *key, BufferString &)
typeset.h
Attrib::Desc::nrInputs
int nrInputs() const
Attrib::Desc::getKeysValsPublic
static void getKeysValsPublic(const char *defstr, BufferStringSet &keys, BufferStringSet &vals, const char *onlyneedkey=0)
Definition: attribdesc.h:208
Attrib::DescSetup::DescSetup
DescSetup()
Attrib::InputSpec
Specification of input data of an attribute.
Definition: attribdesc.h:59
Attrib::Desc::locality_
Locality locality_
Definition: attribdesc.h:241
bufstring.h
Attrib::Desc::hidden_
bool hidden_
Definition: attribdesc.h:237
Attrib::Desc::setNrOutputs
void setNrOutputs(Seis::DataType, int)
Attrib::Desc::getParam
Param * getParam(const char *key)
Attrib::Desc::getDependencies
void getDependencies(TypeSet< Attrib::DescID > &) const
Attrib::Desc::isIdentifiedBy
bool isIdentifiedBy(const char *) const
Attrib::Desc::updateParams
void updateParams()
Attrib::Desc::is2d_
bool is2d_
Definition: attribdesc.h:239
Attrib::Desc::sKeyCrlDipComp
static const char * sKeyCrlDipComp()
Attrib::Desc::Desc
Desc(const char *attrname, DescStatusUpdater updater=0, DescDefaultsUpdater defupdater=0)
Attrib::Desc::getDefStr
bool getDefStr(BufferString &) const
Attrib::InputSpec::forbiddenDts_
TypeSet< Seis::DataType > forbiddenDts_
Definition: attribdesc.h:68
Attrib::Desc::changeOutputDataType
void changeOutputDataType(int, Seis::DataType)
Attrib::Desc::getStoredInput
Desc * getStoredInput() const
Attrib::Desc::setHidden
void setHidden(bool yn)
Definition: attribdesc.h:130
Attrib::Desc::descSet
DescSet * descSet() const
Attrib::Desc::nrOutputs
int nrOutputs() const
Attrib::Desc::sKeyOutput
static const char * sKeyOutput()
Attrib::Desc::attribName
const OD::String & attribName() const
Attrib::Param
A parameter that is used by an attribute.
Definition: attribparambase.h:36
Attrib::Desc::sKeyLineDipComp
static const char * sKeyLineDipComp()
Attrib::Desc::descset_
DescSet * descset_
Definition: attribdesc.h:252
Attrib::DescSetup
Setup class for Attrib::Desc.
Definition: attribdesc.h:39
Attrib::Desc::getParam
const Param * getParam(const char *key) const
Attrib::Desc::setUsesTrcPos
void setUsesTrcPos(bool yn)
Definition: attribdesc.h:125
Attrib::Desc::isHidden
bool isHidden() const
Definition: attribdesc.h:128
Attrib::DescDefaultsUpdater
void(* DescDefaultsUpdater)(Desc &)
Definition: attribdesc.h:32
Attrib::Desc::isParamRequired
bool isParamRequired(const char *key) const
Attrib::Desc::setUserRef
void setUserRef(const char *)
Attrib::Desc::getInput
const Desc * getInput(int) const
Attrib::Desc::inputSpec
const InputSpec & inputSpec(int) const
Attrib::Desc::getStoredID
BufferString getStoredID(bool recursive=false) const
Attrib::InputSpec::desc_
BufferString desc_
Definition: attribdesc.h:67
Attrib::Desc::inputId
DescID inputId(int idx) const
Attrib::Desc::dataType
Seis::DataType dataType(int output=-1) const
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
Attrib::Desc::getValParam
const ValParam * getValParam(const char *key) const
Attrib::Desc::setParamRequired
void setParamRequired(const char *key, bool yn=true)
Attrib::Desc::sKeyInlDipComp
static const char * sKeyInlDipComp()
bufstringset.h
Attrib::Desc::selectOutput
void selectOutput(int)
attribdescid.h
OD::String
encapsulates the read-access-only part of strings in OD.
Definition: odstring.h:31
Attrib::Desc::getAttribName
static bool getAttribName(const char *defstr, BufferString &)
Attrib::Desc::setPS
void setPS(bool yn)
Definition: attribdesc.h:157
Attrib::Desc::inputs_
ObjectSet< Desc > inputs_
Definition: attribdesc.h:245
Attrib::Desc::errmsg_
BufferString errmsg_
Definition: attribdesc.h:256
MPE::errmsg_
BufferString errmsg_
Definition: horizontracker.h:118
Attrib::Desc::setParamEnabled
void setParamEnabled(const char *key, bool yn=true)
Attrib::Desc::attribname_
BufferString attribname_
Definition: attribdesc.h:247
Attrib::Desc::changeStoredID
void changeStoredID(const char *)
Attrib::InputSpec::enabled_
bool enabled_
Definition: attribdesc.h:69
Attrib::Desc::addOutputDataType
void addOutputDataType(Seis::DataType)
Attrib::Desc::addInput
void addInput(const InputSpec &)
Attrib::Desc::usesTracePosition
bool usesTracePosition() const
Definition: attribdesc.h:124
Attrib::Desc::isParamEnabled
bool isParamEnabled(const char *key) const
refcount.h
Attrib::Desc::sKeyAll
static const char * sKeyAll()
Attrib::Desc::id
DescID id() const
Attrib::Desc::inputSpec
InputSpec & inputSpec(int)
Attrib::Desc::removeOutputs
void removeOutputs()
seistype.h
Attrib::Desc::setSteering
void setSteering(bool yn)
Definition: attribdesc.h:127
Attrib::Desc::getAncestorIDs
void getAncestorIDs(DescID cid, TypeSet< DescID > &, TypeSet< int > &) const
Attrib::Desc::getInputs
void getInputs(TypeSet< Attrib::DescID > &) const
Attrib::Desc::userRef
const char * userRef() const
Attrib::Desc::errMsg
const char * errMsg() const
Attrib::Desc::Warning
@ Warning
Definition: attribdesc.h:159
Attrib::InputSpec::issteering_
bool issteering_
Definition: attribdesc.h:70
Attrib::Desc::Desc
mRefCountImpl(Desc) public Desc(const Desc &)
Attrib::Desc::getKeysVals
static void getKeysVals(const char *defstr, BufferStringSet &keys, BufferStringSet &vals, const char *onlyneedkey=0)
mDefSetupClssMemb
#define mDefSetupClssMemb(clss, typ, memb)
Definition: commondefs.h:150
Attrib::Desc::outputtypes_
TypeSet< Seis::DataType > outputtypes_
Definition: attribdesc.h:234
Attrib::DescSet
Set of attribute descriptions.
Definition: attribdescset.h:35
Attrib
Semblance Attribute.
Definition: attribdataholder.h:25
Attrib::Desc::isPS
bool isPS() const
Definition: attribdesc.h:156
Attrib::Desc
Description of an attribute in an Attrib::DescSet. Each attribute has a name (e.g....
Definition: attribdesc.h:89
Attrib::Desc::getStoredType
BufferString getStoredType(bool recursive=false) const
Attrib::Desc::removeInput
bool removeInput(int idx)
Attrib::Desc::isSteering
bool isSteering() const
Definition: attribdesc.h:126
Attrib::Desc::is2D
bool is2D() const
Definition: attribdesc.h:154
Attrib::Desc::isStoredInMem
bool isStoredInMem() const
Attrib::Desc::getInput
Desc * getInput(int)
Attrib::Desc::needProvInit
bool needProvInit() const
Definition: attribdesc.h:140
Attrib::Desc::statusupdater_
DescStatusUpdater statusupdater_
Definition: attribdesc.h:254
sKey::Desc
FixedString Desc()
Definition: keystrs.h:62
Attrib::Desc::params_
ObjectSet< Param > params_
Definition: attribdesc.h:248
Attrib::ValParam
Attribute Value Parameter.
Definition: attribparambase.h:94
TypeSet< Seis::DataType >

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B.V. 1995-2021