OpendTect  6.6
bindatadesc.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: Feb 2001
9  Contents: Binary data interpretation
10  RCS: $Id$
11 ________________________________________________________________________
12 
13 */
14 
15 #include "basicmod.h"
16 #include "gendefs.h"
17 
18 #define mDeclBinDataDescConstr(T,ii,is) \
19  BinDataDesc( const T* ) { set( ii, is, sizeof(T) ); } \
20  BinDataDesc( const T& ) { set( ii, is, sizeof(T) ); }
21 
43 {
44 public:
45 
46  enum ByteCount { N1=1, N2=2, N4=4, N8=8 };
47 
48  BinDataDesc( bool ii=false, bool is=true,
49  ByteCount b=N4 )
50  : isint_(ii), issigned_(is), nrbytes_(b) {}
51  BinDataDesc( bool ii, bool is, int b )
52  : isint_(ii), issigned_(is),
53  nrbytes_(nearestByteCount(ii,b)) {}
54  BinDataDesc( unsigned char c1, unsigned char c2 )
55  { set(c1,c2); }
56  BinDataDesc( const char* s ) { set(s); }
57  virtual ~BinDataDesc() {}
58 
59  inline bool isInteger() const { return isint_; }
60  inline bool isSigned() const { return issigned_; }
61  inline ByteCount nrBytes() const { return nrbytes_; }
62  inline void set( bool ii, bool is, ByteCount b )
63  { isint_ = ii; issigned_ = is; nrbytes_ = b; }
64  inline void set( bool ii, bool is, int b )
65  { isint_ = ii; issigned_ = is;
66  nrbytes_ = nearestByteCount(ii,b); }
67  void setInteger( bool yn ) { isint_ = yn; }
68  void setSigned( bool yn ) { issigned_ = yn; }
69  void setNrBytes( ByteCount n ) { nrbytes_ = n; }
70  void setNrBytes( int n )
71  { nrbytes_ = nearestByteCount(isint_,n); }
72 
73  // dump/restore
74  virtual int maxStringifiedSize() const { return 18; }
75  virtual void toString(BufferString&) const;
76  virtual void set(const char*);
77  virtual void dump(unsigned char&,unsigned char&) const;
78  virtual void set(unsigned char,unsigned char);
79 
80  mDeclBinDataDescConstr(signed char,true,true)
81  mDeclBinDataDescConstr(short,true,true)
82  mDeclBinDataDescConstr(int,true,true)
83  mDeclBinDataDescConstr(unsigned char,true,false)
84  mDeclBinDataDescConstr(unsigned short,true,false)
85  mDeclBinDataDescConstr(unsigned int,true,false)
86  mDeclBinDataDescConstr(float,false,true)
87  mDeclBinDataDescConstr(double,false,true)
88 
89  inline bool operator ==( const BinDataDesc& dc ) const
90  { return isEqual(dc); }
91  inline bool operator !=( const BinDataDesc& dc ) const
92  { return !isEqual(dc); }
93  inline bool isEqual( const BinDataDesc& dc ) const
94  {
95  unsigned char c11=0, c12=0, c21=0, c22=0;
96  dump(c11,c12); dc.dump(c21,c22);
97  return c11 == c21 && c12 == c22;
98  }
99 
100  int sizeFor( int n ) const { return nrbytes_ * n; }
101  virtual bool convertsWellTo(const BinDataDesc&) const;
102 
103  static ByteCount nearestByteCount( bool is_int, int s )
104  {
105  if ( !is_int ) return s > 6 ? N8 : N4;
106  if ( s > 6 ) s = 8;
107  else if ( s > 2 ) s = 4;
108  else if ( s < 2 ) s = 1;
109  return (ByteCount)s;
110  }
111 
112  static int nextSize( bool is_int, int s )
113  {
114  if ( s < 0 || s > 8 ) return -1;
115  if ( s == 0 ) return is_int ? 1 : 4;
116  if ( !is_int ) return s == 4 ? 8 : -1;
117  return s == 1 ? 2 : ( s == 2 ? 4 : 8 );
118  }
119 
120 protected:
121 
122  bool isint_;
123  bool issigned_;
125 
126  void setFrom(unsigned char,bool);
127 
128 };
129 
130 #undef mDeclBinDataDescConstr
131 
132 
BinDataDesc::~BinDataDesc
virtual ~BinDataDesc()
Definition: bindatadesc.h:57
BinDataDesc::BinDataDesc
BinDataDesc(const char *s)
Definition: bindatadesc.h:56
BinDataDesc::isint_
bool isint_
Definition: bindatadesc.h:122
BinDataDesc::set
void set(bool ii, bool is, int b)
Definition: bindatadesc.h:64
BinDataDesc::set
virtual void set(const char *)
BinDataDesc::isInteger
bool isInteger() const
Definition: bindatadesc.h:59
BinDataDesc::nearestByteCount
static ByteCount nearestByteCount(bool is_int, int s)
Definition: bindatadesc.h:103
BinDataDesc::setNrBytes
void setNrBytes(ByteCount n)
Definition: bindatadesc.h:69
BinDataDesc::isSigned
bool isSigned() const
Definition: bindatadesc.h:60
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
BinDataDesc::BinDataDesc
BinDataDesc(bool ii, bool is, int b)
Definition: bindatadesc.h:51
BinDataDesc::nextSize
static int nextSize(bool is_int, int s)
Definition: bindatadesc.h:112
BinDataDesc::setFrom
void setFrom(unsigned char, bool)
BinDataDesc::setSigned
void setSigned(bool yn)
Definition: bindatadesc.h:68
BinDataDesc::maxStringifiedSize
virtual int maxStringifiedSize() const
Definition: bindatadesc.h:74
BinDataDesc::set
void set(bool ii, bool is, ByteCount b)
Definition: bindatadesc.h:62
BinDataDesc::setInteger
void setInteger(bool yn)
Definition: bindatadesc.h:67
BinDataDesc::ByteCount
ByteCount
Definition: bindatadesc.h:46
BinDataDesc::BinDataDesc
BinDataDesc(bool ii=false, bool is=true, ByteCount b=N4)
Definition: bindatadesc.h:48
BinDataDesc::nrbytes_
ByteCount nrbytes_
Definition: bindatadesc.h:124
BinDataDesc::toString
virtual void toString(BufferString &) const
operator!=
bool operator!=(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:90
BinDataDesc::convertsWellTo
virtual bool convertsWellTo(const BinDataDesc &) const
gendefs.h
BinDataDesc::BinDataDesc
BinDataDesc(unsigned char c1, unsigned char c2)
Definition: bindatadesc.h:54
BinDataDesc
Description of binary data.
Definition: bindatadesc.h:43
BinDataDesc::setNrBytes
void setNrBytes(int n)
Definition: bindatadesc.h:70
Conv::set
void set(T &_to, const F &fr)
template based type conversion
Definition: convert.h:27
BinDataDesc::set
virtual void set(unsigned char, unsigned char)
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
BinDataDesc::issigned_
bool issigned_
Definition: bindatadesc.h:123
BinDataDesc::sizeFor
int sizeFor(int n) const
Definition: bindatadesc.h:100
mDeclBinDataDescConstr
#define mDeclBinDataDescConstr(T, ii, is)
Definition: bindatadesc.h:18
BinDataDesc::isEqual
bool isEqual(const BinDataDesc &dc) const
Definition: bindatadesc.h:93
BinDataDesc::dump
virtual void dump(unsigned char &, unsigned char &) const
BinDataDesc::nrBytes
ByteCount nrBytes() const
Definition: bindatadesc.h:61

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