You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@orc.apache.org by ga...@apache.org on 2022/11/27 06:37:03 UTC
[orc] branch main updated: ORC-1314: [C++] Remove macros defined before C++11
This is an automated email from the ASF dual-hosted git repository.
gangwu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/orc.git
The following commit(s) were added to refs/heads/main by this push:
new e0c8d1b1a ORC-1314: [C++] Remove macros defined before C++11
e0c8d1b1a is described below
commit e0c8d1b1a5b3f7a4e256df3dff15c3e164d953e8
Author: Gang Wu <us...@gmail.com>
AuthorDate: Sun Nov 27 14:36:57 2022 +0800
ORC-1314: [C++] Remove macros defined before C++11
This closes #1317
---
c++/include/orc/orc-config.hh.in | 53 ++-----------------------
c++/src/Adaptor.cc | 12 ------
c++/src/Adaptor.hh.in | 69 +--------------------------------
c++/src/CMakeLists.txt | 46 ----------------------
c++/src/ColumnPrinter.cc | 29 +++++++-------
c++/src/Compression.cc | 2 +-
c++/src/Reader.cc | 14 +++----
cmake_modules/CheckSourceCompiles.cmake | 45 ---------------------
8 files changed, 25 insertions(+), 245 deletions(-)
diff --git a/c++/include/orc/orc-config.hh.in b/c++/include/orc/orc-config.hh.in
index 56db946cc..3bcae7367 100644
--- a/c++/include/orc/orc-config.hh.in
+++ b/c++/include/orc/orc-config.hh.in
@@ -18,11 +18,6 @@
#define ORC_VERSION "@ORC_VERSION@"
#cmakedefine ORC_CXX_HAS_CSTDINT
-#cmakedefine ORC_CXX_HAS_INITIALIZER_LIST
-#cmakedefine ORC_CXX_HAS_NOEXCEPT
-#cmakedefine ORC_CXX_HAS_NULLPTR
-#cmakedefine ORC_CXX_HAS_OVERRIDE
-#cmakedefine ORC_CXX_HAS_UNIQUE_PTR
#ifdef ORC_CXX_HAS_CSTDINT
#include <cstdint>
@@ -30,49 +25,9 @@
#include <stdint.h>
#endif
-#ifdef ORC_CXX_HAS_NOEXCEPT
- #define ORC_NOEXCEPT noexcept
-#else
- #define ORC_NOEXCEPT throw ()
-#endif
-
-#ifdef ORC_CXX_HAS_NULLPTR
- #define ORC_NULLPTR nullptr
-#else
- namespace orc {
- class nullptr_t {
- public:
- template<class T>
- operator T*() const {
- return 0;
- }
-
- template<class C, class T>
- operator T C::*() const {
- return 0;
- }
- private:
- void operator&() const; // whose address can't be taken
- };
- const nullptr_t nullptr = {};
- }
- #define ORC_NULLPTR orc::nullptr
-#endif
-
-#ifdef ORC_CXX_HAS_OVERRIDE
- #define ORC_OVERRIDE override
-#else
- #define ORC_OVERRIDE
-#endif
-
-#ifdef ORC_CXX_HAS_UNIQUE_PTR
- #define ORC_UNIQUE_PTR std::unique_ptr
-#else
- #define ORC_UNIQUE_PTR std::auto_ptr
- namespace std {
- template<typename T>
- inline T move(T& x) { return x; }
- }
-#endif
+#define ORC_NOEXCEPT noexcept
+#define ORC_NULLPTR nullptr
+#define ORC_OVERRIDE override
+#define ORC_UNIQUE_PTR std::unique_ptr
#endif
diff --git a/c++/src/Adaptor.cc b/c++/src/Adaptor.cc
index b3d49511d..d9390131b 100644
--- a/c++/src/Adaptor.cc
+++ b/c++/src/Adaptor.cc
@@ -20,18 +20,6 @@
#include <iomanip>
#include <sstream>
-#ifndef HAS_STOLL
-namespace std {
- int64_t std::stoll(std::string str) {
- int64_t val = 0;
- stringstream ss;
- ss << str;
- ss >> val;
- return val;
- }
-} // namespace std
-#endif
-
#ifndef HAS_STRPTIME
char* strptime(const char* s, const char* f, struct tm* tm) {
std::istringstream input(s);
diff --git a/c++/src/Adaptor.hh.in b/c++/src/Adaptor.hh.in
index cd32b1623..6b2174080 100644
--- a/c++/src/Adaptor.hh.in
+++ b/c++/src/Adaptor.hh.in
@@ -19,20 +19,15 @@
#ifndef ADAPTER_HH
#define ADAPTER_HH
-#cmakedefine INT64_IS_LL
-#cmakedefine HAS_CONSTEXPR
#cmakedefine HAS_PREAD
#cmakedefine HAS_STRPTIME
-#cmakedefine HAS_STOLL
#cmakedefine HAS_DIAGNOSTIC_PUSH
#cmakedefine HAS_DOUBLE_TO_STRING
#cmakedefine HAS_INT64_TO_STRING
#cmakedefine HAS_PRE_1970
#cmakedefine HAS_POST_2038
#cmakedefine HAS_STD_ISNAN
-#cmakedefine HAS_STD_MUTEX
#cmakedefine HAS_BUILTIN_OVERFLOW_CHECK
-#cmakedefine NEEDS_REDUNDANT_MOVE
#cmakedefine NEEDS_Z_PREFIX
#include "orc/orc-config.hh"
@@ -46,13 +41,6 @@ typedef SSIZE_T ssize_t;
#define asctime_r(tm, buf) (asctime_s(buf, 26, tm) ? NULL : buf)
#endif
-#ifndef HAS_STOLL
- // A poor man's stoll that converts str to a long long int base 10
- namespace std {
- int64_t stoll(std::string str);
- }
-#endif
-
#ifndef HAS_STRPTIME
char* strptime(const char* buf, const char* format, struct tm* tm);
#endif
@@ -61,20 +49,6 @@ typedef SSIZE_T ssize_t;
ssize_t pread(int fd, void* buf, size_t count, off_t offset);
#endif
-#ifdef INT64_IS_LL
- #define INT64_FORMAT_STRING "ll"
-#else
- #define INT64_FORMAT_STRING "l"
-#endif
-
-#ifndef ORC_CXX_HAS_NOEXCEPT
- #define noexcept ORC_NOEXCEPT
-#endif
-
-#ifndef ORC_CXX_HAS_OVERRIDE
- #define override ORC_OVERRIDE
-#endif
-
#ifdef HAS_DIAGNOSTIC_PUSH
#ifdef __clang__
#define DIAGNOSTIC_PUSH _Pragma("clang diagnostic push")
@@ -105,10 +79,6 @@ typedef SSIZE_T ssize_t;
#define DIAGNOSTIC_IGNORE(XXX)
#endif
-#ifndef ORC_CXX_HAS_UNIQUE_PTR
- #define unique_ptr auto_ptr
-#endif
-
#ifndef UINT32_MAX
#define UINT32_MAX 0xffffffff
#endif
@@ -123,12 +93,6 @@ typedef SSIZE_T ssize_t;
#define GTEST_LANG_CXX11 0
-#ifdef NEEDS_REDUNDANT_MOVE
- #define REDUNDANT_MOVE(XXX) std::move(XXX)
-#else
- #define REDUNDANT_MOVE(XXX) XXX
-#endif
-
#ifndef HAS_STD_ISNAN
#include <math.h>
#define std::isnan(XXX) isnan(XXX)
@@ -136,34 +100,7 @@ typedef SSIZE_T ssize_t;
#include <cmath>
#endif
-#ifndef HAS_STD_MUTEX
- #include <pthread.h>
- namespace orc {
- /**
- * Lock guard for pthread_mutex_t object using RAII
- * The Lock is automatically release when exiting current scope.
- */
- class LockORC {
- public:
- explicit LockORC(pthread_mutex_t& mutex) : mutex_ref_(mutex) {
- pthread_mutex_lock(&mutex_ref_);
- }
- ~LockORC() { pthread_mutex_unlock(&mutex_ref_); }
- private:
- // no default constructor
- LockORC();
- // prohibit copying
- LockORC(const LockORC&);
- LockORC& operator=(const LockORC&);
-
- pthread_mutex_t& mutex_ref_;
- };
- }
- #define std::mutex pthread_mutex_t
- #define std::lock_guard<std::mutex> LockORC
-#else
- #include <mutex>
-#endif
+#include <mutex>
#ifdef NEEDS_Z_PREFIX
#define Z_PREFIX 1
@@ -208,8 +145,4 @@ namespace orc {
}
#endif
-#ifndef HAS_CONSTEXPR
-#define constexpr const
-#endif
-
#endif /* ADAPTER_HH */
diff --git a/c++/src/CMakeLists.txt b/c++/src/CMakeLists.txt
index 673c156d3..048207953 100644
--- a/c++/src/CMakeLists.txt
+++ b/c++/src/CMakeLists.txt
@@ -34,14 +34,6 @@ CHECK_CXX_SOURCE_COMPILES("
HAS_STRPTIME
)
-CHECK_CXX_SOURCE_COMPILES("
- #include<string>
- int main(int,char* argv[]){
- return static_cast<int>(std::stoll(argv[0]));
- }"
- HAS_STOLL
-)
-
CHECK_CXX_SOURCE_COMPILES("
int main(){
int a;
@@ -50,15 +42,6 @@ CHECK_CXX_SOURCE_COMPILES("
HAS_BUILTIN_OVERFLOW_CHECK
)
-CHECK_CXX_SOURCE_COMPILES("
- #include<stdint.h>
- #include<stdio.h>
- int main(int,char*[]){
- int64_t x = 1; printf(\"%lld\",x);
- }"
- INT64_IS_LL
-)
-
CHECK_CXX_SOURCE_COMPILES("
#ifdef __clang__
#pragma clang diagnostic push
@@ -87,25 +70,6 @@ CHECK_CXX_SOURCE_COMPILES("
HAS_STD_ISNAN
)
-CHECK_CXX_SOURCE_COMPILES("
- #include<mutex>
- int main(int, char *[]) {
- std::mutex test_mutex;
- std::lock_guard<std::mutex> lock_mutex(test_mutex);
- }"
- HAS_STD_MUTEX
-)
-
-CHECK_CXX_SOURCE_COMPILES("
- #include<string>
- std::string func() {
- std::string var = \"test\";
- return std::move(var);
- }
- int main(int, char *[]) {}"
- NEEDS_REDUNDANT_MOVE
-)
-
CHECK_CXX_SOURCE_COMPILES("
#include<string>
int main(int, char *[]) {
@@ -125,16 +89,6 @@ CHECK_CXX_SOURCE_COMPILES("
HAS_INT64_TO_STRING
)
-CHECK_CXX_SOURCE_COMPILES("
- constexpr int foo(int x, int y) {
- return x+y;
- }
- int main(int, char*[]) {
- return foo(1,3);
- }"
- HAS_CONSTEXPR
-)
-
INCLUDE(CheckCXXSourceRuns)
CHECK_CXX_SOURCE_RUNS("
diff --git a/c++/src/ColumnPrinter.cc b/c++/src/ColumnPrinter.cc
index 3d40002b7..d95c1bdbf 100644
--- a/c++/src/ColumnPrinter.cc
+++ b/c++/src/ColumnPrinter.cc
@@ -319,10 +319,8 @@ namespace orc {
if (hasNulls && !notNull[rowId]) {
writeString(buffer, "null");
} else {
- char numBuffer[64];
- snprintf(numBuffer, sizeof(numBuffer), "%" INT64_FORMAT_STRING "d",
- static_cast<int64_t>(data[rowId]));
- writeString(buffer, numBuffer);
+ const auto numBuffer = std::to_string(static_cast<int64_t>(data[rowId]));
+ writeString(buffer, numBuffer.c_str());
}
}
@@ -542,10 +540,8 @@ namespace orc {
writeString(buffer, "null");
} else {
writeString(buffer, "{\"tag\": ");
- char numBuffer[64];
- snprintf(numBuffer, sizeof(numBuffer), "%" INT64_FORMAT_STRING "d",
- static_cast<int64_t>(tags[rowId]));
- writeString(buffer, numBuffer);
+ const auto numBuffer = std::to_string(static_cast<int64_t>(tags[rowId]));
+ writeString(buffer, numBuffer.c_str());
writeString(buffer, ", \"value\": ");
fieldPrinter[tags[rowId]]->printRow(offsets[rowId]);
writeChar(buffer, '}');
@@ -643,10 +639,8 @@ namespace orc {
if (i != 0) {
writeString(buffer, ", ");
}
- char numBuffer[64];
- snprintf(numBuffer, sizeof(numBuffer), "%d",
- (static_cast<const int>(start[rowId][i]) & 0xff));
- writeString(buffer, numBuffer);
+ const auto numBuffer = std::to_string(static_cast<const int>(start[rowId][i]) & 0xff);
+ writeString(buffer, numBuffer.c_str());
}
writeChar(buffer, ']');
}
@@ -687,10 +681,13 @@ namespace orc {
zeroDigits += 1;
}
}
- char numBuffer[64];
- snprintf(numBuffer, sizeof(numBuffer), "%0*" INT64_FORMAT_STRING "d\"",
- static_cast<int>(NANO_DIGITS - zeroDigits), static_cast<int64_t>(nanos));
- writeString(buffer, numBuffer);
+ const auto numBuffer = std::to_string(static_cast<int64_t>(nanos));
+ const int64_t padDigits = NANO_DIGITS - zeroDigits - static_cast<int64_t>(numBuffer.size());
+ for (int i = 0; i < padDigits; ++i) {
+ writeChar(buffer, '0');
+ }
+ writeString(buffer, numBuffer.c_str());
+ writeChar(buffer, '"');
}
}
diff --git a/c++/src/Compression.cc b/c++/src/Compression.cc
index 6acc52d6f..3d8c46928 100644
--- a/c++/src/Compression.cc
+++ b/c++/src/Compression.cc
@@ -1184,7 +1184,7 @@ namespace orc {
MemoryPool& pool, ReaderMetrics* metrics) {
switch (static_cast<int64_t>(kind)) {
case CompressionKind_NONE:
- return REDUNDANT_MOVE(input);
+ return input;
case CompressionKind_ZLIB:
return std::unique_ptr<SeekableInputStream>(
new ZlibDecompressionStream(std::move(input), blockSize, pool, metrics));
diff --git a/c++/src/Reader.cc b/c++/src/Reader.cc
index 466cfd433..dbd2a4bae 100644
--- a/c++/src/Reader.cc
+++ b/c++/src/Reader.cc
@@ -549,7 +549,7 @@ namespace orc {
isMetadataLoaded = false;
checkOrcVersion();
numberOfStripes = static_cast<uint64_t>(footer->stripes_size());
- contents->schema = REDUNDANT_MOVE(convertType(footer->types(0), *footer));
+ contents->schema = convertType(footer->types(0), *footer);
contents->blockSize = getCompressionBlockSize(*contents->postscript);
contents->compression = convertCompressionKind(*contents->postscript);
}
@@ -1259,7 +1259,7 @@ namespace orc {
static_cast<int>(postscriptSize))) {
throw ParseError("Failed to parse the postscript from " + stream->getName());
}
- return REDUNDANT_MOVE(postscript);
+ return postscript;
}
/**
@@ -1325,7 +1325,7 @@ namespace orc {
}
checkProtoTypes(*footer);
- return REDUNDANT_MOVE(footer);
+ return footer;
}
std::unique_ptr<Reader> createReader(std::unique_ptr<InputStream> stream,
@@ -1360,8 +1360,7 @@ namespace orc {
stream->read(buffer->data(), readSize, fileLength - readSize);
postscriptLength = buffer->data()[readSize - 1] & 0xff;
- contents->postscript =
- REDUNDANT_MOVE(readPostscript(stream.get(), buffer.get(), postscriptLength));
+ contents->postscript = readPostscript(stream.get(), buffer.get(), postscriptLength);
uint64_t footerSize = contents->postscript->footerlength();
uint64_t tailSize = 1 + postscriptLength + footerSize;
if (tailSize >= fileLength) {
@@ -1379,9 +1378,8 @@ namespace orc {
footerOffset = readSize - tailSize;
}
- contents->footer =
- REDUNDANT_MOVE(readFooter(stream.get(), buffer.get(), footerOffset, *contents->postscript,
- *contents->pool, contents->readerMetrics));
+ contents->footer = readFooter(stream.get(), buffer.get(), footerOffset, *contents->postscript,
+ *contents->pool, contents->readerMetrics);
}
contents->isDecimalAsLong = false;
if (contents->postscript->version_size() == 2) {
diff --git a/cmake_modules/CheckSourceCompiles.cmake b/cmake_modules/CheckSourceCompiles.cmake
index 3168560df..24a970427 100644
--- a/cmake_modules/CheckSourceCompiles.cmake
+++ b/cmake_modules/CheckSourceCompiles.cmake
@@ -14,51 +14,6 @@ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX17_FLAGS} ${WARN_FLAGS}")
INCLUDE(CheckCXXSourceCompiles)
-CHECK_CXX_SOURCE_COMPILES("
- #include <initializer_list>
- struct A {
- A(std::initializer_list<int> list);
- };
- int main(int,char*[]){
- }"
- ORC_CXX_HAS_INITIALIZER_LIST
-)
-
-CHECK_CXX_SOURCE_COMPILES("
- int main(int,char*[]) noexcept {
- return 0;
- }"
- ORC_CXX_HAS_NOEXCEPT
-)
-
-CHECK_CXX_SOURCE_COMPILES("
- int main(int,char* argv[]){
- return argv[0] != nullptr;
- }"
- ORC_CXX_HAS_NULLPTR
-)
-
-CHECK_CXX_SOURCE_COMPILES("
- struct A {
- virtual ~A();
- virtual void foo();
- };
- struct B: public A {
- virtual void foo() override;
- };
- int main(int,char*[]){
- }"
- ORC_CXX_HAS_OVERRIDE
-)
-
-CHECK_CXX_SOURCE_COMPILES("
- #include<memory>
- int main(int,char* []){
- std::unique_ptr<int> ptr(new int);
- }"
- ORC_CXX_HAS_UNIQUE_PTR
-)
-
CHECK_CXX_SOURCE_COMPILES("
#include <cstdint>
int main(int, char*[]) { }"