OpendTect  6.3
seisbuf.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: A.H. Bril
8  Date: 29-1-98
9 ________________________________________________________________________
10 
11 */
12 
13 
14 #include "seisinfo.h"
15 #include "executor.h"
16 #include "uistring.h"
17 class SeisTrc;
18 class SeisPacketInfo;
19 namespace Seis { class Provider; }
20 
21 
29 { mODTextTranslationClass(SeisTrcBuf);
30 public:
31 
32  SeisTrcBuf( bool ownr )
33  : owner_(ownr) {}
34  SeisTrcBuf( const SeisTrcBuf& b )
35  : owner_(b.owner_) { b.copyInto( *this ); }
36  virtual ~SeisTrcBuf() { if ( owner_ ) deepErase(); }
37  inline void setIsOwner( bool yn ) { owner_ = yn; }
38  inline bool isOwner() const { return owner_; }
39 
40  void copyInto(SeisTrcBuf&) const;
41  void stealTracesFrom(SeisTrcBuf&);
42  virtual SeisTrcBuf* clone() const { return new SeisTrcBuf(*this);}
43 
44  void deepErase();
45  inline void erase()
46  { if ( owner_ ) deepErase(); else trcs_.erase(); }
47 
48  inline int size() const { return trcs_.size(); }
49  inline bool isEmpty() const { return trcs_.isEmpty(); }
50  inline bool validIdx( od_int64 idx ) const
51  { return trcs_.validIdx(idx); }
52  void insert(SeisTrc*,int atidx=0);
53  inline SeisTrc* replace( int idx, SeisTrc* t )
54  { return trcs_.replace(idx,t); }
55  inline void add( SeisTrc* t ) { trcs_ += t; }
56  void add(SeisTrcBuf&);
57  void addTrcsFrom(ObjectSet<SeisTrc>&);
58 
59  int find(const BinID&,bool is2d=false) const;
60  int find(const SeisTrc*,bool is2d=false) const;
61  inline SeisTrc* get( int idx )
62  { return trcs_.validIdx(idx) ? trcs_[idx] : 0; }
63  inline const SeisTrc* get( int idx ) const
64  { return trcs_.validIdx(idx) ? trcs_[idx] : 0; }
65  inline void remove( SeisTrc* t ) { if ( t ) trcs_ -= t; }
66  inline SeisTrc* remove( int idx )
67  {
68  if ( !trcs_.validIdx(idx) )
69  return 0;
70 
71  SeisTrc* t = trcs_[idx];
72  if (t) trcs_-=t; return t;
73  }
74 
75  SeisTrc* first() { return trcs_.first(); }
76  const SeisTrc* first() const { return trcs_.first(); }
77  SeisTrc* last() { return trcs_.last(); }
78  const SeisTrc* last() const { return trcs_.last(); }
79 
80  void revert(); // last becomes first
81  void fill(SeisPacketInfo&) const;
82 
83  bool isSorted(bool ascending,SeisTrcInfo::Fld) const;
84  void sort(bool ascending,SeisTrcInfo::Fld);
85  void sortForWrite(bool is2d);
86  void enforceNrTrcs(int nrrequired,SeisTrcInfo::Fld,
87  bool stack_before_remove=false);
89  float* getHdrVals(SeisTrcInfo::Fld,double& offs);
92 
93  bool dump(const char* filenm,bool is2d,bool isps,
94  int icomp=0) const;
96 
97 protected:
98 
100  bool owner_;
101 
102  int probableIdx(const BinID&,bool is2d) const;
103 
104 };
105 
106 
109 public:
111 
112  uiString message() const { return msg_; }
113  uiString nrDoneText() const { return tr("Traces read"); }
114  od_int64 nrDone() const { return buf_.size(); }
115  od_int64 totalNr() const { return totnr_; }
116  int nextStep();
117 
118 protected:
119 
124 
125 };
#define mExpClass(module)
Definition: commondefs.h:157
Seismics.
Definition: segydirectdef.h:20
SeisTrcBuf & buf_
Definition: seisbuf.h:121
const SeisTrc * last() const
Definition: seisbuf.h:78
uiString msg_
Definition: seisbuf.h:123
Seis::Provider & prov_
Definition: seisbuf.h:120
is the access point for seismic traces. Instantiate a subclass and ask for what you need...
Definition: seisprovider.h:54
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
Definition: seisbuf.h:107
const SeisTrc * first() const
Definition: seisbuf.h:76
Information for a packet of seismics, AKA tape header info.
Definition: seispacketinfo.h:23
ObjectSet< SeisTrc > trcs_
Definition: seisbuf.h:99
void erase()
Definition: seisbuf.h:45
#define od_int64
Definition: plftypes.h:34
void add(SeisTrc *t)
Definition: seisbuf.h:55
SeisTrcBuf(bool ownr)
Definition: seisbuf.h:32
Definition: uistring.h:88
PtrMan< Array2DImpl< PtrMan< SeisTrc > > > trcs_
Definition: horizontracker.h:134
void copyInto(SeisTrcBuf &) const
SeisTrcBuf(const SeisTrcBuf &b)
Definition: seisbuf.h:34
od_int64 nrDone() const
Definition: seisbuf.h:114
FixedString Provider()
Definition: keystrs.h:103
od_int64 totalNr() const
Definition: seisbuf.h:115
Fld
Definition: seisinfo.h:60
uiString message() const
Definition: seisbuf.h:112
bool isEmpty() const
Definition: seisbuf.h:49
SeisTrc * last()
Definition: seisbuf.h:77
bool validIdx(od_int64 idx) const
Definition: seisbuf.h:50
int size() const
Definition: seisbuf.h:48
const T * find(const ObjectSet< T > &os, const S &val)
Get const object in set.
Definition: objectset.h:187
bool isOwner() const
Definition: seisbuf.h:38
void sort(ObjectSet< T > &os)
Sort ObjectSet. Must have operator > defined for elements.
Definition: objectset.h:224
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:28
Seismic trace.
Definition: seistrc.h:31
uiString nrDoneText() const
Definition: seisbuf.h:113
void setIsOwner(bool yn)
Definition: seisbuf.h:37
set of seismic traces.
Definition: seisbuf.h:28
bool owner_
Definition: seisbuf.h:100
SeisTrc * first()
Definition: seisbuf.h:75
virtual SeisTrcBuf * clone() const
Definition: seisbuf.h:42
virtual ~SeisTrcBuf()
Definition: seisbuf.h:36
SeisTrc * replace(int idx, SeisTrc *t)
Definition: seisbuf.h:53
od_int64 totnr_
Definition: seisbuf.h:122
Specification to enable chunkwise execution of a process.
Definition: executor.h:38
void deepErase(ObjectSet< T > &os)
empty the ObjectSet deleting all objects pointed to.
Definition: objectset.h:122

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