OpendTect  6.3
ioobj.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: 31-7-1995
9 ________________________________________________________________________
10 
11 -*/
12 
13 
14 #include "generalmod.h"
15 #include "dbkey.h"
16 #include "namedobj.h"
17 #include "uistring.h"
18 
19 class Conn;
20 class IOObj;
21 class CallBack;
22 class ascistream;
23 class ascostream;
24 class Translator;
25 
26 
27 /*\brief factory entry for IOObjs. Should deliver IOObj of certain type. */
28 
30 {
31 public:
32 
33  virtual ~IOObjProducer() {}
34  virtual bool canMake(const char*) const = 0;
35  virtual IOObj* make(const char*,const DBKey&,
36  bool fill_defs) const = 0;
37 
38 };
39 
40 /*\brief object describing how to do I/O for objects
41 
42 The IOMan object manager manages IODir directories of IOObj objects. These
43 objects contain the information needed to do the I/O needed for the storage
44 that is accessed in OpendTect software.
45 
46 Every IOObj has a unique key in the form of a DBKey. This key
47 holds (a) the position of the IOObj in the IOMan/IODir tree (b) a unique
48 integer as an index in the IOObj's own IODir.
49 
50 If you know an IOObj is actually pointing to a simple file (i.e. if it's an
51 IOStream), then you can get the full filename (i.e. with path) using
52 mainFileName().
53 
54 */
55 
56 
57 mExpClass(General) IOObj : public NamedObject
58 {
59 public:
60 
61  typedef DBKey::ObjID ObjID;
63  typedef DBKey::GroupID DirID;
64 
65  uiString uiName() const { return toUiString(name()); }
66 
67  IOObj* clone() const;
68  virtual DBKey key() const { return key_; }
69  virtual ObjID objID() const { return key_.objID();}
70 
71  virtual ~IOObj();
72  virtual bool isBad() const = 0;
73  virtual void copyFrom(const IOObj&);
74  virtual bool hasConnType( const char* s ) const
75  { return connType() == s; }
76 
77  virtual const char* connType() const = 0;
78  virtual bool isStream() const { return false;}
79  virtual Conn* getConn(bool forread) const = 0;
80 
81  virtual const OD::String& translator() const {return transl_;}
82  virtual void setTranslator( const char* s ) {transl_ = s; }
83  virtual const OD::String& group() const {return group_;}
84  virtual void setGroup( const char* s ) {group_ = s; }
85  virtual const char* fullUserExpr(bool forread=true) const = 0;
86  virtual BufferString mainFileName() const { return fullUserExpr(); }
87 
88  virtual bool implExists(bool forread) const = 0;
89  virtual bool implReadOnly() const { return true; }
90  virtual bool implRemove() const { return false;}
91  virtual bool implManagesObjects() const { return false;}
92  virtual bool implRename(const char*,const CallBack* cb=0)
93  { return false; }
94  virtual bool implSetReadOnly(bool) const { return false;}
95 
96  virtual const char* dirName() const { return dirnm_; }
98  virtual IOPar& pars() const { return pars_;}
101  void updateCreationPars() const;
102 
103  static bool isKey(const char*);
106  static bool isSurveyDefault(const DBKey&);
108  void setSurveyDefault(const char* subsel = 0) const;
113  Translator* createTranslator() const;
116  void setKeyForNewEntry(DirID);
118 
119  inline bool isTmp() const
120  { return isTmpObjNr(objID().getI());}
121  bool isProcTmp() const;
122  bool isUserSelectable(bool forread=true) const;
123  bool isInCurrentSurvey() const;
124 
125  inline bool isInvalid() const { return key().isInvalid();}
126  static const IOObj& getInvalid();
127  static inline ObjNrType tmpObjNrStart() { return 999999; }
128  static inline bool isTmpObjNr( ObjNrType nr )
129  { return nr >= tmpObjNrStart(); }
130 
131 protected:
132 
137 
138  IOObj(const char* nm=0,DBKey ky=DBKey::getInvalid());
139  IOObj(const IOObj&);
140  static IOObj* get(ascistream&,const char*,DirID,bool rejoldtmp=true);
141  bool put(ascostream&) const;
142  virtual bool getFrom(ascistream&) = 0;
143  virtual bool putTo(ascostream&) const = 0;
144 
145 private:
146 
147  friend class DBDir;
148 
149  static IOObj* produce(const char*,const char* nm,const DBKey& ky,
150  bool initdefaults);
151  void copyClassData(const IOObj&);
153 
154 public:
155 
156  void setKey( const DBKey& ky ) { key_ = ky; }
157  virtual void setDirName( const char* s ) { dirnm_ = s; }
158  virtual bool isSubdir() const { return false; }
159  virtual void setAbsDirectory(const char*) {}
160  static int addProducer(IOObjProducer*);
162 
163 };
164 
165 mGlobal(General) bool equalIOObj(const DBKey&,const DBKey&);
166 mGlobal(General) bool areEqual(const IOObj*,const IOObj*);
167 mGlobal(General) bool fullImplRemove(const IOObj&);
#define mExpClass(module)
Definition: commondefs.h:157
BufferString dirnm_
Definition: ioobj.h:133
BufferString group_
Definition: ioobj.h:136
virtual bool isUserSelectable(bool forread=true) const
Definition: transl.h:149
virtual const char * connType() const
virtual BufferString mainFileName() const
Definition: ioobj.h:86
Definition: ioobj.h:57
Definition: dbdir.h:36
virtual bool isStream() const
Definition: ioobj.h:78
static bool isTmpObjNr(ObjNrType nr)
Definition: ioobj.h:128
#define mGlobal(module)
Definition: commondefs.h:160
virtual ObjID objID() const
Definition: ioobj.h:69
virtual void setAbsDirectory(const char *)
Definition: ioobj.h:159
virtual bool implExists(const IOObj *, bool forread) const
OpendTect standard ascii format file writing.
Definition: ascstream.h:30
DBKey::ObjID ObjID
Definition: ioobj.h:61
void setKey(const DBKey &ky)
Definition: ioobj.h:156
DBKey::GroupID DirID
Definition: ioobj.h:63
BufferString transl_
Definition: ioobj.h:135
Definition: uistring.h:88
int ObjNrType
Definition: groupedid.h:39
virtual const OD::String & group() const
Definition: ioobj.h:83
virtual void setDirName(const char *s)
Definition: ioobj.h:157
virtual IOPar & pars() const
Definition: ioobj.h:98
virtual bool implSetReadOnly(bool) const
Definition: ioobj.h:94
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
virtual DBKey key() const
Definition: ioobj.h:68
encapsulates the read-access-only part of strings in OD.
Definition: odstring.h:29
TranslatorGroup * group_
Definition: transl.h:161
virtual bool implRename(const char *, const CallBack *cb=0)
Definition: ioobj.h:92
uiString uiName() const
Definition: ioobj.h:65
void copyClassData(const SharedObject &)
IOPar & pars_
Definition: ioobj.h:152
uiString toUiString(const DBKey &ky)
Definition: dbkey.h:117
virtual ~IOObjProducer()
Definition: ioobj.h:33
static ObjNrType tmpObjNrStart()
Definition: ioobj.h:127
static DBKey getInvalid()
Definition: dbkey.h:57
bool isInvalid() const
Definition: ioobj.h:125
OpendTect standard ascii format file reading.
Definition: ascstream.h:81
virtual bool implRemove() const
Definition: ioobj.h:90
bool fullImplRemove(const IOObj &)
I/O Interpreter class for a certain object type.
Definition: transl.h:122
virtual bool implManagesObjects() const
Definition: ioobj.h:91
Definition: conn.h:31
virtual void setTranslator(const char *s)
Definition: ioobj.h:82
bool isTmp() const
Definition: ioobj.h:119
virtual bool hasConnType(const char *s) const
Definition: ioobj.h:74
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
virtual bool isSubdir() const
Definition: ioobj.h:158
Definition: ioobj.h:29
object with a name.
Definition: namedobj.h:20
virtual const char * dirName() const
The directory ame within the tree.
Definition: ioobj.h:96
DBKey::ObjNrType ObjNrType
Definition: ioobj.h:62
DBKey key_
Definition: ioobj.h:134
Full key to any object in the OpendTect data store.
Definition: dbkey.h:36
virtual void setGroup(const char *s)
Definition: ioobj.h:84
bool areEqual(const IOObj *, const IOObj *)
bool equalIOObj(const DBKey &, const DBKey &)
CallBacks object-oriented (object + method).
Definition: callback.h:62
virtual bool implReadOnly() const
Definition: ioobj.h:89
virtual const OD::String & translator() const
Definition: ioobj.h:81

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