OpendTect  6.6
attribparam.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 "attribparambase.h"
16 #include "datainpspec.h"
17 
18 
19 namespace Attrib
20 {
21 
36 mExpClass(AttributeEngine) BinIDParam : public ValParam
38 public:
39  BinIDParam(const char*);
40  BinIDParam(const char*,const BinID&,
41  bool isreq=true);
42  BinIDParam* clone() const;
43  void setLimits(const Interval<int>& inlrg,
44  const Interval<int>& crlrg);
45  void setLimits(int mininl,int maxinl,
46  int mincrl,int maxcrl);
47 
48  virtual bool setCompositeValue(const char*);
49  virtual bool getCompositeValue(BufferString&) const;
50 
51  void setDefaultValue(const BinID&);
54  BinID getValue() const;
55 
56  void toString(BufferString&,const BinID&) const;
57 };
58 
59 
64 mExpClass(AttributeEngine) BoolParam : public ValParam
66 public:
67  BoolParam(const char*);
68  BoolParam(const char*,bool, bool isreq=true);
69  BoolParam* clone() const;
70 
71  virtual bool setCompositeValue(const char*);
73 
74  bool isSet() const;
75  void setSet(bool yn=true);
76 };
77 
78 
83 mExpClass(AttributeEngine) EnumParam : public ValParam
85 public:
86  EnumParam(const char*);
87  EnumParam(const char*,int defval,
88  bool isreq=true);
89  EnumParam* clone() const;
91 
92  void addEnum(const char*);
93  void addEnums(const char**);
94  void setEnums(const EnumDef&);
96 
97  void fillDefStr(BufferString&) const;
98  bool isSet() const;
99  void setSet(bool yn=true);
100 };
101 
102 
107 mExpClass(AttributeEngine) StringParam : public ValParam
109 public:
110  StringParam(const char* key);
111  StringParam(const char* key,const char* defstr,
112  bool isreq=true);
113  StringParam* clone() const;
114 
115  virtual bool setCompositeValue(const char*);
116  virtual bool getCompositeValue(BufferString&) const;
118  { return getDefaultStringValue(); }
119 };
120 
121 
127 template <class T>
128 mClass(AttributeEngine) NumParam : public ValParam
130 public:
131  NumParam(const char* key)
132  : ValParam(key,new NumInpSpec<T>()) {}
133  NumParam(const char* key,T defval,
134  bool isreq=true);
135  NumParam(const NumParam<T>&);
136 
137  virtual NumParam<T>* clone() const
138  { return new NumParam<T>(*this); }
139 
140  void setLimits(const Interval<T>&);
141  void setLimits(const StepInterval<T>&);
142  void setLimits(T start,T stop,T step=1);
143  const StepInterval<T>* limits() const;
144  virtual bool getCompositeValue(BufferString& res) const;
145  virtual bool setCompositeValue(const char*);
146 
147  virtual int getIntValue(int idx=0) const;
148  virtual float getFValue(int idx=0) const;
149  virtual double getDValue(int idx=0) const;
150  virtual BufferString getDefaultValue() const;
151 };
152 
153 
154 template <class T>
156  : ValParam(np.key_,np.spec_->clone())
157 {
158  enabled_ = np.enabled_;
159  required_ = np.required_;
160 }
161 
162 
163 template <class T>
164 NumParam<T>::NumParam( const char* key, T defval, bool isreq )
165  : ValParam( key, new NumInpSpec<T>() )
166 {
167  setValue( defval );
168  setDefaultValue( defval );
169  required_ = isreq;
170 }
171 
172 
173 template <class T>
175 {
176  res = spec_ && !spec_->isUndef() ? spec_->text() : "1e30";
177  return spec_;
178 }
179 
180 
181 template <class T>
182 float NumParam<T>::getFValue( int idx ) const
183 {
184  if ( !spec_ ) return mUdf(float);
185  float res = spec_->isUndef() ? mUdf(float) : ValParam::getFValue( idx );
186  return res;
187 }
188 
189 template <class T>
190 int NumParam<T>::getIntValue( int idx ) const
191 {
192  if ( !spec_ ) return mUdf(int);
193  int res = spec_->isUndef() ? mUdf(int) : ValParam::getIntValue( idx );
194  return res;
195 }
196 
197 
198 template <class T>
199 double NumParam<T>::getDValue( int idx ) const
200 {
201  if ( !spec_ ) return mUdf(double);
202  double res = spec_->isUndef() ? mUdf(double) : ValParam::getDValue( idx );
203  return res;
204 }
205 
206 template <class T>
207 bool NumParam<T>::setCompositeValue( const char* nv )
208 {
209  spec_->setText(nv,0);
210  return true;
211 }
212 
213 
214 template <class T>
216 { setLimits( StepInterval<T>(limit.start,limit.stop,(T)1) ); }
217 
218 template <class T>
220 { reinterpret_cast<NumInpSpec<T>*>(spec_)->setLimits( limit ); }
221 
222 template <class T>
223 void NumParam<T>::setLimits( T start, T stop, T step )
224 { setLimits( StepInterval<T>( start, stop, step ) ); }
225 
226 template <class T>
228 { return reinterpret_cast<NumInpSpec<T>*>(spec_)->limits(); }
229 
230 
231 template <class T>
233 {
234  BufferString res =
235  toString(reinterpret_cast<NumInpSpec<T>*>(spec_)->defaultValue() );
236  return res;
237 }
238 
239 
243 
244 
250 template <class T>
251 mClass(AttributeEngine) NumGateParam : public ValParam
253 public:
254  NumGateParam(const char* key)
255  : ValParam(key,new NumInpIntervalSpec<T>())
256  {}
257 
258  NumGateParam(const char* key,
259  const Interval<T>& defaultgate,
260  bool isreq=true);
261 
263 
264  virtual NumGateParam<T>* clone() const
265  { return new NumGateParam<T>(*this); }
266 
267  void setLimits(const Interval<T>&);
268  void setLimits(T start,T stop);
269  virtual bool getCompositeValue(BufferString& res) const;
270  virtual bool setCompositeValue(const char*);
271 
272  void setValue(const Interval<T>&);
273  Interval<T> getValue() const;
274  void setDefaultValue(const Interval<T>&);
275  virtual BufferString getDefaultValue() const;
276  Interval<T> getDefaultGateValue() const;
277 
278  void toString(BufferString&,
279  const Interval<T>&) const;
280 };
281 
282 
283 template <class T>
285  : ValParam(np.key_,np.spec_->clone())
286 {
287  enabled_ = np.enabled_;
288  required_ = np.required_;
289 }
290 
291 
292 template <class T>
293 NumGateParam<T>::NumGateParam( const char* key, const Interval<T>& defaultgate,
294  bool isreq )
295  : ValParam(key,new NumInpIntervalSpec<T>())
296 {
297  setValue( defaultgate );
298  setDefaultValue( defaultgate );
299  setRequired( isreq );
300 }
301 
302 
303 template <class T>
305 {
306  NumInpIntervalSpec<T>* sp = reinterpret_cast<NumInpIntervalSpec<T>*>(spec_);
307  if ( !sp ) return false;
308 
309  Interval<T> intv( sp->value(0), sp->value(1) );
310  toString( res, intv );
311  return true;
312 }
313 
314 
315 template <class T>
317 {
318  NumInpIntervalSpec<T>* spec =
319  reinterpret_cast<NumInpIntervalSpec<T>*>(spec_);
320  if ( !spec ) return Interval<T>(mUdf(T),mUdf(T));
321  return Interval<T>( spec->value(0), spec->value(1) );
322 }
323 
324 
325 template <class T>
326 bool NumGateParam<T>::setCompositeValue( const char* gatestr )
327 {
328  if ( !gatestr || !*gatestr )
329  return false;
330 
331  BufferString rgstr( gatestr );
332  rgstr.unEmbed( '[', ']' );
333  if ( rgstr.isEmpty() )
334  return false;
335  char* ptrval2 = rgstr.find( ',' );
336  if ( !ptrval2 )
337  return false;
338 
339  *ptrval2++ = '\0';
340  spec_->setText( rgstr.buf(), 0 );
341  spec_->setText( ptrval2, 1 );
342  return true;
343 }
344 
345 
346 template <class T>
348 { reinterpret_cast<NumInpIntervalSpec<T>*>(spec_)->setLimits( limit ); }
349 
350 
351 template <class T>
352 void NumGateParam<T>::setLimits( T start, T stop )
353 { reinterpret_cast<NumInpIntervalSpec<T>*>(spec_)->setLimits(
354  Interval<T>(start,stop) ); }
355 
356 
357 template <class T>
359 { reinterpret_cast<NumInpIntervalSpec<T>*>(spec_)->setValue( gate ); }
360 
361 
362 template <class T>
364 { reinterpret_cast<NumInpIntervalSpec<T>*>(spec_)->setDefaultValue( defgate ); }
365 
366 
367 template <class T>
369 {
370  NumInpIntervalSpec<T>* spec =
371  reinterpret_cast<NumInpIntervalSpec<T>*>(spec_);
372  return Interval<T>( spec->defaultValue(0), spec->defaultValue(1) );
373 }
374 
375 
376 template <class T>
378 {
379  Interval<T> intv = getDefaultGateValue();
380  BufferString res;
381  toString( res, intv );
382  return res;
383 }
384 
385 
386 template <class T>
388 {
389  res.set( "[" ).add( gate.start ).add( "," ).add( gate.stop ).add( "]" );
390 }
391 
392 
396 
397 #define mLargestZGate 10000
399 
400 
405 mExpClass(AttributeEngine) SeisStorageRefParam : public StringParam
407 public:
408  SeisStorageRefParam(const char* key);
410  bool isOK() const;
411 };
412 
413 
414 }; // namespace Attrib
415 
416 
BufferString::add
BufferString & add(char)
Attrib::NumGateParam::setDefaultValue
void setDefaultValue(const Interval< T > &)
Definition: attribparam.h:363
NumInpSpec
Specifications for numerical inputs that may or may not have limits.
Definition: datainpspec.h:180
Attrib::FloatParam
NumParam< float > FloatParam
Definition: attribparam.h:241
Attrib::EnumParam::EnumParam
EnumParam(const char *)
Attrib::ValParam::getDValue
virtual double getDValue(int idx=0) const
Attrib::StringParam::mODTextTranslationClass
mODTextTranslationClass(StringParam)
Attrib::NumGateParam::mODTextTranslationClass
mODTextTranslationClass(NumGateParam)
Attrib::StringParam
String parameter that is used by an attribute.
Definition: attribparam.h:108
Attrib::BoolParam::setSet
void setSet(bool yn=true)
Attrib::NumGateParam::setLimits
void setLimits(const Interval< T > &)
Definition: attribparam.h:347
Attrib::NumParam
Numerical parameter that is used by an attribute. For example: IntParam, FloatParam and DoubleParam.
Definition: attribparam.h:129
Attrib::NumParam::getDValue
virtual double getDValue(int idx=0) const
Definition: attribparam.h:199
Attrib::SeisStorageRefParam::clone
SeisStorageRefParam * clone() const
Attrib::NumGateParam::setValue
void setValue(const Interval< T > &)
Definition: attribparam.h:358
Attrib::NumGateParam::NumGateParam
NumGateParam(const char *key)
Definition: attribparam.h:254
Attrib::BoolParam::setCompositeValue
virtual bool setCompositeValue(const char *)
NumInpIntervalSpec::value
T value(int idx=0) const
Definition: datainpspec.h:417
BufferString::unEmbed
BufferString & unEmbed(char open, char close)
Attrib::ValParam::setDefaultValue
void setDefaultValue(int, int idx=0)
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
Attrib::NumGateParam::getDefaultGateValue
Interval< T > getDefaultGateValue() const
Definition: attribparam.h:368
Attrib::NumGateParam::setCompositeValue
virtual bool setCompositeValue(const char *)
Definition: attribparam.h:326
Attrib::ValParam::getFValue
virtual float getFValue(int idx=0) const
BufferString::find
char * find(char)
Attrib::StringParam::getDefaultValue
virtual BufferString getDefaultValue() const
Definition: attribparam.h:117
Attrib::StringParam::StringParam
StringParam(const char *key)
Attrib::ValParam::setValue
void setValue(int, int idx=0)
Attrib::BoolParam::isSet
bool isSet() const
Attrib::EnumParam
Enum parameter that is used by an attribute.
Definition: attribparam.h:84
Attrib::Param::required_
bool required_
Definition: attribparambase.h:79
Attrib::EnumParam::addEnum
void addEnum(const char *)
Attrib::BinIDParam::setCompositeValue
virtual bool setCompositeValue(const char *)
Attrib::NumParam::getFValue
virtual float getFValue(int idx=0) const
Definition: attribparam.h:182
Attrib::StringParam::setCompositeValue
virtual bool setCompositeValue(const char *)
Attrib::DoubleParam
NumParam< double > DoubleParam
Definition: attribparam.h:242
Attrib::SeisStorageRefParam::isOK
bool isOK() const
Attrib::BinIDParam::BinIDParam
BinIDParam(const char *, const BinID &, bool isreq=true)
Attrib::BinIDParam
A parameter that is used by an attribute.
Definition: attribparam.h:37
BufferString::set
BufferString & set(const char *)
Definition: bufstring.h:246
Attrib::EnumParam::EnumParam
EnumParam(const char *, int defval, bool isreq=true)
Attrib::EnumParam::fillDefStr
void fillDefStr(BufferString &) const
BinID
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:31
NumInpIntervalSpec::defaultValue
T defaultValue(int idx=0) const
Definition: datainpspec.h:429
StepInterval
Interval with step.
Definition: commontypes.h:32
Attrib::NumGateParam::getDefaultValue
virtual BufferString getDefaultValue() const
Definition: attribparam.h:377
Attrib::IntParam
NumParam< int > IntParam
Definition: attribparam.h:240
attribparambase.h
Attrib::SeisStorageRefParam
Stored seismic input parameter used by an attribute.
Definition: attribparam.h:406
Attrib::NumGateParam::toString
void toString(BufferString &, const Interval< T > &) const
Definition: attribparam.h:387
Attrib::NumParam::clone
virtual NumParam< T > * clone() const
Definition: attribparam.h:137
Attrib::EnumParam::isSet
bool isSet() const
Attrib::BoolParam::clone
BoolParam * clone() const
mClass
#define mClass(module)
Definition: commondefs.h:181
Attrib::NumGateParam::getValue
Interval< T > getValue() const
Definition: attribparam.h:316
Attrib::NumGateParam::getCompositeValue
virtual bool getCompositeValue(BufferString &res) const
Definition: attribparam.h:304
OD::String::buf
const char * buf() const
Definition: odstring.h:46
Attrib::Param::enabled_
bool enabled_
Definition: attribparambase.h:78
Attrib::NumParam::limits
const StepInterval< T > * limits() const
Definition: attribparam.h:227
OD::String::isEmpty
bool isEmpty() const
Definition: odstring.h:50
Attrib::EnumParam::clone
EnumParam * clone() const
Attrib::BoolParam::mODTextTranslationClass
mODTextTranslationClass(BoolParam)
Attrib::EnumParam::setEnums
void setEnums(const EnumDef &)
Enumdef is assumed to remain in memory.
Attrib::NumParam::NumParam
NumParam(const char *key)
Definition: attribparam.h:131
EnumDef
Holds data pertinent to a certain enum. It does not know the enum values themselves,...
Definition: enums.h:45
Attrib::Param::setRequired
void setRequired(bool yn=true)
Definition: attribparambase.h:54
datainpspec.h
Attrib::BinIDParam::clone
BinIDParam * clone() const
Attrib::ZGateParam
NumGateParam< float > ZGateParam
Definition: attribparam.h:398
Attrib::StringParam::clone
StringParam * clone() const
NumInpIntervalSpec
Specifications for numerical intervals.
Definition: datainpspec.h:315
Attrib::BinIDParam::getCompositeValue
virtual bool getCompositeValue(BufferString &) const
Attrib::NumParam::mODTextTranslationClass
mODTextTranslationClass(NumParam)
Attrib::BinIDParam::BinIDParam
BinIDParam(const char *)
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
Attrib::NumParam::setCompositeValue
virtual bool setCompositeValue(const char *)
Definition: attribparam.h:207
Attrib::IntGateParam
NumGateParam< int > IntGateParam
Definition: attribparam.h:393
Attrib::BoolParam::getDefaultValue
BufferString getDefaultValue() const
Attrib::SeisStorageRefParam::SeisStorageRefParam
SeisStorageRefParam(const char *key)
Attrib::BoolParam::BoolParam
BoolParam(const char *)
Attrib::FloatGateParam
NumGateParam< float > FloatGateParam
Definition: attribparam.h:394
Attrib::BoolParam
Bool parameter that is used by an attribute.
Definition: attribparam.h:65
Attrib::NumParam::getCompositeValue
virtual bool getCompositeValue(BufferString &res) const
Definition: attribparam.h:174
Attrib::NumGateParam
Gate parameter that is used by an attribute. For example: IntGateParam, FloatGateParam,...
Definition: attribparam.h:252
Attrib::BinIDParam::toString
void toString(BufferString &, const BinID &) const
Attrib::BinIDParam::setLimits
void setLimits(const Interval< int > &inlrg, const Interval< int > &crlrg)
Attrib::NumGateParam::clone
virtual NumGateParam< T > * clone() const
Definition: attribparam.h:264
mUdf
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:274
Attrib::NumParam::getIntValue
virtual int getIntValue(int idx=0) const
Definition: attribparam.h:190
Attrib::BinIDParam::setLimits
void setLimits(int mininl, int maxinl, int mincrl, int maxcrl)
Attrib::ValParam::getIntValue
virtual int getIntValue(int idx=0) const
Attrib::BinIDParam::getDefaultValue
BufferString getDefaultValue() const
Attrib::StringParam::getCompositeValue
virtual bool getCompositeValue(BufferString &) const
Attrib::BinIDParam::setDefaultValue
void setDefaultValue(const BinID &)
Attrib::EnumParam::getDefaultValue
BufferString getDefaultValue() const
Attrib::BinIDParam::getDefaultBinIDValue
BinID getDefaultBinIDValue() const
Attrib::EnumParam::mODTextTranslationClass
mODTextTranslationClass(EnumParam)
Attrib::BinIDParam::mODTextTranslationClass
mODTextTranslationClass(BinIDParam)
Attrib::BoolParam::BoolParam
BoolParam(const char *, bool, bool isreq=true)
Attrib::StringParam::StringParam
StringParam(const char *key, const char *defstr, bool isreq=true)
Attrib
Semblance Attribute.
Definition: attribdataholder.h:25
Interval< int >
Attrib::EnumParam::addEnums
void addEnums(const char **)
toString
BufferString toString(const BufferStringSet &bss)
Definition: bufstringset.h:156
Attrib::SeisStorageRefParam::mODTextTranslationClass
mODTextTranslationClass(SeisStorageRefParam)
Attrib::BinIDParam::getValue
BinID getValue() const
Attrib::DoubleGateParam
NumGateParam< double > DoubleGateParam
Definition: attribparam.h:395
Attrib::EnumParam::setSet
void setSet(bool yn=true)
Attrib::NumParam::getDefaultValue
virtual BufferString getDefaultValue() const
Definition: attribparam.h:232
Attrib::ValParam
Attribute Value Parameter.
Definition: attribparambase.h:94
Attrib::NumParam::setLimits
void setLimits(const Interval< T > &)
Definition: attribparam.h:215

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