GridGain C++
binary_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_WRITER
23 #define _IGNITE_BINARY_BINARY_WRITER
24 
25 #include <string>
26 #include <stdint.h>
27 
28 #include <ignite/common/common.h>
29 
31 
32 namespace ignite
33 {
34  namespace binary
35  {
50  class IGNITE_IMPORT_EXPORT BinaryWriter
51  {
52  public:
60  BinaryWriter(impl::binary::BinaryWriterImpl* impl);
61 
68  void WriteInt8(const char* fieldName, int8_t val);
69 
77  void WriteInt8Array(const char* fieldName, const int8_t* val, int32_t len);
78 
85  void WriteBool(const char* fieldName, bool val);
86 
94  void WriteBoolArray(const char* fieldName, const bool* val, int32_t len);
95 
102  void WriteInt16(const char* fieldName, int16_t val);
103 
111  void WriteInt16Array(const char* fieldName, const int16_t* val, int32_t len);
112 
119  void WriteUInt16(const char* fieldName, uint16_t val);
120 
128  void WriteUInt16Array(const char* fieldName, const uint16_t* val, int32_t len);
129 
136  void WriteInt32(const char* fieldName, int32_t val);
137 
145  void WriteInt32Array(const char* fieldName, const int32_t* val, int32_t len);
146 
153  void WriteInt64(const char* fieldName, int64_t val);
154 
162  void WriteInt64Array(const char* fieldName, const int64_t* val, int32_t len);
163 
170  void WriteFloat(const char* fieldName, float val);
171 
179  void WriteFloatArray(const char* fieldName, const float* val, int32_t len);
180 
187  void WriteDouble(const char* fieldName, double val);
188 
196  void WriteDoubleArray(const char* fieldName, const double* val, int32_t len);
197 
204  void WriteGuid(const char* fieldName, const Guid& val);
205 
213  void WriteGuidArray(const char* fieldName, const Guid* val, int32_t len);
214 
221  void WriteDate(const char* fieldName, const Date& val);
222 
230  void WriteDateArray(const char* fieldName, const Date* val, int32_t len);
231 
238  void WriteTimestamp(const char* fieldName, const Timestamp& val);
239 
247  void WriteTimestampArray(const char* fieldName, const Timestamp* val, int32_t len);
248 
255  void WriteTime(const char* fieldName, const Time& val);
256 
264  void WriteTimeArray(const char* fieldName, const Time* val, int32_t len);
265 
272  void WriteString(const char* fieldName, const char* val);
273 
281  void WriteString(const char* fieldName, const char* val, int32_t len);
282 
289  void WriteString(const char* fieldName, const std::string& val)
290  {
291  WriteString(fieldName, val.c_str());
292  }
293 
306  BinaryStringArrayWriter WriteStringArray(const char* fieldName);
307 
314  void WriteBinaryEnum(const char* fieldName, BinaryEnumEntry entry);
315 
321  void WriteNull(const char* fieldName);
322 
335  template<typename T>
336  BinaryArrayWriter<T> WriteArray(const char* fieldName)
337  {
338  int32_t id = impl->WriteArray(fieldName);
339 
340  return BinaryArrayWriter<T>(impl, id);
341  }
342 
355  template<typename T>
357  {
358  return WriteCollection<T>(fieldName, CollectionType::UNDEFINED);
359  }
360 
374  template<typename T>
376  {
377  int32_t id = impl->WriteCollection(fieldName, typ);
378 
379  return BinaryCollectionWriter<T>(impl, id);
380  }
381 
389  template<typename InputIterator>
390  void WriteCollection(const char* fieldName, InputIterator first, InputIterator last)
391  {
392  WriteCollection(fieldName, first, last, CollectionType::UNDEFINED);
393  }
394 
403  template<typename InputIterator>
404  void WriteCollection(const char* fieldName, InputIterator first, InputIterator last, CollectionType::Type typ)
405  {
406  impl->WriteCollection(fieldName, first, last, typ);
407  }
408 
421  template<typename K, typename V>
422  BinaryMapWriter<K, V> WriteMap(const char* fieldName)
423  {
424  return WriteMap<K, V>(fieldName, MapType::UNDEFINED);
425  }
426 
440  template<typename K, typename V>
441  BinaryMapWriter<K, V> WriteMap(const char* fieldName, MapType::Type typ)
442  {
443  int32_t id = impl->WriteMap(fieldName, typ);
444 
445  return BinaryMapWriter<K, V>(impl, id);
446  }
447 
454  template<typename T>
455  void WriteObject(const char* fieldName, const T& val)
456  {
457  impl->WriteObject<T>(fieldName, val);
458  }
459 
468  template<typename T>
469  void WriteEnum(const char* fieldName, T val)
470  {
471  impl->WriteEnum(fieldName, val);
472  }
473 
479  BinaryRawWriter RawWriter();
480  private:
482  ignite::impl::binary::BinaryWriterImpl* impl;
483  };
484  }
485 }
486 
487 #endif //_IGNITE_BINARY_BINARY_WRITER
ignite::binary::BinaryWriter
Binary writer.
Definition: binary_writer.h:50
ignite
Ignite API.
Definition: cache.h:47
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::BinaryWriter::WriteMap
BinaryMapWriter< K, V > WriteMap(const char *fieldName, MapType::Type typ)
Start map write.
Definition: binary_writer.h:441
ignite::Guid
Global universally unique identifier (GUID).
Definition: guid.h:35
ignite::binary::BinaryWriter::WriteCollection
void WriteCollection(const char *fieldName, InputIterator first, InputIterator last)
Write values in interval [first, last).
Definition: binary_writer.h:390
ignite::binary::BinaryWriter::WriteObject
void WriteObject(const char *fieldName, const T &val)
Write object.
Definition: binary_writer.h:455
ignite::binary::MapType::UNDEFINED
@ UNDEFINED
Undefined.
Definition: binary_consts.h:73
ignite::binary::BinaryWriter::WriteString
void WriteString(const char *fieldName, const std::string &val)
Write string.
Definition: binary_writer.h:289
ignite::binary::CollectionType::UNDEFINED
@ UNDEFINED
Undefined.
Definition: binary_consts.h:39
ignite::binary::BinaryWriter::WriteArray
BinaryArrayWriter< T > WriteArray(const char *fieldName)
Start array write.
Definition: binary_writer.h:336
ignite::binary::BinaryWriter::WriteCollection
BinaryCollectionWriter< T > WriteCollection(const char *fieldName, CollectionType::Type typ)
Start collection write.
Definition: binary_writer.h:375
ignite::binary::BinaryWriter::WriteCollection
BinaryCollectionWriter< T > WriteCollection(const char *fieldName)
Start collection write.
Definition: binary_writer.h:356
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
Binary raw writer.
Definition: binary_raw_writer.h:61
ignite::binary::BinaryEnumEntry
Binary enum entry.
Definition: binary_enum_entry.h:38
ignite::binary::BinaryWriter::WriteCollection
void WriteCollection(const char *fieldName, InputIterator first, InputIterator last, CollectionType::Type typ)
Write values in interval [first, last).
Definition: binary_writer.h:404
ignite::Timestamp
Timestamp type.
Definition: timestamp.h:36
ignite::Date
Date type.
Definition: date.h:34
ignite::binary::BinaryWriter::WriteMap
BinaryMapWriter< K, V > WriteMap(const char *fieldName)
Start map write.
Definition: binary_writer.h:422
ignite::binary::BinaryMapWriter
Binary map writer.
Definition: binary_containers.h:240
ignite::binary::CollectionType::Type
Type
Definition: binary_consts.h:34
ignite::binary::BinaryWriter::WriteEnum
void WriteEnum(const char *fieldName, T val)
Write enum entry.
Definition: binary_writer.h:469
binary_raw_writer.h