You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by is...@apache.org on 2022/09/09 20:00:43 UTC
[ignite-3] 02/17: IGNITE-17424 Fix compilation for MSVC
This is an automated email from the ASF dual-hosted git repository.
isapego pushed a commit to branch ignite-17424
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit b26ca7c06fa8f3bed5a66cbf5e2cef3c524fdd0f
Author: Igor Sapego <is...@apache.org>
AuthorDate: Sun Aug 28 15:46:56 2022 +0400
IGNITE-17424 Fix compilation for MSVC
---
.gitignore | 2 +-
modules/platforms/cpp/CMakeLists.txt | 2 +-
modules/platforms/cpp/client-test/CMakeLists.txt | 3 +-
modules/platforms/cpp/common/CMakeLists.txt | 5 +++-
modules/platforms/cpp/common/Platform.h | 32 ++++++++++++++++++++++
.../platforms/cpp/schema/BinaryTupleBuilder.cpp | 3 +-
modules/platforms/cpp/schema/BinaryTupleBuilder.h | 3 +-
modules/platforms/cpp/schema/BinaryTupleParser.cpp | 6 ++--
modules/platforms/cpp/schema/BinaryTupleParser.h | 2 +-
modules/platforms/cpp/schema/BinaryTupleSchema.h | 2 +-
modules/platforms/cpp/schema/DataType.cpp | 1 +
11 files changed, 51 insertions(+), 10 deletions(-)
diff --git a/.gitignore b/.gitignore
index 316612563b..823c84ef00 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,4 +18,4 @@ build/
*.ipr
out/
-modules/platforms/cpp/cmake-build-*
\ No newline at end of file
+modules/platforms/cpp/cmake-build-*
diff --git a/modules/platforms/cpp/CMakeLists.txt b/modules/platforms/cpp/CMakeLists.txt
index c4c3b0e195..fd36bf09ab 100644
--- a/modules/platforms/cpp/CMakeLists.txt
+++ b/modules/platforms/cpp/CMakeLists.txt
@@ -18,7 +18,7 @@
cmake_minimum_required(VERSION 3.10)
project(Ignite.C++ VERSION 3 LANGUAGES CXX)
-set(CMAKE_CXX_STANDARD 14)
+set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_PROJECT_VERSION ${PROJECT_VERSION})
diff --git a/modules/platforms/cpp/client-test/CMakeLists.txt b/modules/platforms/cpp/client-test/CMakeLists.txt
index 31c54604a6..33601b2175 100644
--- a/modules/platforms/cpp/client-test/CMakeLists.txt
+++ b/modules/platforms/cpp/client-test/CMakeLists.txt
@@ -22,7 +22,7 @@ set(TARGET ${PROJECT_NAME})
include_directories(include src)
enable_testing()
-find_package(gtest REQUIRED)
+find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIR})
set(SOURCES
@@ -33,4 +33,5 @@ add_executable(${TARGET} ${SOURCES})
target_link_libraries(${TARGET} ignite-test-common ignite-client ${GTEST_LIBRARY_DEBUG} ${GTEST_MAIN_LIBRARY_DEBUG})
+set(TEST_TARGET IgniteClientTest)
add_test(NAME ${TEST_TARGET} COMMAND ${TARGET})
diff --git a/modules/platforms/cpp/common/CMakeLists.txt b/modules/platforms/cpp/common/CMakeLists.txt
index 661910a7ef..150b4c73a8 100644
--- a/modules/platforms/cpp/common/CMakeLists.txt
+++ b/modules/platforms/cpp/common/CMakeLists.txt
@@ -19,7 +19,10 @@ project(ignite-common)
set(TARGET ${PROJECT_NAME})
-set(HEADERS Types.h)
+set(HEADERS
+ Types.h
+ Platform.h
+)
add_library(${TARGET} INTERFACE)
diff --git a/modules/platforms/cpp/common/Platform.h b/modules/platforms/cpp/common/Platform.h
new file mode 100644
index 0000000000..2901abf986
--- /dev/null
+++ b/modules/platforms/cpp/common/Platform.h
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+#define LITTLE_ENDIAN 1
+#define BIG_ENDIAN 2
+
+#ifdef __BYTE_ORDER__
+# if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+# define BYTE_ORDER LITTLE_ENDIAN
+# else
+# define BYTE_ORDER BIG_ENDIAN
+# endif
+#else
+//TODO: Fix this
+# define BYTE_ORDER LITTLE_ENDIAN
+#endif
\ No newline at end of file
diff --git a/modules/platforms/cpp/schema/BinaryTupleBuilder.cpp b/modules/platforms/cpp/schema/BinaryTupleBuilder.cpp
index ea1b3a8db3..07cf16dde3 100644
--- a/modules/platforms/cpp/schema/BinaryTupleBuilder.cpp
+++ b/modules/platforms/cpp/schema/BinaryTupleBuilder.cpp
@@ -19,6 +19,7 @@
#include "BinaryTupleParser.h"
#include <stdexcept>
+#include <string>
namespace ignite {
@@ -76,7 +77,7 @@ SizeT BinaryTupleBuilder::sizeOf(DATA_TYPE type, BytesView bytes) {
return sizeOfDouble(BinaryTupleParser::getDouble(bytes));
case DATA_TYPE::STRING:
case DATA_TYPE::BINARY:
- return bytes.size();
+ return static_cast<SizeT>(bytes.size());
case DATA_TYPE::UUID:
case DATA_TYPE::DATE:
diff --git a/modules/platforms/cpp/schema/BinaryTupleBuilder.h b/modules/platforms/cpp/schema/BinaryTupleBuilder.h
index 77ea5bb48d..812fc4f954 100644
--- a/modules/platforms/cpp/schema/BinaryTupleBuilder.h
+++ b/modules/platforms/cpp/schema/BinaryTupleBuilder.h
@@ -19,6 +19,7 @@
#include "BinaryTupleSchema.h"
#include "common/Types.h"
+#include "common/Platform.h"
#include <cassert>
#include <cstring>
@@ -307,7 +308,7 @@ private:
* @return Required size.
*/
static SizeT sizeOfDouble(double value) noexcept {
- float floatValue = value;
+ float floatValue = static_cast<float>(value);
return floatValue == value ? sizeOfFloat(floatValue) : sizeof(double);
}
diff --git a/modules/platforms/cpp/schema/BinaryTupleParser.cpp b/modules/platforms/cpp/schema/BinaryTupleParser.cpp
index 73767476e6..4ebb75c5d4 100644
--- a/modules/platforms/cpp/schema/BinaryTupleParser.cpp
+++ b/modules/platforms/cpp/schema/BinaryTupleParser.cpp
@@ -16,6 +16,7 @@
*/
#include "BinaryTupleParser.h"
+#include "common/Platform.h"
#include <cassert>
#include <cstring>
@@ -62,8 +63,9 @@ BinaryTupleParser::BinaryTupleParser(IntT numElements, BytesView data)
static_assert(BYTE_ORDER == LITTLE_ENDIAN);
memcpy(&offset, nextEntry + tableSize - entrySize, entrySize);
const std::byte *tupleEnd = valueBase + offset;
- if (binaryTuple.end() > tupleEnd) {
- binaryTuple.remove_suffix(binaryTuple.end() - tupleEnd);
+ const std::byte *currentEnd = &(*binaryTuple.end());
+ if (currentEnd > tupleEnd) {
+ binaryTuple.remove_suffix(currentEnd - tupleEnd);
}
}
diff --git a/modules/platforms/cpp/schema/BinaryTupleParser.h b/modules/platforms/cpp/schema/BinaryTupleParser.h
index de949801b4..552e93f6f1 100644
--- a/modules/platforms/cpp/schema/BinaryTupleParser.h
+++ b/modules/platforms/cpp/schema/BinaryTupleParser.h
@@ -70,7 +70,7 @@ public:
*
* @return Tuple size.
*/
- SizeT getSize() const noexcept { return binaryTuple.size(); }
+ SizeT getSize() const noexcept { return static_cast<SizeT>(binaryTuple.size()); }
/**
* @brief Gets the expected total number of tuple elements.
diff --git a/modules/platforms/cpp/schema/BinaryTupleSchema.h b/modules/platforms/cpp/schema/BinaryTupleSchema.h
index b2b4bf7a18..624dfd0c3b 100644
--- a/modules/platforms/cpp/schema/BinaryTupleSchema.h
+++ b/modules/platforms/cpp/schema/BinaryTupleSchema.h
@@ -72,7 +72,7 @@ public:
*
* @return Number of elements.
*/
- IntT numElements() const noexcept { return elements.size(); }
+ IntT numElements() const noexcept { return static_cast<IntT>(elements.size()); }
/**
* @brief Gets element info.
diff --git a/modules/platforms/cpp/schema/DataType.cpp b/modules/platforms/cpp/schema/DataType.cpp
index 17d15806cd..77b2a6c61a 100644
--- a/modules/platforms/cpp/schema/DataType.cpp
+++ b/modules/platforms/cpp/schema/DataType.cpp
@@ -18,6 +18,7 @@
#include "DataType.h"
#include <stdexcept>
+#include <string>
namespace ignite {