OpendTect  6.3
separstr.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: May 1995
9  Contents: String with a separator between the items
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "basicmod.h"
15 #include "bufstring.h"
16 #include "fixedstring.h"
17 #include "convert.h"
18 
19 class BufferStringSet;
20 class DBKey;
21 
33 {
34 public:
35 
36  SeparString( const char* escapedstr=0, char separ=',' )
37  { initSep( separ ); initRep( escapedstr ); }
38  SeparString( const SeparString& ss )
39  : rep_(ss.rep_) { initSep( ss.sep_[0] ); }
40 
41  SeparString& operator=(const SeparString&);
42  SeparString& operator=(const char* escapedstr);
43 
44  inline bool isEmpty() const { return rep_.isEmpty(); }
45  inline void setEmpty() { rep_.setEmpty(); }
46 
47  int size() const;
48  FixedString operator[](int) const;
49  FixedString from(int) const;
50 
51  int getIValue(int) const;
52  od_uint32 getUIValue(int) const;
53  od_int64 getI64Value(int) const;
54  od_uint64 getUI64Value(int) const;
55  float getFValue(int) const;
56  double getDValue(int) const;
57  bool getYN(int) const;
58 
59  int indexOf(const char* unescapedstr) const;
60 
61  SeparString& add(const BufferStringSet&);
62  SeparString& add(const SeparString&);
63  SeparString& add(const DBKey&);
64  SeparString& add(const char* unescapedstr);
65  inline SeparString& add( const OD::String& ods )
66  { return add( ods.buf() ); }
67  template <class T>
68  inline SeparString& add( T t )
69  { return add( toString(t) ); }
70 
71  SeparString& set( const BufferStringSet& bss )
72  { setEmpty(); return add( bss ); }
73  SeparString& set( const SeparString& s )
74  { setEmpty(); return add( s ); }
75  SeparString& set( const char* unescapedstr )
76  { setEmpty(); return add( unescapedstr ); }
77  inline SeparString& set( const OD::String& ods )
78  { return set( ods.buf() ); }
79  template <class T>
80  inline SeparString& set( T t )
81  { setEmpty(); return add( t ); }
82 
83  template <class T>
84  inline SeparString& operator +=( T t ) { return add( t ); }
85  template <class T>
86  inline SeparString& operator +=( const OD::String& ods )
87  { return add( ods.buf() ); }
88 
89  inline operator const char*() const
90  { return buf(); }
91 
92  inline char* getCStr() { return rep_.getCStr(); }
94  inline const char* buf() const { return rep_.buf(); }
96  BufferString& rep() { return rep_; }
98  const OD::String& rep() const { return rep_; }
100 
101  inline const char* unescapedStr() const { return getUnescaped(buf()); }
105  inline char sepChar() const { return *sep_; }
106  inline const char* sepStr() const { return sep_; }
107  void setSepChar(char);
108 
109 private:
110 
111  char sep_[2];
113 
114  void initRep(const char*);
115  inline void initSep( char s ) { sep_[0] = s; sep_[1] = '\0'; }
116 
118 
119  const char* getEscaped(const char* unescapedstr,char sep) const;
120  const char* getUnescaped(const char* escapedstartptr,
121  const char* nextsep=0) const;
122 
123  const char* findSeparator(const char*) const;
124 };
125 
126 
132 {
133 public:
134 
135  FileMultiString(const char* escapedstr=0)
136  : SeparString(escapedstr, separator() ) {}
137  FileMultiString(const char* s1,const char* s2,
138  const char* s3=0,const char*s4=0);
139  template <class T> FileMultiString( const T& t )
140  : SeparString(t,separator()) {}
141 
142  static char separator() { return '`'; }
143 
144  // The function template overloading add(const SeparString&) in the base
145  // class needs an exact match! Passing a derived object would make the
146  // template function convert it to (const char*).
147  inline FileMultiString& add( const FileMultiString& fms )
148  { return add( (SeparString&)fms ); }
149  template <class T> inline
150  FileMultiString& operator +=( T t ) { return add( t ); }
151  inline FileMultiString& operator +=( const OD::String& ods )
152  { return add( ods.buf() ); }
153 
154  template <class T> inline
156  { SeparString::add( t ); return *this; }
157  inline FileMultiString& add( const OD::String& ods )
158  { return add( ods.buf() ); }
159 
160 };
#define mExpClass(module)
Definition: commondefs.h:157
FileMultiString(const T &t)
Definition: separstr.h:139
char sep_[2]
Definition: separstr.h:111
BufferString rep_
Definition: separstr.h:112
const OD::String & rep() const
Output escaped.
Definition: separstr.h:98
OD::String that holds an existing text string.
Definition: fixedstring.h:27
#define od_int64
Definition: plftypes.h:34
SeparString & add(const BufferStringSet &)
Concatenation.
List encoded in a string.
Definition: separstr.h:32
Set of BufferString objects.
Definition: bufstringset.h:25
ObjectSet< T >::size_type indexOf(const ObjectSet< T > &os, const S &val)
Locate object in set.
Definition: objectset.h:173
FileMultiString(const char *escapedstr=0)
Definition: separstr.h:135
SeparString(const char *escapedstr=0, char separ=',')
Definition: separstr.h:36
SeparString with backquotes as separators, use in most ascii files.
Definition: separstr.h:131
SeparString & add(T t)
Definition: separstr.h:68
static char separator()
Definition: separstr.h:142
char sepChar() const
Definition: separstr.h:105
#define od_uint32
Definition: plftypes.h:30
BufferString retstr_
Definition: separstr.h:117
void setEmpty()
Definition: dbkey.h:83
encapsulates the read-access-only part of strings in OD.
Definition: odstring.h:29
char * getCStr()
Output escaped.
Definition: separstr.h:92
FileMultiString & add(const FileMultiString &fms)
Definition: separstr.h:147
SeparString & add(const OD::String &ods)
Definition: separstr.h:65
BufferString toString(const DBKey &ky)
Definition: dbkey.h:115
const char * buf() const
Definition: odstring.h:45
const char * unescapedStr() const
Definition: separstr.h:101
const char * sepStr() const
Definition: separstr.h:106
#define od_uint64
Definition: plftypes.h:35
bool isEmpty() const
Definition: separstr.h:44
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
FileMultiString & add(T t)
Definition: separstr.h:155
const char * buf() const
Output escaped.
Definition: separstr.h:94
void setEmpty()
Definition: separstr.h:45
Full key to any object in the OpendTect data store.
Definition: dbkey.h:36
void initSep(char s)
Definition: separstr.h:115
FileMultiString & add(const OD::String &ods)
Definition: separstr.h:157
DBKey & operator=(const DBKey &)
BufferString & rep()
Output escaped.
Definition: separstr.h:96
SeparString(const SeparString &ss)
Definition: separstr.h:38

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