FARGOS/VISTA Object Management Environment Core  ..
FARGOS/VISTA Object Management Environment Core Table of Contents
OMEencode.h
Go to the documentation of this file.
1 #ifndef _OME_ENCODE_H
2 #define _OME_ENCODE_H "$Id: OMEencode.h 312 2020-03-21 21:25:35Z geoff $"
4 
6 # include <OMEstring.h>
7 
21 {
22  friend class OMEencodeBuffer;
23 protected:
26  bool ownData;
27 
28 public:
29  OMEencodeBufferElement(OMEstring *d, bool own = true)
30  {
31  next = nullptr;
32  data = own ? d : new OMEstring(*d);
33  ownData = own;
34  }
35 
37  {
38  delete data;
39  }
40 
41  size_t elementSize() const
42  {
43  return (data->length());
44  }
45 
46  const OMEstring &getData() const
47  {
48  return (*data);
49  }
50 }; // end class OMEencodeBufferElement
51 
55 {
56 protected:
59  size_t totalSize;
60  uint32_t encodeVersion;
61 
62 public:
63  OMEencodeBuffer(uint32_t version = 1)
64  {
65  start = nullptr;
66  last = nullptr;
67  totalSize = 0;
68  encodeVersion = version;
69  }
70 
71  // convenience function, create and initialize with contents of string
72  OMEencodeBuffer(OMEstring *data, uint32_t version = 1)
73  {
75  new OMEencodeBufferElement(data, 0); // don't own it
76  start = elem;
77  last = elem;
78  totalSize = elem->elementSize();
79  encodeVersion = version;
80  }
81 
82  ~OMEencodeBuffer();
83 
85  {
86  if (last != nullptr) {
87  last->next = elem;
88  }
89  else {
90  start = elem;
91  }
92  last = elem;
93  totalSize += elem->elementSize();
94  }
95 
96  uint32_t getEncodeVersion() const
97  {
98  return (encodeVersion);
99  }
100 
101  size_t bufferSize() const
102  {
103  return (totalSize);
104  }
105 
106  OMEstring *condenseIntoString(bool includeVersionID);
107 }; // end class OMEencodeBuffer
108 
109 typedef int (*OMEencodeRoutineFP)(OMEencodeBuffer *, const class OMEtype &);
110 
111 typedef OMEtype *(*OMEdecodeRoutineFP)(uint32_t version,
112  const OMEstring *encodedData, size_t *offset);
113 
114 
120  uint32_t encodeVersion;
123 };
124 
126 
128 
129 extern OME_DLL_EXPORT uint_fast16_t OMElistDefinedEncodingVersions(class OMEarray &retList);
130 
132 
134 
135 extern OME_DLL_EXPORT OMEstring *OMEgzipString(const OMEstring &data);
136 
138 
142 #endif
143 /* vim: set expandtab shiftwidth=4 tabstop=4: */
OMEencodeBuffer::condenseIntoString
OMEstring * condenseIntoString(bool includeVersionID)
Serialize all OMEencodeBufferElement items into a single string.
Definition: OMEencode.cpp:75
OMEencodeBufferElement::ownData
bool ownData
Definition: OMEencode.h:26
OMEstring.h
OME string implementation.
OMEuncompressString
OME_DLL_EXPORT OMEstring * OMEuncompressString(const OMEstring &data)
Uncompress a previously compressed string.
Definition: OMEcompress.cpp:61
OMEdecodeRoutineFP
OMEtype *(* OMEdecodeRoutineFP)(uint32_t version, const OMEstring *encodedData, size_t *offset)
Definition: OMEencode.h:111
OMElistDefinedEncodingVersions
uint_fast16_t OMElistDefinedEncodingVersions(OMEarray &list)
Obtain a list of available encoding routines.
Definition: OMEencode.cpp:134
OMEstring
Implements text and binary string storage.
Definition: OMEstring.h:305
OMEencode.h
OME type encoding routines.
OMEencodeBuffer
Buffer into which OMEtype data is encoded.
Definition: OMEencode.h:54
OMEencodeBuffer::OMEencodeBuffer
OMEencodeBuffer(uint32_t version=1)
Definition: OMEencode.h:63
OME_LAST_TYPE_INDEX
@ OME_LAST_TYPE_INDEX
Definition: OMEmanifests.h:101
OMEtype
Fundamental ANY type for FARGOS/VISTA Object Management Environment.
Definition: OMEbaseType.h:250
OMEgzipString
OME_DLL_EXPORT OMEstring * OMEgzipString(const OMEstring &data)
Compress a string into RFC 1952 format.
Definition: OMEcompress.cpp:113
OMEloadVersion1Encodings
OME_DLL_EXPORT void OMEloadVersion1Encodings()
Definition: encodeVer1.cpp:631
OMEencodeBufferElement::next
OMEencodeBufferElement * next
Definition: OMEencode.h:24
OMEencodeBufferElement::data
OMEstring * data
Definition: OMEencode.h:25
OMEencodeBuffer::OMEencodeBuffer
OMEencodeBuffer(OMEstring *data, uint32_t version=1)
Definition: OMEencode.h:72
OMEgunzipString
OME_DLL_EXPORT OMEstring * OMEgunzipString(const OMEstring &data)
Uncompress a string in RFC 1592 format.
Definition: OMEcompress.cpp:227
OMEencodeBuffer::last
OMEencodeBufferElement * last
Definition: OMEencode.h:58
OMEencodeBufferElement::getData
const OMEstring & getData() const
Return the encoded data.
Definition: OMEencode.h:46
OMEencodeRoutines::encodeFunctions
OMEencodeRoutineFP encodeFunctions[OME_LAST_TYPE_INDEX]
Definition: OMEencode.h:121
srcID
const char srcID[]
Definition: catSym.c:17
OMEencodeBuffer::~OMEencodeBuffer
~OMEencodeBuffer()
Definition: OMEencode.cpp:61
OMEencodeBufferElement::OMEencodeBufferElement
OMEencodeBufferElement(OMEstring *d, bool own=true)
Definition: OMEencode.h:29
OMEencodeRoutineFP
int(* OMEencodeRoutineFP)(OMEencodeBuffer *, const class OMEtype &)
Definition: OMEencode.h:109
OMEencodeBuffer::addEncodedElement
void addEncodedElement(OMEencodeBufferElement *elem)
Append an encoded element to the collection.
Definition: OMEencode.h:84
OMEencodeBuffer::bufferSize
size_t bufferSize() const
Get size of buffer in bytes.
Definition: OMEencode.h:101
OMEencodeRoutines::decodeFunctions
OMEdecodeRoutineFP decodeFunctions[OME_LAST_TYPE_INDEX]
Definition: OMEencode.h:122
OMEencodeBuffer::start
OMEencodeBufferElement * start
Definition: OMEencode.h:57
OMEtype.h
OME fundamental type implementation.
OMEcompressString
OME_DLL_EXPORT OMEstring * OMEcompressString(const OMEstring &data)
Compress a string.
Definition: OMEcompress.cpp:28
OMEstring::length
size_t length() const
Definition: OMEstring.h:401
OME_USED
const char srcID[] OME_USED
Definition: tick_time.cpp:24
OMEencodeRoutines::encodeVersion
uint32_t encodeVersion
Definition: OMEencode.h:120
ntohl
#define ntohl(x)
Definition: tmp.o.cpp:3101
OMEencodeBuffer::totalSize
size_t totalSize
Definition: OMEencode.h:59
OMEencodeRoutines
Description for OME encoding routines for a specific encoding version.
Definition: OMEencode.h:118
OMEencodeBuffer::getEncodeVersion
uint32_t getEncodeVersion() const
Get version Id of encoding version.
Definition: OMEencode.h:96
OMEencodeRoutines::next
OMEencodeRoutines * next
Definition: OMEencode.h:119
OME_DLL_EXPORT
#define OME_DLL_EXPORT
Definition: compiler_hints.h:464
OMEarray
Implements sparse array of OMEtype elements.
Definition: OMEarray.h:75
OMEencodeBufferElement
Holds data for a single encoded OMEtype element. Multiple OMEencodeBufferElement objects are linked t...
Definition: OMEencode.h:20
htonl
#define htonl(x)
Definition: tmp.o.cpp:3098
OMEencodeBuffer::encodeVersion
uint32_t encodeVersion
Definition: OMEencode.h:60
OMEencodeBufferElement::elementSize
size_t elementSize() const
Return length of encoded element.
Definition: OMEencode.h:41
OMEencodeBufferElement::~OMEencodeBufferElement
~OMEencodeBufferElement()
Definition: OMEencode.h:36
OMEdefineEncodeRoutinesForVersion
void OMEdefineEncodeRoutinesForVersion(OMEencodeRoutines *routines)
Register encoding routines for OMEtype data.
Definition: OMEencode.cpp:121
Generated: Fri Jul 31 2020 18:19:14
Support Information