http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/core/src/impl/binary/binary_writer_impl.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/src/impl/binary/binary_writer_impl.cpp 
b/modules/platforms/cpp/core/src/impl/binary/binary_writer_impl.cpp
deleted file mode 100644
index d03d6ba..0000000
--- a/modules/platforms/cpp/core/src/impl/binary/binary_writer_impl.cpp
+++ /dev/null
@@ -1,623 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "ignite/impl/binary/binary_writer_impl.h"
-#include "ignite/impl/interop/interop_stream_position_guard.h"
-#include "ignite/ignite_error.h"
-
-using namespace ignite::impl::interop;
-using namespace ignite::impl::binary;
-using namespace ignite::binary;
-
-namespace ignite
-{
-    namespace impl
-    {
-        namespace binary
-        {
-            BinaryWriterImpl::BinaryWriterImpl(InteropOutputStream* stream, 
BinaryIdResolver* idRslvr, 
-                BinaryTypeManager* metaMgr, BinaryTypeHandler* metaHnd, 
int32_t start) :
-                stream(stream), idRslvr(idRslvr), metaMgr(metaMgr), 
metaHnd(metaHnd), typeId(idRslvr->GetTypeId()),
-                elemIdGen(0), elemId(0), elemCnt(0), elemPos(-1), rawPos(-1), 
start(start)
-            {
-                // No-op.
-            }
-            
-            BinaryWriterImpl::BinaryWriterImpl(InteropOutputStream* stream, 
BinaryTypeManager* metaMgr) :
-                stream(stream), idRslvr(NULL), metaMgr(metaMgr), 
metaHnd(NULL), typeId(0), 
-                elemIdGen(0), elemId(0), elemCnt(0), elemPos(-1), rawPos(0), 
start(stream->Position())
-            {
-                // No-op.
-            }
-
-            void BinaryWriterImpl::WriteInt8(const int8_t val)
-            {
-                WritePrimitiveRaw<int8_t>(val, BinaryUtils::WriteInt8);
-            }
-
-            void BinaryWriterImpl::WriteInt8Array(const int8_t* val, const 
int32_t len)
-            {
-                WritePrimitiveArrayRaw<int8_t>(val, len, 
BinaryUtils::WriteInt8Array, IGNITE_TYPE_ARRAY_BYTE);
-            }
-
-            void BinaryWriterImpl::WriteInt8(const char* fieldName, const 
int8_t val)
-            {
-                WritePrimitive<int8_t>(fieldName, val, BinaryUtils::WriteInt8, 
IGNITE_TYPE_BYTE, 1);
-            }
-
-            void BinaryWriterImpl::WriteInt8Array(const char* fieldName, const 
int8_t* val, const int32_t len)
-            {
-                WritePrimitiveArray<int8_t>(fieldName, val, len, 
BinaryUtils::WriteInt8Array, IGNITE_TYPE_ARRAY_BYTE, 0);
-            }
-
-            void BinaryWriterImpl::WriteBool(const bool val)
-            {
-                WritePrimitiveRaw<bool>(val, BinaryUtils::WriteBool);
-            }
-
-            void BinaryWriterImpl::WriteBoolArray(const bool* val, const 
int32_t len)
-            {
-                WritePrimitiveArrayRaw<bool>(val, len, 
BinaryUtils::WriteBoolArray, IGNITE_TYPE_ARRAY_BOOL);
-            }
-
-            void BinaryWriterImpl::WriteBool(const char* fieldName, const bool 
val)
-            {
-                WritePrimitive<bool>(fieldName, val, BinaryUtils::WriteBool, 
IGNITE_TYPE_BOOL, 1);
-            }
-
-            void BinaryWriterImpl::WriteBoolArray(const char* fieldName, const 
bool* val, const int32_t len)
-            {
-                WritePrimitiveArray<bool>(fieldName, val, len, 
BinaryUtils::WriteBoolArray, IGNITE_TYPE_ARRAY_BOOL, 0);
-            }
-
-            void BinaryWriterImpl::WriteInt16(const int16_t val)
-            {
-                WritePrimitiveRaw<int16_t>(val, BinaryUtils::WriteInt16);
-            }
-
-            void BinaryWriterImpl::WriteInt16Array(const int16_t* val, const 
int32_t len)
-            {
-                WritePrimitiveArrayRaw<int16_t>(val, len, 
BinaryUtils::WriteInt16Array, IGNITE_TYPE_ARRAY_SHORT);
-            }
-
-            void BinaryWriterImpl::WriteInt16(const char* fieldName, const 
int16_t val)
-            {
-                WritePrimitive<int16_t>(fieldName, val, 
BinaryUtils::WriteInt16, IGNITE_TYPE_SHORT, 2);
-            }
-
-            void BinaryWriterImpl::WriteInt16Array(const char* fieldName, 
const int16_t* val, const int32_t len)
-            {
-                WritePrimitiveArray<int16_t>(fieldName, val, len, 
BinaryUtils::WriteInt16Array, IGNITE_TYPE_ARRAY_SHORT, 1);
-            }
-
-            void BinaryWriterImpl::WriteUInt16(const uint16_t val)
-            {
-                WritePrimitiveRaw<uint16_t>(val, BinaryUtils::WriteUInt16);
-            }
-
-            void BinaryWriterImpl::WriteUInt16Array(const uint16_t* val, const 
int32_t len)
-            {
-                WritePrimitiveArrayRaw<uint16_t>(val, len, 
BinaryUtils::WriteUInt16Array, IGNITE_TYPE_ARRAY_CHAR);
-            }
-
-            void BinaryWriterImpl::WriteUInt16(const char* fieldName, const 
uint16_t val)
-            {
-                WritePrimitive<uint16_t>(fieldName, val, 
BinaryUtils::WriteUInt16, IGNITE_TYPE_CHAR, 2);
-            }
-
-            void BinaryWriterImpl::WriteUInt16Array(const char* fieldName, 
const uint16_t* val, const int32_t len)
-            {
-                WritePrimitiveArray<uint16_t>(fieldName, val, len, 
BinaryUtils::WriteUInt16Array, IGNITE_TYPE_ARRAY_CHAR, 1);
-            }
-
-            void BinaryWriterImpl::WriteInt32(const int32_t val)
-            {
-                WritePrimitiveRaw<int32_t>(val, BinaryUtils::WriteInt32);
-            }
-
-            void BinaryWriterImpl::WriteInt32Array(const int32_t* val, const 
int32_t len)
-            {
-                WritePrimitiveArrayRaw<int32_t>(val, len, 
BinaryUtils::WriteInt32Array, IGNITE_TYPE_ARRAY_INT);
-            }
-
-            void BinaryWriterImpl::WriteInt32(const char* fieldName, const 
int32_t val)
-            {
-                WritePrimitive<int32_t>(fieldName, val, 
BinaryUtils::WriteInt32, IGNITE_TYPE_INT, 4);
-            }
-
-            void BinaryWriterImpl::WriteInt32Array(const char* fieldName, 
const int32_t* val, const int32_t len)
-            {
-                WritePrimitiveArray<int32_t>(fieldName, val, len, 
BinaryUtils::WriteInt32Array, IGNITE_TYPE_ARRAY_INT, 2);
-            }
-
-            void BinaryWriterImpl::WriteInt64(const int64_t val)
-            {
-                WritePrimitiveRaw<int64_t>(val, BinaryUtils::WriteInt64);
-            }
-
-            void BinaryWriterImpl::WriteInt64Array(const int64_t* val, const 
int32_t len)
-            {
-                WritePrimitiveArrayRaw<int64_t>(val, len, 
BinaryUtils::WriteInt64Array, IGNITE_TYPE_ARRAY_LONG);
-            }
-
-            void BinaryWriterImpl::WriteInt64(const char* fieldName, const 
int64_t val)
-            {
-                WritePrimitive<int64_t>(fieldName, val, 
BinaryUtils::WriteInt64, IGNITE_TYPE_LONG, 8);
-            }
-
-            void BinaryWriterImpl::WriteInt64Array(const char* fieldName, 
const int64_t* val, const int32_t len)
-            {
-                WritePrimitiveArray<int64_t>(fieldName, val, len, 
BinaryUtils::WriteInt64Array, IGNITE_TYPE_ARRAY_LONG, 3);
-            }
-
-            void BinaryWriterImpl::WriteFloat(const float val)
-            {
-                WritePrimitiveRaw<float>(val, BinaryUtils::WriteFloat);
-            }
-
-            void BinaryWriterImpl::WriteFloatArray(const float* val, const 
int32_t len)
-            {
-                WritePrimitiveArrayRaw<float>(val, len, 
BinaryUtils::WriteFloatArray, IGNITE_TYPE_ARRAY_FLOAT);
-            }
-
-            void BinaryWriterImpl::WriteFloat(const char* fieldName, const 
float val)
-            {
-                WritePrimitive<float>(fieldName, val, BinaryUtils::WriteFloat, 
IGNITE_TYPE_FLOAT, 4);
-            }
-
-            void BinaryWriterImpl::WriteFloatArray(const char* fieldName, 
const float* val, const int32_t len)
-            {
-                WritePrimitiveArray<float>(fieldName, val, len, 
BinaryUtils::WriteFloatArray, IGNITE_TYPE_ARRAY_FLOAT, 2);
-            }
-
-            void BinaryWriterImpl::WriteDouble(const double val)
-            {
-                WritePrimitiveRaw<double>(val, BinaryUtils::WriteDouble);
-            }
-
-            void BinaryWriterImpl::WriteDoubleArray(const double* val, const 
int32_t len)
-            {
-                WritePrimitiveArrayRaw<double>(val, len, 
BinaryUtils::WriteDoubleArray, IGNITE_TYPE_ARRAY_DOUBLE);
-            }
-
-            void BinaryWriterImpl::WriteDouble(const char* fieldName, const 
double val)
-            {
-                WritePrimitive<double>(fieldName, val, 
BinaryUtils::WriteDouble, IGNITE_TYPE_DOUBLE, 8);
-            }
-
-            void BinaryWriterImpl::WriteDoubleArray(const char* fieldName, 
const double* val, const int32_t len)
-            {
-                WritePrimitiveArray<double>(fieldName, val, len, 
BinaryUtils::WriteDoubleArray, IGNITE_TYPE_ARRAY_DOUBLE, 3);
-            }
-
-            void BinaryWriterImpl::WriteGuid(const Guid val)
-            {                
-                CheckRawMode(true);
-                CheckSingleMode(true);
-
-                stream->WriteInt8(IGNITE_TYPE_UUID);
-
-                BinaryUtils::WriteGuid(stream, val);
-            }
-
-            void BinaryWriterImpl::WriteGuidArray(const Guid* val, const 
int32_t len)
-            {
-                CheckRawMode(true);
-                CheckSingleMode(true);
-                
-                if (val)
-                {
-                    stream->WriteInt8(IGNITE_TYPE_ARRAY_UUID);
-                    stream->WriteInt32(len);
-
-                    for (int i = 0; i < len; i++)
-                    {
-                        Guid elem = *(val + i);
-
-                        stream->WriteInt8(IGNITE_TYPE_UUID);
-                        BinaryUtils::WriteGuid(stream, elem);
-                    }
-                }
-                else
-                    stream->WriteInt8(IGNITE_HDR_NULL);
-            }
-
-            void BinaryWriterImpl::WriteGuid(const char* fieldName, const Guid 
val)
-            {
-                CheckRawMode(false);
-                CheckSingleMode(true);
-
-                WriteFieldId(fieldName, IGNITE_TYPE_UUID);
-
-                stream->WriteInt8(IGNITE_TYPE_UUID);
-
-                BinaryUtils::WriteGuid(stream, val);
-            }
-
-            void BinaryWriterImpl::WriteGuidArray(const char* fieldName, const 
Guid* val, const int32_t len)
-            {
-                CheckRawMode(false);
-                CheckSingleMode(true);
-
-                WriteFieldId(fieldName, IGNITE_TYPE_ARRAY_UUID);
-
-                if (val)
-                {
-                    stream->WriteInt8(IGNITE_TYPE_ARRAY_UUID);
-                    stream->WriteInt32(len);
-
-                    for (int i = 0; i < len; i++)
-                    {
-                        Guid elem = *(val + i);
-
-                        WriteTopObject(elem);
-                    }
-                }
-                else
-                {
-                    stream->WriteInt8(IGNITE_HDR_NULL);
-                }
-            }
-
-            void BinaryWriterImpl::WriteString(const char* val, const int32_t 
len)
-            {
-                CheckRawMode(true);
-                CheckSingleMode(true);
-
-                if (val) 
-                {
-                    stream->WriteInt8(IGNITE_TYPE_STRING);
-
-                    BinaryUtils::WriteString(stream, val, len);
-                }
-                else
-                    stream->WriteInt8(IGNITE_HDR_NULL);
-            }
-
-            void BinaryWriterImpl::WriteString(const char* fieldName, const 
char* val, const int32_t len)
-            {
-                CheckRawMode(false);
-                CheckSingleMode(true);
-
-                WriteFieldId(fieldName, IGNITE_TYPE_STRING);
-                
-                if (val)
-                {
-                    stream->WriteInt8(IGNITE_TYPE_STRING);
-
-                    BinaryUtils::WriteString(stream, val, len);
-                }
-                else
-                    stream->WriteInt8(IGNITE_HDR_NULL);
-            }
-
-            int32_t BinaryWriterImpl::WriteStringArray()
-            {
-                StartContainerSession(true);
-
-                stream->WriteInt8(IGNITE_TYPE_ARRAY_STRING);
-                stream->Position(stream->Position() + 4);
-
-                return elemId;
-            }
-
-            int32_t BinaryWriterImpl::WriteStringArray(const char* fieldName)
-            {
-                StartContainerSession(false);
-
-                WriteFieldId(fieldName, IGNITE_TYPE_ARRAY_STRING);
-
-                stream->WriteInt8(IGNITE_TYPE_ARRAY_STRING);
-                stream->Position(stream->Position() + 4);
-
-                return elemId;
-            }
-
-            void BinaryWriterImpl::WriteStringElement(int32_t id, const char* 
val, int32_t len)
-            {
-                CheckSession(id);
-
-                if (val)
-                {
-                    stream->WriteInt8(IGNITE_TYPE_STRING);
-
-                    BinaryUtils::WriteString(stream, val, len);
-                }
-                else
-                    stream->WriteInt8(IGNITE_HDR_NULL);
-
-                elemCnt++;
-            }
-
-            void BinaryWriterImpl::WriteNull()
-            {
-                CheckRawMode(true);
-                CheckSingleMode(true);
-
-                stream->WriteInt8(IGNITE_HDR_NULL);
-            }
-
-            void BinaryWriterImpl::WriteNull(const char* fieldName)
-            {
-                CheckRawMode(false);
-                CheckSingleMode(true);
-
-                WriteFieldId(fieldName, IGNITE_TYPE_OBJECT);
-                stream->WriteInt8(IGNITE_HDR_NULL);
-            }
-
-            int32_t BinaryWriterImpl::WriteArray()
-            {
-                StartContainerSession(true);
-                
-                stream->WriteInt8(IGNITE_TYPE_ARRAY);
-                stream->Position(stream->Position() + 4);
-
-                return elemId;
-            }
-
-            int32_t BinaryWriterImpl::WriteArray(const char* fieldName)
-            {
-                StartContainerSession(false);
-
-                WriteFieldId(fieldName, IGNITE_TYPE_ARRAY);
-
-                stream->WriteInt8(IGNITE_TYPE_ARRAY);
-                stream->Position(stream->Position() + 4);
-
-                return elemId;
-            }
-
-            int32_t BinaryWriterImpl::WriteCollection(CollectionType typ)
-            {
-                StartContainerSession(true);
-
-                stream->WriteInt8(IGNITE_TYPE_COLLECTION);
-                stream->Position(stream->Position() + 4);
-                stream->WriteInt8(typ);
-
-                return elemId;
-            }
-
-            int32_t BinaryWriterImpl::WriteCollection(const char* fieldName, 
CollectionType typ)
-            {
-                StartContainerSession(false);
-                
-                WriteFieldId(fieldName, IGNITE_TYPE_COLLECTION);
-
-                stream->WriteInt8(IGNITE_TYPE_COLLECTION);
-                stream->Position(stream->Position() + 4);
-                stream->WriteInt8(typ);
-
-                return elemId;
-            }
-
-            int32_t BinaryWriterImpl::WriteMap(ignite::binary::MapType typ)
-            {
-                StartContainerSession(true);
-
-                stream->WriteInt8(IGNITE_TYPE_MAP);
-                stream->Position(stream->Position() + 4);
-                stream->WriteInt8(typ);
-
-                return elemId;
-            }
-
-            int32_t BinaryWriterImpl::WriteMap(const char* fieldName, 
ignite::binary::MapType typ)
-            {
-                StartContainerSession(false);
-
-                WriteFieldId(fieldName, IGNITE_TYPE_MAP);
-                
-                stream->WriteInt8(IGNITE_TYPE_MAP);
-                stream->Position(stream->Position() + 4);
-                stream->WriteInt8(typ);
-
-                return elemId;
-            }
-
-            void BinaryWriterImpl::CommitContainer(int32_t id)
-            {
-                CheckSession(id);
-
-                stream->WriteInt32(elemPos + 1, elemCnt);
-
-                elemId = 0;
-                elemCnt = 0;
-                elemPos = -1;
-            }
-            
-            void BinaryWriterImpl::SetRawMode()
-            {
-                CheckRawMode(false);
-                CheckSingleMode(true);
-
-                rawPos = stream->Position();
-            }
-
-            int32_t BinaryWriterImpl::GetRawPosition() const
-            {
-                return rawPos == -1 ? stream->Position() : rawPos;
-            }
-
-            void BinaryWriterImpl::CheckRawMode(bool expected) const
-            {
-                bool rawMode = rawPos != -1;
-
-                if (expected && !rawMode) {
-                    IGNITE_ERROR_1(IgniteError::IGNITE_ERR_BINARY, "Operation 
can be performed only in raw mode.");
-                }
-                else if (!expected && rawMode) {
-                    IGNITE_ERROR_1(IgniteError::IGNITE_ERR_BINARY, "Operation 
cannot be performed in raw mode.");
-                }
-            }
-
-            void BinaryWriterImpl::CheckSingleMode(bool expected) const
-            {
-                if (expected && elemId != 0) {
-                    IGNITE_ERROR_1(IgniteError::IGNITE_ERR_BINARY, "Operation 
cannot be performed when container is being written.");
-                }
-                else if (!expected && elemId == 0) {
-                    IGNITE_ERROR_1(IgniteError::IGNITE_ERR_BINARY, "Operation 
can be performed only when container is being written.");
-                }
-            }
-
-            void BinaryWriterImpl::StartContainerSession(bool expRawMode)
-            {
-                CheckRawMode(expRawMode);
-                CheckSingleMode(true);
-
-                elemId = ++elemIdGen;
-                elemPos = stream->Position();
-            }
-
-            void BinaryWriterImpl::CheckSession(int32_t expSes) const
-            {
-                if (elemId != expSes) 
-                {
-                    IGNITE_ERROR_1(IgniteError::IGNITE_ERR_BINARY, "Containter 
write session has been finished or is not started yet.");
-                }
-            }
-
-            void BinaryWriterImpl::WriteFieldId(const char* fieldName, int32_t 
fieldTypeId)
-            {
-                int32_t fieldId = idRslvr->GetFieldId(typeId, fieldName);
-                int32_t fieldOff = stream->Position() - start;
-
-                schema.AddField(fieldId, fieldOff);
-
-                if (metaHnd)
-                    metaHnd->OnFieldWritten(fieldId, fieldName, fieldTypeId);
-            }
-
-            template <>
-            void BinaryWriterImpl::WriteTopObject<int8_t>(const int8_t& obj)
-            {
-                WriteTopObject0<int8_t>(obj, BinaryUtils::WriteInt8, 
IGNITE_TYPE_BYTE);
-            }
-
-            template <>
-            void BinaryWriterImpl::WriteTopObject<bool>(const bool& obj)
-            {
-                WriteTopObject0<bool>(obj, BinaryUtils::WriteBool, 
IGNITE_TYPE_BOOL);
-            }
-
-            template <>
-            void BinaryWriterImpl::WriteTopObject<int16_t>(const int16_t& obj)
-            {
-                WriteTopObject0<int16_t>(obj, BinaryUtils::WriteInt16, 
IGNITE_TYPE_SHORT);
-            }
-
-            template <>
-            void BinaryWriterImpl::WriteTopObject<uint16_t>(const uint16_t& 
obj)
-            {
-                WriteTopObject0<uint16_t>(obj, BinaryUtils::WriteUInt16, 
IGNITE_TYPE_CHAR);
-            }
-
-            template <>
-            void BinaryWriterImpl::WriteTopObject<int32_t>(const int32_t& obj)
-            {
-                WriteTopObject0<int32_t>(obj, BinaryUtils::WriteInt32, 
IGNITE_TYPE_INT);
-            }
-
-            template <>
-            void BinaryWriterImpl::WriteTopObject<int64_t>(const int64_t& obj)
-            {
-                WriteTopObject0<int64_t>(obj, BinaryUtils::WriteInt64, 
IGNITE_TYPE_LONG);
-            }
-
-            template <>
-            void BinaryWriterImpl::WriteTopObject<float>(const float& obj)
-            {
-                WriteTopObject0<float>(obj, BinaryUtils::WriteFloat, 
IGNITE_TYPE_FLOAT);
-            }
-
-            template <>
-            void BinaryWriterImpl::WriteTopObject<double>(const double& obj)
-            {
-                WriteTopObject0<double>(obj, BinaryUtils::WriteDouble, 
IGNITE_TYPE_DOUBLE);
-            }
-
-            template <>
-            void BinaryWriterImpl::WriteTopObject<Guid>(const Guid& obj)
-            {
-                WriteTopObject0<Guid>(obj, BinaryUtils::WriteGuid, 
IGNITE_TYPE_UUID);
-            }
-
-            void BinaryWriterImpl::PostWrite()
-            {
-                int32_t lenWithoutSchema = stream->Position() - start;
-
-                int32_t nonRawLen = rawPos == -1 ? lenWithoutSchema : rawPos - 
start;
-
-                uint16_t flags = IGNITE_BINARY_FLAG_USER_TYPE;
-
-                if (rawPos > 0)
-                    flags |= IGNITE_BINARY_FLAG_HAS_RAW;
-
-                if (!HasSchema())
-                {
-                    stream->WriteInt16(start + IGNITE_OFFSET_FLAGS, flags);
-                    stream->WriteInt32(start + IGNITE_OFFSET_LEN, 
lenWithoutSchema);
-                    stream->WriteInt32(start + IGNITE_OFFSET_SCHEMA_ID, 0);
-                    stream->WriteInt32(start + 
IGNITE_OFFSET_SCHEMA_OR_RAW_OFF, GetRawPosition() - start);
-                }
-                else
-                {
-                    int32_t schemaId = schema.GetId();
-                    BinaryOffsetType schemaType = schema.GetType();
-
-                    WriteAndClearSchema();
-
-                    if (rawPos > 0)
-                        stream->WriteInt32(rawPos - start);
-
-                    int32_t length = stream->Position() - start;
-
-                    flags |= IGNITE_BINARY_FLAG_HAS_SCHEMA;
-                    
-                    if (schemaType == OFFSET_TYPE_ONE_BYTE)
-                        flags |= IGNITE_BINARY_FLAG_OFFSET_ONE_BYTE;
-                    else if (schemaType == OFFSET_TYPE_TWO_BYTES)
-                        flags |= IGNITE_BINARY_FLAG_OFFSET_TWO_BYTES;
-
-                    stream->WriteInt16(start + IGNITE_OFFSET_FLAGS, flags);
-                    stream->WriteInt32(start + IGNITE_OFFSET_LEN, length);
-                    stream->WriteInt32(start + IGNITE_OFFSET_SCHEMA_ID, 
schemaId);
-                    stream->WriteInt32(start + 
IGNITE_OFFSET_SCHEMA_OR_RAW_OFF, lenWithoutSchema);
-                }
-            }
-
-            bool BinaryWriterImpl::HasSchema() const
-            {
-                return !schema.Empty();
-            }
-
-            void BinaryWriterImpl::WriteAndClearSchema()
-            {
-                schema.Write(*stream);
-
-                schema.Clear();
-            }
-
-            InteropOutputStream* BinaryWriterImpl::GetStream()
-            {
-                return stream;
-            }
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/core/src/impl/cache/cache_impl.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/src/impl/cache/cache_impl.cpp 
b/modules/platforms/cpp/core/src/impl/cache/cache_impl.cpp
index f66a228..fec41e7 100644
--- a/modules/platforms/cpp/core/src/impl/cache/cache_impl.cpp
+++ b/modules/platforms/cpp/core/src/impl/cache/cache_impl.cpp
@@ -15,23 +15,25 @@
  * limitations under the License.
  */
 
+#include <ignite/common/utils.h>
+
 #include "ignite/cache/cache_peek_mode.h"
 #include "ignite/impl/cache/cache_impl.h"
 #include "ignite/impl/interop/interop.h"
 #include "ignite/impl/binary/binary_reader_impl.h"
-#include "ignite/impl/utils.h"
 #include "ignite/impl/binary/binary_type_updater_impl.h"
 #include "ignite/binary/binary.h"
 
 using namespace ignite::common::concurrent;
-using namespace ignite::common::java;
+using namespace ignite::jni::java;
+using namespace ignite::java;
+using namespace ignite::common;
 using namespace ignite::cache;
 using namespace ignite::cache::query;
 using namespace ignite::impl;
+using namespace ignite::impl::binary;
 using namespace ignite::impl::cache::query;
 using namespace ignite::impl::interop;
-using namespace ignite::impl::binary;
-using namespace ignite::impl::utils;
 using namespace ignite::binary;
 
 namespace ignite

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/core/src/impl/cache/query/query_impl.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/src/impl/cache/query/query_impl.cpp 
b/modules/platforms/cpp/core/src/impl/cache/query/query_impl.cpp
index a5fc494..880e8b1 100644
--- a/modules/platforms/cpp/core/src/impl/cache/query/query_impl.cpp
+++ b/modules/platforms/cpp/core/src/impl/cache/query/query_impl.cpp
@@ -19,7 +19,8 @@
 #include "ignite/impl/cache/query/query_fields_row_impl.h"
 
 using namespace ignite::common::concurrent;
-using namespace ignite::common::java;
+using namespace ignite::jni::java;
+using namespace ignite::java;
 using namespace ignite::impl::interop;
 using namespace ignite::impl::binary;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/core/src/impl/ignite_environment.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/src/impl/ignite_environment.cpp 
b/modules/platforms/cpp/core/src/impl/ignite_environment.cpp
index c9c57a0..ab50866 100644
--- a/modules/platforms/cpp/core/src/impl/ignite_environment.cpp
+++ b/modules/platforms/cpp/core/src/impl/ignite_environment.cpp
@@ -15,12 +15,13 @@
  * limitations under the License.
  */
 
+#include "ignite/impl/interop/interop_external_memory.h"
 #include "ignite/impl/binary/binary_reader_impl.h"
 #include "ignite/impl/ignite_environment.h"
 #include "ignite/binary/binary.h"
 
 using namespace ignite::common::concurrent;
-using namespace ignite::common::java;
+using namespace ignite::jni::java;
 using namespace ignite::impl::interop;
 using namespace ignite::impl::binary;
 using namespace ignite::binary;

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/core/src/impl/ignite_impl.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/src/impl/ignite_impl.cpp 
b/modules/platforms/cpp/core/src/impl/ignite_impl.cpp
index 28909eb..72e06cf 100644
--- a/modules/platforms/cpp/core/src/impl/ignite_impl.cpp
+++ b/modules/platforms/cpp/core/src/impl/ignite_impl.cpp
@@ -18,7 +18,7 @@
 #include "ignite/impl/ignite_impl.h"
 
 using namespace ignite::common::concurrent;
-using namespace ignite::common::java;
+using namespace ignite::jni::java;
 
 namespace ignite
 {    

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/core/src/impl/interop/interop_external_memory.cpp
----------------------------------------------------------------------
diff --git 
a/modules/platforms/cpp/core/src/impl/interop/interop_external_memory.cpp 
b/modules/platforms/cpp/core/src/impl/interop/interop_external_memory.cpp
new file mode 100644
index 0000000..f81cd5f
--- /dev/null
+++ b/modules/platforms/cpp/core/src/impl/interop/interop_external_memory.cpp
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <ignite/ignite_error.h>
+#include <ignite/jni/java.h>
+
+#include "ignite/impl/interop/interop_external_memory.h"
+
+using namespace ignite::jni::java;
+
+namespace ignite
+{
+    namespace impl
+    {
+        namespace interop
+        {
+            InteropExternalMemory::InteropExternalMemory(int8_t* memPtr)
+            {
+                this->memPtr = memPtr;
+            }
+
+            void InteropExternalMemory::Reallocate(int32_t cap)
+            {
+                if (JniContext::Reallocate(reinterpret_cast<int64_t>(memPtr), 
cap) == -1) {
+                    IGNITE_ERROR_FORMATTED_2(IgniteError::IGNITE_ERR_MEMORY, 
"Failed to reallocate external memory",
+                        "memPtr", PointerLong(), "requestedCapacity", cap)
+                }
+            }
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/core/src/impl/interop/interop_input_stream.cpp
----------------------------------------------------------------------
diff --git 
a/modules/platforms/cpp/core/src/impl/interop/interop_input_stream.cpp 
b/modules/platforms/cpp/core/src/impl/interop/interop_input_stream.cpp
deleted file mode 100644
index 7bdda0b..0000000
--- a/modules/platforms/cpp/core/src/impl/interop/interop_input_stream.cpp
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <cstring>
-
-#include "ignite/impl/interop/interop_input_stream.h"
-#include "ignite/ignite_error.h"
-
-/**
- * Common macro to read a single value.
- */
-#define IGNITE_INTEROP_IN_READ(type, len) { \
-    EnsureEnoughData(len); \
-    type res = *reinterpret_cast<type*>(data + pos); \
-    Shift(len); \
-    return res; \
-}
-
-/**
- * Common macro to read an array.
- */
-#define IGNITE_INTEROP_IN_READ_ARRAY(len, shift) { \
-    CopyAndShift(reinterpret_cast<int8_t*>(res), 0, len << shift); \
-}
-
-namespace ignite
-{    
-    namespace impl
-    {
-        namespace interop 
-        {
-            union BinaryInt32Float
-            {
-                int32_t i;
-                float f;
-            };
-
-            union BinaryInt64Double
-            {
-                int64_t i;
-                double d;
-            };
-
-            InteropInputStream::InteropInputStream(InteropMemory* mem)
-            {
-                this->mem = mem;
-
-                data = mem->Data();
-                len = mem->Length();
-                pos = 0;
-            }
-
-            int8_t InteropInputStream::ReadInt8()
-            {
-                IGNITE_INTEROP_IN_READ(int8_t, 1);
-            }
-
-            int32_t InteropInputStream::ReadInt8(int32_t pos)
-            {
-                int delta = pos + 1 - this->pos;
-
-                if (delta > 0)
-                    EnsureEnoughData(delta);
-
-                return *reinterpret_cast<int8_t*>(data + pos);
-            }
-
-            void InteropInputStream::ReadInt8Array(int8_t* const res, const 
int32_t len)
-            {
-                IGNITE_INTEROP_IN_READ_ARRAY(len, 0);
-            }
-
-            bool InteropInputStream::ReadBool()
-            {
-                return ReadInt8() == 1;
-            }
-
-            void InteropInputStream::ReadBoolArray(bool* const res, const 
int32_t len)
-            {
-                for (int i = 0; i < len; i++)
-                    *(res + i) = ReadBool();
-            }
-                
-            int16_t InteropInputStream::ReadInt16()
-            {
-                IGNITE_INTEROP_IN_READ(int16_t, 2);
-            }
-
-            int32_t InteropInputStream::ReadInt16(int32_t pos)
-            {
-                int delta = pos + 2 - this->pos;
-
-                if (delta > 0)
-                    EnsureEnoughData(delta);
-
-                return *reinterpret_cast<int16_t*>(data + pos);
-            }
-
-            void InteropInputStream::ReadInt16Array(int16_t* const res, const 
int32_t len)
-            {
-                IGNITE_INTEROP_IN_READ_ARRAY(len, 1);
-            }
-
-            uint16_t InteropInputStream::ReadUInt16()
-            {
-                IGNITE_INTEROP_IN_READ(uint16_t, 2);
-            }
-
-            void InteropInputStream::ReadUInt16Array(uint16_t* const res, 
const int32_t len)
-            {
-                IGNITE_INTEROP_IN_READ_ARRAY(len, 1);
-            }
-
-            int32_t InteropInputStream::ReadInt32()
-            {
-                IGNITE_INTEROP_IN_READ(int32_t, 4);
-            }
-
-            int32_t InteropInputStream::ReadInt32(int32_t pos)
-            {
-                int delta = pos + 4 - this->pos;
-
-                if (delta > 0)
-                    EnsureEnoughData(delta);
-
-                return *reinterpret_cast<int32_t*>(data + pos);
-            }
-
-            void InteropInputStream::ReadInt32Array(int32_t* const res, const 
int32_t len)
-            {
-                IGNITE_INTEROP_IN_READ_ARRAY(len, 2);
-            }
-
-            int64_t InteropInputStream::ReadInt64()
-            {
-                IGNITE_INTEROP_IN_READ(int64_t, 8);
-            }
-
-            void InteropInputStream::ReadInt64Array(int64_t* const res, const 
int32_t len)
-            {
-                IGNITE_INTEROP_IN_READ_ARRAY(len, 3);
-            }
-
-            float InteropInputStream::ReadFloat()
-            {
-                BinaryInt32Float u;
-
-                u.i = ReadInt32();
-
-                return u.f;
-            }
-
-            void InteropInputStream::ReadFloatArray(float* const res, const 
int32_t len)
-            {
-                IGNITE_INTEROP_IN_READ_ARRAY(len, 2);
-            }
-
-            double InteropInputStream::ReadDouble()
-            {
-                BinaryInt64Double u;
-
-                u.i = ReadInt64();
-
-                return u.d;
-            }
-
-            void InteropInputStream::ReadDoubleArray(double* const res, const 
int32_t len)
-            {
-                IGNITE_INTEROP_IN_READ_ARRAY(len, 3);
-            }
-                
-            int32_t InteropInputStream::Remaining() const
-            {
-                return len - pos;
-            }
-
-            int32_t InteropInputStream::Position() const
-            {
-                return pos;
-            }
-
-            void InteropInputStream::Position(int32_t pos)
-            {
-                if (pos > len) {
-                    IGNITE_ERROR_FORMATTED_3(IgniteError::IGNITE_ERR_MEMORY, 
"Requested input stream position is out of bounds",
-                        "memPtr", mem->PointerLong(), "len", len, "pos", pos);
-                }
-
-                this->pos = pos;
-            }
-
-            void InteropInputStream::Synchronize()
-            {
-                data = mem->Data();
-                len = mem->Length();
-            }
-
-            void InteropInputStream::EnsureEnoughData(int32_t cnt) const
-            {
-                if (len - pos < cnt) {
-                    IGNITE_ERROR_FORMATTED_4(IgniteError::IGNITE_ERR_MEMORY, 
"Not enough data in the stream",
-                        "memPtr", mem->PointerLong(), "len", len, "pos", pos, 
"requested", cnt);
-                }
-            }
-
-            void InteropInputStream::CopyAndShift(int8_t* dest, int32_t off, 
int32_t cnt)
-            {
-                EnsureEnoughData(cnt);
-
-                memcpy(dest + off, data + pos, cnt);
-
-                Shift(cnt);
-            }
-
-            void InteropInputStream::Shift(int32_t cnt)
-            {
-                pos += cnt;
-            }
-        }
-    }
-}        

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/core/src/impl/interop/interop_memory.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/src/impl/interop/interop_memory.cpp 
b/modules/platforms/cpp/core/src/impl/interop/interop_memory.cpp
deleted file mode 100644
index 8ee49c5..0000000
--- a/modules/platforms/cpp/core/src/impl/interop/interop_memory.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <ignite/common/java.h>
-
-#include "ignite/impl/interop/interop_memory.h"
-#include "ignite/ignite_error.h"
-
-using namespace ignite::common::java;
-
-namespace ignite
-{    
-    namespace impl
-    {
-        namespace interop 
-        {
-            int8_t* InteropMemory::Data(const int8_t* memPtr)
-            {
-                return reinterpret_cast<int8_t*>(*reinterpret_cast<const 
int64_t*>(memPtr));
-            }
-
-            void InteropMemory::Data(int8_t* memPtr, void* ptr)
-            {
-                *reinterpret_cast<int64_t*>(memPtr) = 
reinterpret_cast<int64_t>(ptr);
-            }
-
-            int32_t InteropMemory::Capacity(const int8_t* memPtr)
-            {
-                return *reinterpret_cast<const int32_t*>(memPtr + 
IGNITE_MEM_HDR_OFF_CAP);
-            }
-
-            void InteropMemory::Capacity(int8_t* memPtr, int32_t val)
-            {
-                *reinterpret_cast<int32_t*>(memPtr + IGNITE_MEM_HDR_OFF_CAP) = 
val;
-            }
-
-            int32_t InteropMemory::Length(const int8_t* memPtr)
-            {
-                return *reinterpret_cast<const int32_t*>(memPtr + 
IGNITE_MEM_HDR_OFF_LEN);
-            }
-
-            void InteropMemory::Length(int8_t* memPtr, int32_t val)
-            {
-                *reinterpret_cast<int32_t*>(memPtr + IGNITE_MEM_HDR_OFF_LEN) = 
val;
-            }
-
-            int32_t InteropMemory::Flags(const int8_t* memPtr)
-            {
-                return *reinterpret_cast<const int32_t*>(memPtr + 
IGNITE_MEM_HDR_OFF_FLAGS);
-            }
-
-            void InteropMemory::Flags(int8_t* memPtr, int32_t val)
-            {
-                *reinterpret_cast<int32_t*>(memPtr + IGNITE_MEM_HDR_OFF_FLAGS) 
= val;
-            }
-
-            bool InteropMemory::IsExternal(const int8_t* memPtr)
-            {
-                return IsExternal(Flags(memPtr));
-            }
-
-            bool InteropMemory::IsExternal(int32_t flags)
-            {
-                return (flags & IGNITE_MEM_FLAG_EXT) != IGNITE_MEM_FLAG_EXT;
-            }
-
-            bool InteropMemory::IsPooled(const int8_t* memPtr)
-            {
-                return IsPooled(Flags(memPtr));
-            }
-
-            bool InteropMemory::IsPooled(int32_t flags)
-            {
-                return (flags & IGNITE_MEM_FLAG_POOLED) != 0;
-            }
-
-            bool InteropMemory::IsAcquired(const int8_t* memPtr)
-            {
-                return IsAcquired(Flags(memPtr));
-            }
-
-            bool InteropMemory::IsAcquired(int32_t flags)
-            {
-                return (flags & IGNITE_MEM_FLAG_ACQUIRED) != 0;
-            }
-                
-            int8_t* InteropMemory::Pointer()
-            {
-                return memPtr;
-            }
-
-            int64_t InteropMemory::PointerLong()
-            {
-                return reinterpret_cast<int64_t>(memPtr);
-            }
-
-            int8_t* InteropMemory::Data()
-            {
-                return Data(memPtr);
-            }
-
-            int32_t InteropMemory::Capacity() const
-            {
-                return Capacity(memPtr);
-            }
-
-            int32_t InteropMemory::Length() const
-            {
-                return Length(memPtr);
-            }
-
-            void InteropMemory::Length(int32_t val)
-            {
-                Length(memPtr, val);
-            }
-                
-            InteropUnpooledMemory::InteropUnpooledMemory(int32_t cap)
-            {
-                memPtr = static_cast<int8_t*>(malloc(IGNITE_MEM_HDR_LEN));
-                
-                Data(memPtr, malloc(cap));
-                Capacity(memPtr, cap);
-                Length(memPtr, 0);
-                Flags(memPtr, IGNITE_MEM_FLAG_EXT);
-
-                owning = true;
-            }
-
-            InteropUnpooledMemory::InteropUnpooledMemory(int8_t* memPtr)
-            {
-                this->memPtr = memPtr;
-                this->owning = false;
-            }
-
-            InteropUnpooledMemory::~InteropUnpooledMemory()
-            {
-                if (owning) {
-                    free(Data());
-                    free(memPtr);
-                }
-            }
-
-            void InteropUnpooledMemory::Reallocate(int32_t cap)
-            {
-                int doubledCap = Capacity() << 1;
-
-                if (doubledCap > cap)
-                    cap = doubledCap;
-
-                Data(memPtr, realloc(Data(memPtr), cap));
-                Capacity(memPtr, cap);
-            }
-
-            InteropExternalMemory::InteropExternalMemory(int8_t* memPtr) 
-            {
-                this->memPtr = memPtr;
-            }
-
-            void InteropExternalMemory::Reallocate(int32_t cap)
-            {
-                if (JniContext::Reallocate(reinterpret_cast<int64_t>(memPtr), 
cap) == -1) {
-                    IGNITE_ERROR_FORMATTED_2(IgniteError::IGNITE_ERR_MEMORY, 
"Failed to reallocate external memory", 
-                        "memPtr", PointerLong(), "requestedCapacity", cap)
-                }
-            }
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/core/src/impl/interop/interop_output_stream.cpp
----------------------------------------------------------------------
diff --git 
a/modules/platforms/cpp/core/src/impl/interop/interop_output_stream.cpp 
b/modules/platforms/cpp/core/src/impl/interop/interop_output_stream.cpp
deleted file mode 100644
index a69a624..0000000
--- a/modules/platforms/cpp/core/src/impl/interop/interop_output_stream.cpp
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <cstring>
-
-#include "ignite/impl/interop/interop_output_stream.h"
-#include "ignite/ignite_error.h"
-
-/**
- * Common macro to write a single value.
- */
-#define IGNITE_INTEROP_OUT_WRITE(val, type, len) { \
-    EnsureCapacity(pos + len); \
-    *reinterpret_cast<type*>(data + pos) = val; \
-    Shift(len); \
-}
-
-/**
- * Common macro to write an array.
- */
-#define IGNITE_INTEROP_OUT_WRITE_ARRAY(val, len) { \
-    CopyAndShift(reinterpret_cast<const int8_t*>(val), 0, len); \
-}
-
-namespace ignite
-{
-    namespace impl
-    {
-        namespace interop 
-        {
-            union BinaryFloatInt32
-            {
-                float f;
-                int32_t i;                
-            };
-
-            union BinaryDoubleInt64
-            {
-                double d;
-                int64_t i;                
-            };
-
-            InteropOutputStream::InteropOutputStream(InteropMemory* mem)
-            {
-                this->mem = mem;
-
-                data = mem->Data();
-                cap = mem->Capacity();
-                pos = 0;
-            }
-
-            void InteropOutputStream::WriteInt8(const int8_t val)
-            {
-                IGNITE_INTEROP_OUT_WRITE(val, int8_t, 1);
-            }
-
-            void InteropOutputStream::WriteInt8(const int8_t val, const 
int32_t pos)
-            {
-                EnsureCapacity(pos + 1);
-
-                *(data + pos) = val;
-            }
-
-            void InteropOutputStream::WriteInt8Array(const int8_t* val, const 
int32_t len)
-            {
-                IGNITE_INTEROP_OUT_WRITE_ARRAY(val, len);
-            }
-
-            void InteropOutputStream::WriteBool(const bool val)
-            {
-                WriteInt8(val ? 1 : 0);
-            }
-
-            void InteropOutputStream::WriteBoolArray(const bool* val, const 
int32_t len)
-            {
-                for (int i = 0; i < len; i++)
-                    WriteBool(*(val + i));
-            }
-
-            void InteropOutputStream::WriteInt16(const int16_t val)
-            {
-                IGNITE_INTEROP_OUT_WRITE(val, int16_t, 2);
-            }
-
-            void InteropOutputStream::WriteInt16(const int32_t pos, const 
int16_t val)
-            {
-                EnsureCapacity(pos + 2);
-
-                *reinterpret_cast<int16_t*>(data + pos) = val;
-            }
-
-            void InteropOutputStream::WriteInt16Array(const int16_t* val, 
const int32_t len)
-            {
-                IGNITE_INTEROP_OUT_WRITE_ARRAY(val, len << 1);
-            }
-
-            void InteropOutputStream::WriteUInt16(const uint16_t val)
-            {
-                IGNITE_INTEROP_OUT_WRITE(val, uint16_t, 2);
-            }
-
-            void InteropOutputStream::WriteUInt16Array(const uint16_t* val, 
const int32_t len)
-            {
-                IGNITE_INTEROP_OUT_WRITE_ARRAY(val, len << 1);
-            }
-
-            void InteropOutputStream::WriteInt32(const int32_t val)
-            {
-                IGNITE_INTEROP_OUT_WRITE(val, int32_t, 4);
-            }
-
-            void InteropOutputStream::WriteInt32(const int32_t pos, const 
int32_t val)
-            {
-                EnsureCapacity(pos + 4);
-
-                *reinterpret_cast<int32_t*>(data + pos) = val;
-            }
-
-            void InteropOutputStream::WriteInt32Array(const int32_t* val, 
const int32_t len)
-            {
-                IGNITE_INTEROP_OUT_WRITE_ARRAY(val, len << 2);
-            }
-
-            void InteropOutputStream::WriteInt64(const int64_t val)
-            {
-                IGNITE_INTEROP_OUT_WRITE(val, int64_t, 8);
-            }
-
-            void InteropOutputStream::WriteInt64Array(const int64_t* val, 
const int32_t len)
-            {
-                IGNITE_INTEROP_OUT_WRITE_ARRAY(val, len << 3);
-            }
-
-            void InteropOutputStream::WriteFloat(const float val)
-            {
-                BinaryFloatInt32 u;
-
-                u.f = val;
-
-                WriteInt32(u.i);
-            }
-
-            void InteropOutputStream::WriteFloatArray(const float* val, const 
int32_t len)
-            {
-                for (int i = 0; i < len; i++)
-                    WriteFloat(*(val + i));
-            }
-
-            void InteropOutputStream::WriteDouble(const double val)
-            {
-                BinaryDoubleInt64 u;
-
-                u.d = val;
-
-                WriteInt64(u.i);
-            }
-
-            void InteropOutputStream::WriteDoubleArray(const double* val, 
const int32_t len)
-            {
-                for (int i = 0; i < len; i++)
-                    WriteDouble(*(val + i));
-            }
-
-            int32_t InteropOutputStream::Position() const
-            {
-                return pos;
-            }
-
-            void InteropOutputStream::Position(const int32_t val)
-            {
-                EnsureCapacity(val);
-
-                pos = val;
-            }
-
-            int32_t InteropOutputStream::Reserve(int32_t num)
-            {
-                EnsureCapacity(pos + num);
-
-                int32_t res = pos;
-
-                Shift(num);
-
-                return res;
-            }
-
-            void InteropOutputStream::Synchronize()
-            {
-                mem->Length(pos);
-            }
-
-            void InteropOutputStream::EnsureCapacity(int32_t reqCap) {
-                if (reqCap > cap) {
-                    int newCap = cap << 1;
-
-                    if (newCap < reqCap)
-                        newCap = reqCap;
-
-                    mem->Reallocate(newCap);
-                    data = mem->Data();
-                    cap = newCap;
-                }
-            }
-
-            void InteropOutputStream::Shift(int32_t cnt) {
-                pos += cnt;
-            }
-
-            void InteropOutputStream::CopyAndShift(const int8_t* src, int32_t 
off, int32_t len) {
-                EnsureCapacity(pos + len);
-
-                memcpy(data + pos, src + off, len);
-
-                Shift(len);
-            }
-        }
-    }
-}
-

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/cpp.dxg
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/cpp.dxg b/modules/platforms/cpp/cpp.dxg
index 42b0a36..605a613 100644
--- a/modules/platforms/cpp/cpp.dxg
+++ b/modules/platforms/cpp/cpp.dxg
@@ -1715,8 +1715,8 @@ GENERATE_LEGEND        = YES
 
 DOT_CLEANUP            = YES
 
-;INPUT=core
-;EXCLUDE=core/include/ignite/impl core/os/linux/include/ignite/impl 
core/os/linux/src/impl core/os/win/include/ignite/impl core/os/win/src/impl 
core/src/impl
-;STRIP_FROM_PATH=core/include/ignite core/src
+;INPUT=core binary
+;EXCLUDE=core/include/ignite/impl core/os/linux/include/ignite/impl 
core/os/linux/src/impl core/os/win/include/ignite/impl core/os/win/src/impl 
core/src/impl binary/include/ignite/impl binary/src/impl
+;STRIP_FROM_PATH=core/include/ignite core/src binary/include/ignite binary/src
 ;OUTPUT_DIRECTORY=../../clients/target/cppdoc
 ;PROJECT_LOGO=../../../assembly/docfiles/ignite_logo.png

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/examples/Makefile.am
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/examples/Makefile.am 
b/modules/platforms/cpp/examples/Makefile.am
index d99cd82..4d49233 100644
--- a/modules/platforms/cpp/examples/Makefile.am
+++ b/modules/platforms/cpp/examples/Makefile.am
@@ -15,25 +15,10 @@
 ## limitations under the License.
 ##
 
-ACLOCAL_AMFLAGS = "-Im4"
+ACLOCAL_AMFLAGS =-I m4
 
-SUBDIRS = .
-DIST_SUBDIRS = . include
+SUBDIRS = \
+    putget-example \
+    odbc-example \
+    include
 
-AM_CPPFLAGS = -I$(srcdir)/include -I$(JAVA_HOME)/include 
-I$(JAVA_HOME)/include/linux -DIGNITE_IMPL
-AM_CXXFLAGS = -Wall -std=c++0x
-
-noinst_PROGRAMS = ignite-putgetexample
-
-ignite_putgetexample_SOURCES = src/putgetexample.cpp
-
-ignite_putgetexample_LDFLAGS = -static-libtool-libs -L/usr/local/lib -lignite
-
-run-check: check
-       ./ignite-putgetexample -p
-
-clean-local: clean-check
-       $(RM) *.gcno *.gcda
-
-clean-check:
-       $(RM) $(ignite_putgetexample_OBJECTS)

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/examples/README.txt
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/examples/README.txt 
b/modules/platforms/cpp/examples/README.txt
index dafe670..b985f07 100644
--- a/modules/platforms/cpp/examples/README.txt
+++ b/modules/platforms/cpp/examples/README.txt
@@ -15,21 +15,17 @@ Running examples on Linux
 Prerequisites:
  * GCC, g++, autotools, automake, and libtool must be installed.
 
-To build examples execute the following commands one by one from 
$IGNITE_HOME/platforms/cpp/examples directory:
- * libtoolize
- * aclocal
- * autoheader
- * automake --add-missing
- * autoreconf
+To build examples execute the following commands one by one from examples root 
directory:
  * ./configure
  * make
 
-As a result several executables will appear in example's directory.
+As a result executables will appear in every example's directory.
 
 Before running examples ensure that:
  * LD_LIBRARY_PATH environment variable is set and pointing to a directory 
with "libjvm.so" library. Typically this
    library is located in $JAVA_HOME/jre/lib/amd64/server directory.
-
+ * For odbc-example additionaly ODBC Driver Manager must be present and 
installed on your platform and
+   Apache Ignite ODBC driver must be built and installed according to 
instructions for your platform.
 
 Running examples on Windows
 ----------------------------------
@@ -39,4 +35,4 @@ Prerequisites:
  * Windows SDK 7.1 must be installed.
 
 Open Visual Studio solution 
%IGNITE_HOME%\platforms\cpp\examples\project\vs\ignite-examples.sln and select 
proper
-platform (x64 or x86). Run the solution.
\ No newline at end of file
+platform (x64 or x86). Run the solution.

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/examples/config/example-cache.xml
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/examples/config/example-cache.xml 
b/modules/platforms/cpp/examples/config/example-cache.xml
deleted file mode 100644
index a34f672..0000000
--- a/modules/platforms/cpp/examples/config/example-cache.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<beans xmlns="http://www.springframework.org/schema/beans";
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-       xmlns:util="http://www.springframework.org/schema/util";
-       xsi:schemaLocation="
-        http://www.springframework.org/schema/beans
-        http://www.springframework.org/schema/beans/spring-beans.xsd
-        http://www.springframework.org/schema/util
-        http://www.springframework.org/schema/util/spring-util.xsd";>
-    <bean id="grid.cfg" 
class="org.apache.ignite.configuration.IgniteConfiguration">
-        <!-- Set to true to enable distributed class loading for examples, 
default is false. -->
-        <property name="peerClassLoadingEnabled" value="true"/>
-
-        <property name="cacheConfiguration">
-            <list>
-                <!--
-                    Partitioned cache example configuration with binary 
objects enabled.
-                    Used in .NET example that is available only in enterprise 
edition.
-                -->
-                <bean 
class="org.apache.ignite.configuration.CacheConfiguration">
-                    <property name="atomicityMode" value="ATOMIC"/>
-                    <property name="backups" value="1"/>
-                </bean>
-
-                <!--
-                    Partitioned cache example configuration.
-                    Used in .NET cache store example that is available only in 
enterprise edition.
-                -->
-                <bean 
class="org.apache.ignite.configuration.CacheConfiguration">
-                    <property name="name" value="tx"/>
-                    <property name="atomicityMode" value="TRANSACTIONAL"/>
-                    <property name="backups" value="1"/>
-                </bean>
-            </list>
-        </property>
-
-        <!-- Explicitly configure TCP discovery SPI to provide list of initial 
nodes. -->
-        <property name="discoverySpi">
-            <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
-                <property name="ipFinder">
-                    <!--
-                        Ignite provides several options for automatic 
discovery that can be used
-                        instead os static IP based discovery.
-                    -->
-                    <!-- Uncomment static IP finder to enable static-based 
discovery of initial nodes. -->
-                    <!--<bean 
class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">-->
-                    <bean 
class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
-                        <property name="addresses">
-                            <list>
-                                <!-- In distributed environment, replace with 
actual host IP address. -->
-                                <value>127.0.0.1:47500..47501</value>
-                            </list>
-                        </property>
-                    </bean>
-                </property>
-            </bean>
-        </property>
-    </bean>
-</beans>

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/examples/configure.ac
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/examples/configure.ac 
b/modules/platforms/cpp/examples/configure.ac
index f5cf075..1143e6c 100644
--- a/modules/platforms/cpp/examples/configure.ac
+++ b/modules/platforms/cpp/examples/configure.ac
@@ -1,31 +1,48 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
 #                                               -*- Autoconf -*-
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ([2.69])
-AC_INIT([Ingnite C++ 
examples],[1.6.0.8653],[[email protected]],[ignite-examples],[ignite.apache.org])
-AC_CONFIG_SRCDIR(src)
+AC_INIT([Apache Ignite C++ Examples], [1.6.0.8653], [[email protected]], 
[ignite-examples], [ignite.apache.org])
 
-AC_CANONICAL_SYSTEM
+AC_CANONICAL_HOST
 AC_CONFIG_MACRO_DIR([m4])
 AC_LANG([C++])
 
-# Initialize automake
 AM_INIT_AUTOMAKE([-Wall foreign subdir-objects])
-AC_CONFIG_HEADER(config.h)
+AC_CONFIG_HEADERS(config.h)
 
-AM_PROG_AR
+# Enable silent rules by default
+AM_SILENT_RULES([yes])
 
 # Checks for programs.
-GXX="-g -O2"
-
 AC_PROG_CXX
+AM_PROG_AR
 
 # Initialize Libtool
 LT_INIT
 
 AC_ARG_ENABLE([debug],
- [AS_HELP_STRING([--enable-debug],[enable debug build [default=no]])],
- [],[enable_debug=no])
+    [AS_HELP_STRING([--enable-debug],[enable debug build [default=no]])],
+    [],
+    [enable_debug=no]
+)
 
 if test "x$enable_debug" = xyes; then
     CXXFLAGS="-g -O0"
@@ -33,6 +50,10 @@ else
     CXXFLAGS="-g -O3"
 fi
 
-AC_CONFIG_FILES(Makefile)
+AC_CONFIG_FILES([ \
+    Makefile \
+    putget-example/Makefile \
+    odbc-example/Makefile \
+])
 
 AC_OUTPUT

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/examples/include/Makefile.am
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/examples/include/Makefile.am 
b/modules/platforms/cpp/examples/include/Makefile.am
index 13a8816..a54f87c 100644
--- a/modules/platforms/cpp/examples/include/Makefile.am
+++ b/modules/platforms/cpp/examples/include/Makefile.am
@@ -15,7 +15,10 @@
 ## limitations under the License.
 ##
 
-ACLOCAL_AMFLAGS = "-Im4"
+ACLOCAL_AMFLAGS =-I m4
+
+noinst_HEADERS = \
+    ignite/examples/address.h \
+    ignite/examples/organization.h \
+    ignite/examples/person.h
 
-nobase_include_HEADERS = ignite/examples/address.h \
-                         ignite/examples/organization.h

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/examples/include/ignite/examples/address.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/examples/include/ignite/examples/address.h 
b/modules/platforms/cpp/examples/include/ignite/examples/address.h
index 4440037..149a98a 100644
--- a/modules/platforms/cpp/examples/include/ignite/examples/address.h
+++ b/modules/platforms/cpp/examples/include/ignite/examples/address.h
@@ -26,17 +26,16 @@ namespace ignite
     {
         struct Address 
         {
-            Address()
+            Address() : street(), zip(0)
             {
-                street = "";
-                zip = 0;
+                // No-op.
             }
             
             Address(std::string street, int zip) : street(street), zip(zip) 
             {
                 // No-op.
             }
-            
+
             std::string ToString() 
             {
                 std::ostringstream oss;
@@ -45,10 +44,10 @@ namespace ignite
 
                 return oss.str();
             }
-            
+
             std::string street;
             int zip;
-        };    
+        };
     }
 }
 
@@ -99,11 +98,11 @@ namespace ignite
             {
                 std::string street = reader.ReadString("street");
                 int zip = reader.ReadInt32("zip");
-                
+
                 return ignite::examples::Address(street, zip);
             }
-        };    
-    }    
+        };
+    }
 }
 
 #endif
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/examples/include/ignite/examples/organization.h
----------------------------------------------------------------------
diff --git 
a/modules/platforms/cpp/examples/include/ignite/examples/organization.h 
b/modules/platforms/cpp/examples/include/ignite/examples/organization.h
index 8505214..736e600 100644
--- a/modules/platforms/cpp/examples/include/ignite/examples/organization.h
+++ b/modules/platforms/cpp/examples/include/ignite/examples/organization.h
@@ -28,10 +28,9 @@ namespace ignite
     {
         struct Organization 
         {
-            Organization()
+            Organization() : name(), addr()
             {
-                name = "";
-                addr = Address();
+                // No-op.
             }
             
             Organization(std::string name, Address addr) : name(name), 
addr(addr) 
@@ -47,10 +46,10 @@ namespace ignite
 
                 return oss.str();
             }
-            
+
             std::string name;
             Address addr;
-        };    
+        };
     }
 }
 
@@ -101,11 +100,11 @@ namespace ignite
             {
                 std::string name = reader.ReadString("name");
                 ignite::examples::Address addr = 
reader.ReadObject<ignite::examples::Address>("addr");
-                                
+
                 return ignite::examples::Organization(name, addr);
             }
-        };    
-    }    
+        };
+    }
 }
 
 #endif
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/examples/include/ignite/examples/person.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/examples/include/ignite/examples/person.h 
b/modules/platforms/cpp/examples/include/ignite/examples/person.h
new file mode 100644
index 0000000..2c92660
--- /dev/null
+++ b/modules/platforms/cpp/examples/include/ignite/examples/person.h
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _IGNITE_EXAMPLES_PERSON
+#define _IGNITE_EXAMPLES_PERSON
+
+#include <string>
+#include <sstream>
+
+#include "ignite/ignite.h"
+#include "ignite/ignition.h"
+
+namespace ignite
+{
+    namespace examples
+    {
+        struct Person
+        {
+            Person() : orgId(0), salary(.0)
+            {
+                // No-op.
+            }
+
+            Person(int64_t orgId, const std::string& firstName,
+                const std::string& lastName, const std::string& resume, double 
salary) :
+                orgId(orgId),
+                firstName(firstName),
+                lastName(lastName),
+                resume(resume),
+                salary(salary)
+            {
+                // No-op.
+            }
+
+            std::string ToString()
+            {
+                std::ostringstream oss;
+
+                oss << "Person [orgId=" << orgId
+                    << ", lastName=" << lastName
+                    << ", firstName=" << firstName
+                    << ", salary=" << salary
+                    << ", resume=" << resume << ']';
+
+                return oss.str();
+            }
+
+            int64_t orgId;
+            std::string firstName;
+            std::string lastName;
+            std::string resume;
+            double salary;
+        };
+    }
+}
+
+namespace ignite
+{
+    namespace binary
+    {
+        IGNITE_BINARY_TYPE_START(ignite::examples::Person)
+
+            typedef ignite::examples::Person Person;
+
+            IGNITE_BINARY_GET_TYPE_ID_AS_HASH(Person)
+            IGNITE_BINARY_GET_TYPE_NAME_AS_IS(Person)
+            IGNITE_BINARY_GET_FIELD_ID_AS_HASH
+            IGNITE_BINARY_GET_HASH_CODE_ZERO(Person)
+            IGNITE_BINARY_IS_NULL_FALSE(Person)
+            IGNITE_BINARY_GET_NULL_DEFAULT_CTOR(Person)
+
+            void Write(BinaryWriter& writer, ignite::examples::Person obj)
+            {
+                writer.WriteInt64("orgId", obj.orgId);
+                writer.WriteString("firstName", obj.firstName);
+                writer.WriteString("lastName", obj.lastName);
+                writer.WriteString("resume", obj.resume);
+                writer.WriteDouble("salary", obj.salary);
+            }
+
+            ignite::examples::Person Read(BinaryReader& reader)
+            {
+                int64_t orgId = reader.ReadInt64("orgId");
+                std::string firstName = reader.ReadString("firstName");
+                std::string lastName = reader.ReadString("lastName");
+                std::string resume = reader.ReadString("resume");
+                double salary = reader.ReadDouble("salary");
+
+                return ignite::examples::Person(orgId, firstName, lastName, 
resume, salary);
+            }
+
+        IGNITE_BINARY_TYPE_END
+    }
+};
+
+#endif // _IGNITE_EXAMPLES_PERSON
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/examples/odbc-example/Makefile.am
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/examples/odbc-example/Makefile.am 
b/modules/platforms/cpp/examples/odbc-example/Makefile.am
new file mode 100644
index 0000000..e584105
--- /dev/null
+++ b/modules/platforms/cpp/examples/odbc-example/Makefile.am
@@ -0,0 +1,57 @@
+##
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+##
+
+ACLOCAL_AMFLAGS =-I m4
+
+noinst_PROGRAMS = ignite-odbcexample
+
+AM_CPPFLAGS = \
+    -I@top_srcdir@/include \
+    -I@top_srcdir@/../core/include \
+    -I@top_srcdir@/../core/os/linux/include \
+    -I@top_srcdir@/../common/include \
+    -I@top_srcdir@/../common/os/linux/include \
+    -I@top_srcdir@/../binary/include \
+    -I@top_srcdir@/../jni/include \
+    -I@top_srcdir@/../jni/os/linux/include \
+    -I$(JAVA_HOME)/include \
+    -I$(JAVA_HOME)/include/linux \
+    -DIGNITE_IMPL
+
+AM_CXXFLAGS = \
+    -Wall \
+    -std=c++0x
+
+ignite_odbcexample_LDADD = \
+    @top_srcdir@/../core/libignite.la \
+    -lodbc \
+    -lpthread
+
+ignite_odbcexample_LDFLAGS = \
+    -static-libtool-libs
+
+ignite_odbcexample_SOURCES = \
+    src/odbc_example.cpp
+
+run-check: check
+       ./ignite-odbcexample -p
+
+clean-local: clean-check
+       $(RM) *.gcno *.gcda
+
+clean-check:
+       $(RM) $(ignite_odbcexample_OBJECTS)

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/examples/odbc-example/config/example-odbc.xml
----------------------------------------------------------------------
diff --git 
a/modules/platforms/cpp/examples/odbc-example/config/example-odbc.xml 
b/modules/platforms/cpp/examples/odbc-example/config/example-odbc.xml
new file mode 100644
index 0000000..db4c390
--- /dev/null
+++ b/modules/platforms/cpp/examples/odbc-example/config/example-odbc.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<beans xmlns="http://www.springframework.org/schema/beans";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xmlns:util="http://www.springframework.org/schema/util";
+       xsi:schemaLocation="
+        http://www.springframework.org/schema/beans
+        http://www.springframework.org/schema/beans/spring-beans.xsd
+        http://www.springframework.org/schema/util
+        http://www.springframework.org/schema/util/spring-util.xsd";>
+    <bean id="ignite.cfg" 
class="org.apache.ignite.configuration.IgniteConfiguration">
+
+        <!-- Enabling ODBC. -->
+        <property name="odbcConfiguration">
+            <bean 
class="org.apache.ignite.configuration.OdbcConfiguration"></bean>
+        </property>
+
+        <property name="cacheConfiguration">
+            <list>
+                <bean 
class="org.apache.ignite.configuration.CacheConfiguration">
+                    <property name="name" value="Person"/>
+                    <property name="cacheMode" value="PARTITIONED"/>
+                    <property name="atomicityMode" value="TRANSACTIONAL"/>
+                    <property name="writeSynchronizationMode" 
value="FULL_SYNC"/>
+            
+                    <!-- Configure type metadata to enable queries. -->
+                    <property name="typeMetadata">
+                        <list>
+                            <bean 
class="org.apache.ignite.cache.CacheTypeMetadata">
+                                <property name="keyType" 
value="java.lang.Long"/>
+                                <property name="valueType" value="Person"/>
+                                <property name="ascendingFields">
+                                    <map>
+                                        <entry key="orgId" 
value="java.lang.Long"/>
+                                    </map>
+                                </property>
+                                <property name="queryFields">
+                                    <map>
+                                        <entry key="firstName" 
value="java.lang.String"/>
+                                        <entry key="lastName" 
value="java.lang.String"/>
+                                        <entry key="resume" 
value="java.lang.String"/>
+                                        <entry key="salary" 
value="java.lang.Double"/>
+                                    </map>
+                                </property>
+                            </bean>
+                        </list>
+                    </property>
+                </bean>
+                
+                <bean 
class="org.apache.ignite.configuration.CacheConfiguration">
+                    <property name="name" value="Organization"/>
+                    <property name="cacheMode" value="PARTITIONED"/>
+                    <property name="atomicityMode" value="TRANSACTIONAL"/>
+                    <property name="writeSynchronizationMode" 
value="FULL_SYNC"/>
+            
+                    <!-- Configure type metadata to enable queries. -->
+                    <property name="typeMetadata">
+                        <list>
+                            <bean 
class="org.apache.ignite.cache.CacheTypeMetadata">
+                                <property name="keyType" 
value="java.lang.Long"/>
+                                <property name="valueType" 
value="Organization"/>
+                                <property name="ascendingFields">
+                                    <map>
+                                        <entry key="name" 
value="java.lang.String"/>
+                                    </map>
+                                </property>
+                            </bean>
+                        </list>
+                    </property>
+                </bean>
+            </list>
+        </property>
+
+        <!-- Explicitly configure TCP discovery SPI to provide list of initial 
nodes. -->
+        <property name="discoverySpi">
+            <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
+                <property name="ipFinder">
+                    <!--
+                        Ignite provides several options for automatic 
discovery that can be used
+                        instead os static IP based discovery.
+                    -->
+                    <!-- Uncomment static IP finder to enable static-based 
discovery of initial nodes. -->
+                    <!--<bean 
class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">-->
+                    <bean 
class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
+                        <property name="addresses">
+                            <list>
+                                <!-- In distributed environment, replace with 
actual host IP address. -->
+                                <value>127.0.0.1:47500..47501</value>
+                            </list>
+                        </property>
+                    </bean>
+                </property>
+            </bean>
+        </property>
+    </bean>
+</beans>

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/examples/odbc-example/project/vs/odbc-example.vcxproj
----------------------------------------------------------------------
diff --git 
a/modules/platforms/cpp/examples/odbc-example/project/vs/odbc-example.vcxproj 
b/modules/platforms/cpp/examples/odbc-example/project/vs/odbc-example.vcxproj
new file mode 100644
index 0000000..e7bdd08
--- /dev/null
+++ 
b/modules/platforms/cpp/examples/odbc-example/project/vs/odbc-example.vcxproj
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{56839DFF-6C03-416B-BC5F-DDC6EBF8512D}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>igniteexamples</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" 
Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v100</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" 
Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v100</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" 
Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" 
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" 
Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" 
Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" 
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" 
Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <LinkIncremental>false</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup 
Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      
<AdditionalIncludeDirectories>$(JAVA_HOME)\include;$(JAVA_HOME)\include\win32;..\..\..\include;..\..\..\..\common\os\win\include;..\..\..\..\common\include;..\..\..\..\jni\os\win\include;..\..\..\..\jni\include;..\..\..\..\binary\include;..\..\..\..\core\os\win\include;..\..\..\..\core\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      
<AdditionalDependencies>jvm.lib;ignite.common.lib;ignite.jni.lib;ignite.binary.lib;ignite.core.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      
<AdditionalLibraryDirectories>..\..\..\..\project\vs\$(Platform)\$(Configuration)\;$(JAVA_HOME)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy 
"$(ProjectDir)..\..\..\..\project\vs\$(Platform)\$(Configuration)\ignite.jni.dll"
 "$(OutDir)"
+copy 
"$(ProjectDir)..\..\..\..\project\vs\$(Platform)\$(Configuration)\ignite.core.dll"
 "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup 
Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      
<AdditionalIncludeDirectories>$(JAVA_HOME)\include;$(JAVA_HOME)\include\win32;..\..\..\include;..\..\..\..\common\os\win\include;..\..\..\..\common\include;..\..\..\..\jni\os\win\include;..\..\..\..\jni\include;..\..\..\..\binary\include;..\..\..\..\core\os\win\include;..\..\..\..\core\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      
<AdditionalDependencies>jvm.lib;ignite.common.lib;ignite.jni.lib;ignite.binary.lib;ignite.core.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      
<AdditionalLibraryDirectories>..\..\..\..\project\vs\$(Platform)\$(Configuration)\;$(JAVA_HOME)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy 
"$(ProjectDir)..\..\..\..\project\vs\$(Platform)\$(Configuration)\ignite.jni.dll"
 "$(OutDir)"
+copy 
"$(ProjectDir)..\..\..\..\project\vs\$(Platform)\$(Configuration)\ignite.core.dll"
 "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\odbc_example.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\..\include\ignite\examples\address.h" />
+    <ClInclude Include="..\..\..\include\ignite\examples\organization.h" />
+    <ClInclude Include="..\..\..\include\ignite\examples\person.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/764c97b9/modules/platforms/cpp/examples/odbc-example/project/vs/odbc-example.vcxproj.filters
----------------------------------------------------------------------
diff --git 
a/modules/platforms/cpp/examples/odbc-example/project/vs/odbc-example.vcxproj.filters
 
b/modules/platforms/cpp/examples/odbc-example/project/vs/odbc-example.vcxproj.filters
new file mode 100644
index 0000000..44fff7c
--- /dev/null
+++ 
b/modules/platforms/cpp/examples/odbc-example/project/vs/odbc-example.vcxproj.filters
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <ItemGroup>
+    <Filter Include="Source Files">
+      
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      
<UniqueIdentifier>{6400d7ba-6390-4cdb-aa25-9525f8a71444}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\odbc_example.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\..\include\ignite\examples\address.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\include\ignite\examples\organization.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\include\ignite\examples\person.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
\ No newline at end of file

Reply via email to