OpendTect  6.3
ascstream.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: 2-5-1995
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "basicmod.h"
14 #include "bufstring.h"
15 #include "plftypes.h"
16 #include "od_iostream.h"
17 
18 #define mAscStrmParagraphMarker "!"
19 #define mAscStrmKeyValSep ':'
20 
21 
31 {
32 
33 public:
34 
35  ascostream(od_ostream&);
36  ascostream(od_ostream*); // becomes mine
37  virtual ~ascostream();
38 
39  bool isOK() const;
40 
41  bool putHeader(const char* filetype);
42  bool put(const char*,const char* val=0);
43  bool put(const char*,const OD::String&);
44 
45 #define mAscStreamDefFns(fn,typ) \
46  bool fn(const char*,typ); \
47  bool fn(const char*,typ,typ); \
48  bool fn(const char*,typ,typ,typ); \
49  bool fn(const char*,typ,typ,typ,typ)
50  mAscStreamDefFns(put,int);
54  mAscStreamDefFns(put,float);
55  mAscStreamDefFns(put,double);
56  mAscStreamDefFns(putYN,bool);
57 #undef mAscStreamDefFns
58 
59  void newParagraph();
60 
61  inline od_ostream& stream() { return strm_; }
62 
63 protected:
64 
66  bool strmmine_;
67 
68  void putKeyword(const char*,bool wsep=true);
69 
70 };
71 
72 
82 {
83 public:
84  ascistream(od_istream&,bool rdhead=true);
85  ascistream(od_istream*,bool rdhead=true);
86  virtual ~ascistream();
87 
88  ascistream& next();
89  bool isOK() const;
90 
91  const char* headerStartLine() const { return header_.buf(); }
92  bool hasStandardHeader() const;
93  const char* fileType() const { return filetype_.buf(); }
94  bool isOfFileType(const char*) const;
95  const char* version() const;
96  const char* timeStamp() const { return timestamp_.buf(); }
97  int majorVersion() const;
98  int minorVersion() const;
99 
100  enum EntryType { Empty, Keyword, KeyVal, ParagraphMark, EndOfFile };
101  EntryType type() const;
102  bool atEOS() const { return type() > KeyVal; }
104 
105  const char* keyWord() const { return keybuf_.buf(); }
106  const char* value() const { return valbuf_.buf(); }
107  bool hasKeyword(const char*) const;
108  bool hasValue(const char*) const;
109  int getIValue(int i=0) const;
110  od_uint32 getUIValue(int i=0) const;
111  od_int64 getI64Value(int i=0) const;
112  od_uint64 getUI64Value(int i=0) const;
113  float getFValue(int i=0) const;
114  double getDValue(int i=0) const;
115  bool getYN(int i=0) const;
116 
117  inline od_istream& stream() { return strm_; }
118 
119  // This is for overriding what's in the file
120  void setKeyWord( const char* s ) { keybuf_ = s; }
121  void setValue( const char* s ) { valbuf_ = s; }
122 
123 protected:
124 
126  bool strmmine_;
129 
133 
134 private:
135 
136  void init(bool);
137 
138 };
139 
140 
141 inline bool atEndOfSection( const ascistream& strm )
142 { return strm.atEOS(); }
#define mExpClass(module)
Definition: commondefs.h:157
void setKeyWord(const char *s)
Definition: ascstream.h:120
bool atEOS() const
returns true if at end of segment (='paragraph')
Definition: ascstream.h:102
od_istream & stream()
Definition: ascstream.h:117
OD class for stream write common access to the user log file, or std::cout in batch progs...
Definition: od_ostream.h:25
const char * keyWord() const
Definition: ascstream.h:105
void setValue(const char *s)
Definition: ascstream.h:121
#define od_int64
Definition: plftypes.h:34
OpendTect standard ascii format file writing.
Definition: ascstream.h:30
bool init()
BufferString header_
Definition: ascstream.h:130
OD class for stream read.
Definition: od_istream.h:23
od_ostream & stream()
Definition: ascstream.h:61
bool atEndOfSection(const ascistream &strm)
Definition: ascstream.h:141
#define od_uint32
Definition: plftypes.h:30
encapsulates the read-access-only part of strings in OD.
Definition: odstring.h:29
bool strmmine_
Definition: ascstream.h:126
bool strmmine_
Definition: ascstream.h:66
OpendTect standard ascii format file reading.
Definition: ascstream.h:81
BufferString valbuf_
Definition: ascstream.h:128
Definition: ascstream.h:100
#define od_uint64
Definition: plftypes.h:35
BufferString filetype_
Definition: ascstream.h:131
const char * fileType() const
Definition: ascstream.h:93
od_istream & strm_
Definition: ascstream.h:125
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
#define mAscStreamDefFns(fn, typ)
Definition: ascstream.h:45
const char * value() const
Definition: ascstream.h:106
od_ostream & strm_
Definition: ascstream.h:65
BufferString timestamp_
Definition: ascstream.h:132
EntryType
Definition: ascstream.h:100
const char * timeStamp() const
Definition: ascstream.h:96
BufferString keybuf_
Definition: ascstream.h:127
const char * headerStartLine() const
Definition: ascstream.h:91

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