OpendTect  6.6
stratlith.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: Bert Bril
8  Date: Dec 2003
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 
13 -*/
14 
15 #include "stratmod.h"
16 #include "namedobj.h"
17 #include "manobjectset.h"
18 #include "color.h"
19 class BufferStringSet;
20 
21 
22 namespace Strat
23 {
24 
36 mExpClass(Strat) Lithology : public ::NamedObject
37 {
38 public:
39 
40  typedef int ID;
41 
42  Lithology(ID id,const char* nm,bool por=false);
43  Lithology( const Lithology& l )
44  : id_(l.id_) { *this = l; }
45  Lithology& operator =(const Lithology&);
46  bool operator ==( const Lithology& l ) const
47  { return l.id_ == id_; }
48 
49  bool isUdf() const { return this == &undef(); }
50  static bool isUdf( ID id ) { return id == undef().id_; }
51 
52  ID id() const { return id_; }
53  bool& porous() { return porous_; }
54  bool porous() const { return porous_; }
55  Color& color() { return color_; }
56  const Color& color() const { return color_; }
57 
58  static const Lithology& undef();
59 
60 protected:
61 
62  const ID id_;
63  bool porous_;
65 
66  friend class LithologySet;
67 
68 public:
69 
70  Lithology(const char*); // from string in file
71  void fill(BufferString&) const;
72 
73 };
74 
75 
77 {
78 public:
80  : anyChange(this) {}
81 
82  int size() const { return lths_.size(); }
83  bool isEmpty() const { return lths_.isEmpty(); }
84  Lithology& getLith( int i ) { return *lths_[i]; }
85  const Lithology& getLith( int i ) const { return *lths_[i]; }
86 
87  int indexOf( const char* nm ) const { return idxOf(nm,-2);}
88  bool isPresent(const char* nm) const { return gtLith(nm,-2);}
89  int indexOf( Lithology::ID id ) const { return idxOf(0,id);}
90  bool isPresent( Lithology::ID id ) const { return gtLith(0,id);}
91 
92  Lithology* get( const char* nm ) { return gtLith(nm,-2);}
93  const Lithology* get( const char* nm ) const { return gtLith(nm,-2);}
94  Lithology* get( Lithology::ID id ) { return gtLith(0,id); }
95  const Lithology* get( Lithology::ID id ) const { return gtLith(0,id); }
96 
97  enum PorSel { OnlyPorous, NotPorous, AllPor };
98  void getNames(BufferStringSet&,PorSel ps=AllPor) const;
99 
101 
102  void reportAnyChange() { anyChange.trigger(); }
104 
105 protected:
106 
108 
109  int idxOf(const char*,Lithology::ID) const;
110  Lithology* gtLith( const char* nm, Lithology::ID id ) const
111  { const int idx = idxOf(nm,id); return idx < 0 ? 0
112  : const_cast<Lithology*>(lths_[idx]); }
113 
114 public:
115 
116  void setEmpty() { lths_.erase(); }
117  const char* add(Lithology*);
119 
120  const ObjectSet<Lithology>& lithologies() const { return lths_; }
121  ObjectSet<Lithology>& lithologies() { return lths_; }
122 
123 };
124 
125 
126 }; // namespace Strat
127 
Strat::LithologySet::LithologySet
LithologySet()
Definition: stratlith.h:79
Strat::LithologySet::setEmpty
void setEmpty()
Definition: stratlith.h:116
Strat::LithologySet
Definition: stratlith.h:77
Strat::Lithology::isUdf
static bool isUdf(ID id)
Definition: stratlith.h:50
Strat::Lithology::porous_
bool porous_
Definition: stratlith.h:63
Strat::LithologySet::idxOf
int idxOf(const char *, Lithology::ID) const
Strat::LithologySet::getNames
void getNames(BufferStringSet &, PorSel ps=AllPor) const
ObjectSet
Set of pointers to objects.
Definition: commontypes.h:31
Strat::Lithology::undef
static const Lithology & undef()
BufferStringSet
Set of BufferString objects.
Definition: bufstringset.h:26
Strat::LithologySet::anyChange
Notifier< LithologySet > anyChange
Definition: stratlith.h:103
Strat::LithologySet::indexOf
int indexOf(Lithology::ID id) const
Definition: stratlith.h:89
Strat::LithologySet::get
const Lithology * get(const char *nm) const
Definition: stratlith.h:93
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
Strat::Lithology::ID
int ID
Definition: stratlith.h:40
namedobj.h
Strat::Lithology::Lithology
Lithology(const Lithology &l)
Definition: stratlith.h:43
CallBacker
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:185
operator==
bool operator==(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:81
Strat::Lithology::fill
void fill(BufferString &) const
ManagedObjectSet
ObjectSet where the objects contained are owned by this set.
Definition: manobjectset.h:57
Strat::LithologySet::isEmpty
bool isEmpty() const
Definition: stratlith.h:83
Strat::Lithology
a name and an ID.
Definition: stratlith.h:37
Strat::Lithology::id_
const ID id_
Definition: stratlith.h:62
Strat::Lithology::porous
bool porous() const
Definition: stratlith.h:54
Strat::Lithology::porous
bool & porous()
Definition: stratlith.h:53
Strat::LithologySet::gtLith
Lithology * gtLith(const char *nm, Lithology::ID id) const
Definition: stratlith.h:110
Notifier
Class to help setup a callback handling.
Definition: notify.h:126
Strat::LithologySet::reportAnyChange
void reportAnyChange()
Definition: stratlith.h:102
Strat::Lithology::Lithology
Lithology(ID id, const char *nm, bool por=false)
Strat::Lithology::isUdf
bool isUdf() const
Definition: stratlith.h:49
Strat::Lithology::id
ID id() const
Definition: stratlith.h:52
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
Strat::LithologySet::indexOf
int indexOf(const char *nm) const
Definition: stratlith.h:87
Strat::LithologySet::lithologies
const ObjectSet< Lithology > & lithologies() const
Definition: stratlith.h:120
Strat::LithologySet::isPresent
bool isPresent(Lithology::ID id) const
Definition: stratlith.h:90
Strat
Stratigraphy.
Definition: stratlevel.h:26
Strat::Lithology::color_
Color color_
Definition: stratlith.h:64
Strat::Lithology::color
Color & color()
Definition: stratlith.h:55
Strat::LithologySet::size
int size() const
Definition: stratlith.h:82
ManagedObjectSetBase::erase
virtual void erase()
Definition: manobjectset.h:161
Strat::LithologySet::getLith
Lithology & getLith(int i)
Definition: stratlith.h:84
Strat::LithologySet::get
const Lithology * get(Lithology::ID id) const
Definition: stratlith.h:95
Strat::Lithology::Lithology
Lithology(const char *)
manobjectset.h
color.h
Strat::LithologySet::get
Lithology * get(Lithology::ID id)
Definition: stratlith.h:94
Strat::LithologySet::lths_
ManagedObjectSet< Lithology > lths_
Definition: stratlith.h:107
Strat::LithologySet::get
Lithology * get(const char *nm)
Definition: stratlith.h:92
Strat::LithologySet::getFreeID
Lithology::ID getFreeID() const
Strat::LithologySet::lithologies
ObjectSet< Lithology > & lithologies()
Definition: stratlith.h:121
Strat::LithologySet::PorSel
PorSel
Definition: stratlith.h:97
Strat::LithologySet::getLith
const Lithology & getLith(int i) const
Definition: stratlith.h:85
Color
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer,...
Definition: color.h:26
Strat::Lithology::color
const Color & color() const
Definition: stratlith.h:56
Strat::LithologySet::isPresent
bool isPresent(const char *nm) const
Definition: stratlith.h:88
Strat::LithologySet::add
const char * add(Lithology *)
returns err msg, or null on success

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