GridGain C++
binary_raw_writer.h
Go to the documentation of this file.
1 /*
2  * Copyright 2019 GridGain Systems, Inc. and Contributors.
3  *
4  * Licensed under the GridGain Community Edition License (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * https://www.gridgain.com/products/software/community-edition/gridgain-community-edition-license
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
22 #ifndef _IGNITE_BINARY_BINARY_RAW_WRITER
23 #define _IGNITE_BINARY_BINARY_RAW_WRITER
24 
25 #include <stdint.h>
26 
27 #include <ignite/common/common.h>
28 
29 #include "ignite/impl/binary/binary_writer_impl.h"
32 #include "ignite/guid.h"
33 #include "ignite/date.h"
34 #include "ignite/timestamp.h"
35 
36 namespace ignite
37 {
38  namespace impl
39  {
40  namespace binary
41  {
42  class BinaryUtils;
43  }
44  }
45  namespace binary
46  {
61  class IGNITE_IMPORT_EXPORT BinaryRawWriter
62  {
63  friend class ignite::impl::binary::BinaryUtils;
64  public:
72  BinaryRawWriter(ignite::impl::binary::BinaryWriterImpl* impl);
73 
79  void WriteInt8(int8_t val);
80 
87  void WriteInt8Array(const int8_t* val, int32_t len);
88 
94  void WriteBool(bool val);
95 
102  void WriteBoolArray(const bool* val, int32_t len);
103 
109  void WriteInt16(int16_t val);
110 
117  void WriteInt16Array(const int16_t* val, int32_t len);
118 
124  void WriteUInt16(uint16_t val);
125 
132  void WriteUInt16Array(const uint16_t* val, int32_t len);
133 
139  void WriteInt32(int32_t val);
140 
147  void WriteInt32Array(const int32_t* val, int32_t len);
148 
154  void WriteInt64(int64_t val);
155 
162  void WriteInt64Array(const int64_t* val, int32_t len);
163 
169  void WriteFloat(float val);
170 
177  void WriteFloatArray(const float* val, int32_t len);
178 
184  void WriteDouble(double val);
185 
192  void WriteDoubleArray(const double* val, int32_t len);
193 
199  void WriteGuid(const Guid& val);
200 
207  void WriteGuidArray(const Guid* val, int32_t len);
208 
214  void WriteDate(const Date& val);
215 
222  void WriteDateArray(const Date* val, int32_t len);
223 
229  void WriteTimestamp(const Timestamp& val);
230 
237  void WriteTimestampArray(const Timestamp* val, int32_t len);
238 
244  void WriteTime(const Time& val);
245 
252  void WriteTimeArray(const Time* val, int32_t len);
253 
259  void WriteString(const char* val);
260 
267  void WriteString(const char* val, int32_t len);
268 
274  void WriteString(const std::string& val)
275  {
276  WriteString(val.c_str(), static_cast<int32_t>(val.size()));
277  }
278 
290  BinaryStringArrayWriter WriteStringArray();
291 
297  void WriteBinaryEnum(BinaryEnumEntry entry);
298 
302  void WriteNull();
303 
315  template<typename T>
317  {
318  int32_t id = impl->WriteArray();
319 
320  return BinaryArrayWriter<T>(impl, id);
321  }
322 
334  template<typename T>
336  {
337  return WriteCollection<T>(CollectionType::UNDEFINED);
338  }
339 
352  template<typename T>
354  {
355  int32_t id = impl->WriteCollection(typ);
356 
357  return BinaryCollectionWriter<T>(impl, id);
358  }
359 
366  template<typename InputIterator>
367  void WriteCollection(InputIterator first, InputIterator last)
368  {
369  impl->WriteCollection(first, last, CollectionType::UNDEFINED);
370  }
371 
379  template<typename InputIterator>
380  void WriteCollection(InputIterator first, InputIterator last, CollectionType::Type typ)
381  {
382  impl->WriteCollection(first, last, typ);
383  }
384 
396  template<typename K, typename V>
398  {
399  return WriteMap<K, V>(MapType::UNDEFINED);
400  }
401 
414  template<typename K, typename V>
416  {
417  int32_t id = impl->WriteMap(typ);
418 
419  return BinaryMapWriter<K, V>(impl, id);
420  }
421 
427  template<typename T>
428  void WriteObject(const T& val)
429  {
430  impl->WriteObject<T>(val);
431  }
432 
440  template<typename T>
441  void WriteEnum(T val)
442  {
443  impl->WriteEnum(val);
444  }
445 
446  private:
448  ignite::impl::binary::BinaryWriterImpl* impl;
449  };
450  }
451 }
452 
453 #endif //_IGNITE_BINARY_BINARY_RAW_WRITER
ignite
Ignite API.
Definition: cache.h:47
ignite::binary::BinaryRawWriter::WriteCollection
void WriteCollection(InputIterator first, InputIterator last)
Write values in interval [first, last).
Definition: binary_raw_writer.h:367
ignite::binary::BinaryStringArrayWriter
Binary string array writer.
Definition: binary_containers.h:47
ignite::binary::MapType::Type
Type
Definition: binary_consts.h:68
ignite::Time
Time type.
Definition: time.h:34
ignite::binary::BinaryRawWriter::WriteEnum
void WriteEnum(T val)
Write binary enum entry.
Definition: binary_raw_writer.h:441
ignite::Guid
Global universally unique identifier (GUID).
Definition: guid.h:35
ignite::binary::BinaryRawWriter::WriteMap
BinaryMapWriter< K, V > WriteMap(MapType::Type typ)
Start map write.
Definition: binary_raw_writer.h:415
ignite::binary::MapType::UNDEFINED
@ UNDEFINED
Undefined.
Definition: binary_consts.h:73
binary_consts.h
ignite::binary::CollectionType::UNDEFINED
@ UNDEFINED
Undefined.
Definition: binary_consts.h:39
ignite::binary::BinaryRawWriter::WriteCollection
void WriteCollection(InputIterator first, InputIterator last, CollectionType::Type typ)
Write values in interval [first, last).
Definition: binary_raw_writer.h:380
ignite::binary::BinaryArrayWriter
Binary array writer.
Definition: binary_containers.h:120
ignite::binary::BinaryCollectionWriter
Binary collection writer.
Definition: binary_containers.h:181
ignite::binary::BinaryRawWriter::WriteCollection
BinaryCollectionWriter< T > WriteCollection(CollectionType::Type typ)
Start collection write.
Definition: binary_raw_writer.h:353
date.h
ignite::binary::BinaryRawWriter
Binary raw writer.
Definition: binary_raw_writer.h:61
ignite::binary::BinaryRawWriter::WriteMap
BinaryMapWriter< K, V > WriteMap()
Start map write.
Definition: binary_raw_writer.h:397
ignite::binary::BinaryEnumEntry
Binary enum entry.
Definition: binary_enum_entry.h:38
ignite::Timestamp
Timestamp type.
Definition: timestamp.h:36
ignite::Date
Date type.
Definition: date.h:34
ignite::binary::BinaryRawWriter::WriteCollection
BinaryCollectionWriter< T > WriteCollection()
Start collection write.
Definition: binary_raw_writer.h:335
ignite::binary::BinaryMapWriter
Binary map writer.
Definition: binary_containers.h:240
ignite::binary::CollectionType::Type
Type
Definition: binary_consts.h:34
ignite::binary::BinaryRawWriter::WriteObject
void WriteObject(const T &val)
Write object.
Definition: binary_raw_writer.h:428
ignite::binary::BinaryRawWriter::WriteString
void WriteString(const std::string &val)
Write string.
Definition: binary_raw_writer.h:274
guid.h
binary_containers.h
timestamp.h
ignite::binary::BinaryRawWriter::WriteArray
BinaryArrayWriter< T > WriteArray()
Start array write.
Definition: binary_raw_writer.h:316