Apache Ignite C++
binary_writer.h
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
23 #ifndef _IGNITE_BINARY_WRITER
24 #define _IGNITE_BINARY_WRITER
25 
26 #include <string>
27 #include <stdint.h>
28 
29 #include <ignite/common/common.h>
30 
32 
33 namespace ignite
34 {
35  namespace binary
36  {
40  class IGNITE_IMPORT_EXPORT BinaryWriter
41  {
42  public:
48  BinaryWriter(ignite::impl::binary::BinaryWriterImpl* impl);
49 
56  void WriteInt8(const char* fieldName, int8_t val);
57 
65  void WriteInt8Array(const char* fieldName, const int8_t* val, int32_t len);
66 
73  void WriteBool(const char* fieldName, bool val);
74 
82  void WriteBoolArray(const char* fieldName, const bool* val, int32_t len);
83 
90  void WriteInt16(const char* fieldName, int16_t val);
91 
99  void WriteInt16Array(const char* fieldName, const int16_t* val, int32_t len);
100 
107  void WriteUInt16(const char* fieldName, uint16_t val);
108 
116  void WriteUInt16Array(const char* fieldName, const uint16_t* val, int32_t len);
117 
124  void WriteInt32(const char* fieldName, int32_t val);
125 
133  void WriteInt32Array(const char* fieldName, const int32_t* val, int32_t len);
134 
141  void WriteInt64(const char* fieldName, int64_t val);
142 
150  void WriteInt64Array(const char* fieldName, const int64_t* val, int32_t len);
151 
158  void WriteFloat(const char* fieldName, float val);
159 
167  void WriteFloatArray(const char* fieldName, const float* val, int32_t len);
168 
175  void WriteDouble(const char* fieldName, double val);
176 
184  void WriteDoubleArray(const char* fieldName, const double* val, int32_t len);
185 
192  void WriteGuid(const char* fieldName, const Guid& val);
193 
201  void WriteGuidArray(const char* fieldName, const Guid* val, int32_t len);
202 
209  void WriteString(const char* fieldName, const char* val);
210 
218  void WriteString(const char* fieldName, const char* val, int32_t len);
219 
226  void WriteString(const char* fieldName, const std::string& val)
227  {
228  WriteString(fieldName, val.c_str());
229  }
230 
237  BinaryStringArrayWriter WriteStringArray(const char* fieldName);
238 
244  void WriteNull(const char* fieldName);
245 
252  template<typename T>
253  BinaryArrayWriter<T> WriteArray(const char* fieldName)
254  {
255  int32_t id = impl->WriteArray(fieldName);
256 
257  return BinaryArrayWriter<T>(impl, id);
258  }
259 
266  template<typename T>
268  {
269  return WriteCollection<T>(fieldName, IGNITE_COLLECTION_UNDEFINED);
270  }
271 
279  template<typename T>
281  {
282  int32_t id = impl->WriteCollection(fieldName, typ);
283 
284  return BinaryCollectionWriter<T>(impl, id);
285  }
286 
294  template<typename InputIterator>
295  void WriteCollection(const char* fieldName, InputIterator first, InputIterator last)
296  {
297  WriteCollection(fieldName, first, last, IGNITE_COLLECTION_UNDEFINED);
298  }
299 
308  template<typename InputIterator>
309  void WriteCollection(const char* fieldName, InputIterator first, InputIterator last, CollectionType typ)
310  {
311  impl->WriteCollection(fieldName, first, last, typ);
312  }
313 
321  template<typename K, typename V>
322  BinaryMapWriter<K, V> WriteMap(const char* fieldName)
323  {
324  return WriteMap<K, V>(fieldName, IGNITE_MAP_UNDEFINED);
325  }
326 
334  template<typename K, typename V>
336  {
337  int32_t id = impl->WriteMap(fieldName, typ);
338 
339  return BinaryMapWriter<K, V>(impl, id);
340  }
341 
348  template<typename T>
349  void WriteObject(const char* fieldName, T val)
350  {
351  impl->WriteObject<T>(fieldName, val);
352  }
353 
359  BinaryRawWriter RawWriter();
360  private:
362  ignite::impl::binary::BinaryWriterImpl* impl;
363  };
364  }
365 }
366 
367 #endif
Undefined.
Definition: binary_consts.h:40
void WriteCollection(const char *fieldName, InputIterator first, InputIterator last, CollectionType typ)
Write values in interval [first, last).
Definition: binary_writer.h:309
Declares ignite::binary::BinaryRawWriter class.
void WriteCollection(const char *fieldName, InputIterator first, InputIterator last)
Write values in interval [first, last).
Definition: binary_writer.h:295
BinaryCollectionWriter< T > WriteCollection(const char *fieldName)
Start collection write.
Definition: binary_writer.h:267
CollectionType
Binary collection types.
Definition: binary_consts.h:35
Undefined.
Definition: binary_consts.h:71
Binary writer.
Definition: binary_writer.h:40
Binary collection writer.
Definition: binary_containers.h:135
BinaryArrayWriter< T > WriteArray(const char *fieldName)
Start array write.
Definition: binary_writer.h:253
Binary collection writer.
Definition: binary_containers.h:92
void WriteString(const char *fieldName, const std::string &val)
Write string.
Definition: binary_writer.h:226
Binary string array writer.
Definition: binary_containers.h:40
BinaryMapWriter< K, V > WriteMap(const char *fieldName)
Start map write.
Definition: binary_writer.h:322
Binary raw writer.
Definition: binary_raw_writer.h:42
Global universally unique identifier (GUID).
Definition: guid.h:35
BinaryCollectionWriter< T > WriteCollection(const char *fieldName, ignite::binary::CollectionType typ)
Start collection write.
Definition: binary_writer.h:280
void WriteObject(const char *fieldName, T val)
Write object.
Definition: binary_writer.h:349
Binary map writer.
Definition: binary_containers.h:178
Apache Ignite API.
Definition: binary_consts.h:28
BinaryMapWriter< K, V > WriteMap(const char *fieldName, ignite::binary::MapType typ)
Start map write.
Definition: binary_writer.h:335
MapType
Binary map types.
Definition: binary_consts.h:66