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*[]) { }"