Skip to content

Commit

Permalink
enhanced cpp11 compatibility
Browse files Browse the repository at this point in the history
  • Loading branch information
inkrement committed Jan 7, 2020
1 parent a359966 commit fc78d2a
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 33 deletions.
4 changes: 2 additions & 2 deletions CMakeLists.txt
@@ -1,14 +1,14 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.0.2)

INCLUDE (cmake/cpp17.cmake)
INCLUDE (cmake/cpp11.cmake)
INCLUDE (cmake/subdirs.cmake)

OPTION(BUILD_BENCHMARK "Build benchmark" OFF)
OPTION(BUILD_TESTS "Build tests" OFF)

PROJECT (CLICKHOUSE-CLIENT)

USE_CXX17()
USE_CXX11()

IF ("${CMAKE_BUILD_TYPE}" STREQUAL "")
set(CMAKE_BUILD_TYPE "Debug")
Expand Down
11 changes: 7 additions & 4 deletions clickhouse/columns/decimal.cpp
Expand Up @@ -23,11 +23,14 @@ ColumnDecimal::ColumnDecimal(TypeRef type)

void ColumnDecimal::Append(const Int128& value) {
if (data_->Type()->GetCode() == Type::Int32) {
data_->As<ColumnInt32>()->Append(static_cast<ColumnInt32::DataType>(value));
//data_->As<ColumnInt32>()->Append(static_cast<ColumnInt32::DataType>(value));
static_cast<std::shared_ptr<ColumnInt32>>(data_->As<ColumnInt32>())->Append(static_cast<ColumnInt32::DataType>(value));
} else if (data_->Type()->GetCode() == Type::Int64) {
data_->As<ColumnInt64>()->Append(static_cast<ColumnInt64::DataType>(value));
//data_->As<ColumnInt64>()->Append(static_cast<ColumnInt64::DataType>(value));
static_cast<std::shared_ptr<ColumnInt64>>(data_->As<ColumnInt64>())->Append(static_cast<ColumnInt64::DataType>(value));
} else {
data_->As<ColumnInt128>()->Append(static_cast<ColumnInt128::DataType>(value));
//data_->As<ColumnInt128>()->Append(static_cast<ColumnInt128::DataType>(value));
static_cast<std::shared_ptr<ColumnInt128>>(data_->As<ColumnInt128>())->Append(static_cast<ColumnInt128::DataType>(value));
}
}

Expand All @@ -48,7 +51,7 @@ void ColumnDecimal::Append(const std::string& value) {
}
} else if (*c == '.' && !has_dot) {
size_t distance = std::distance(c, end) - 1;
auto scale = type_->As<DecimalType>()->GetScale();
auto scale = std::static_pointer_cast<DecimalType>(type_)->GetScale();

if (distance <= scale) {
zeros = scale - distance;
Expand Down
6 changes: 3 additions & 3 deletions clickhouse/columns/enum.cpp
Expand Up @@ -26,7 +26,7 @@ void ColumnEnum<T>::Append(const T& value, bool checkValue) {

template <typename T>
void ColumnEnum<T>::Append(const std::string& name) {
data_.push_back(type_->As<EnumType>()->GetEnumValue(name));
data_.push_back(std::static_pointer_cast<EnumType>(type_)->GetEnumValue(name));
}

template <typename T>
Expand All @@ -41,7 +41,7 @@ const T& ColumnEnum<T>::At(size_t n) const {

template <typename T>
const std::string ColumnEnum<T>::NameAt(size_t n) const {
return type_->As<EnumType>()->GetEnumName(data_.at(n));
return std::static_pointer_cast<EnumType>(type_)->GetEnumName(data_.at(n));
}

template <typename T>
Expand All @@ -59,7 +59,7 @@ void ColumnEnum<T>::SetAt(size_t n, const T& value, bool checkValue) {

template <typename T>
void ColumnEnum<T>::SetNameAt(size_t n, const std::string& name) {
data_.at(n) = type_->As<EnumType>()->GetEnumValue(name);
data_.at(n) = std::static_pointer_cast<EnumType>(type_)->GetEnumValue(name);
}

template <typename T>
Expand Down
12 changes: 6 additions & 6 deletions clickhouse/types/types.cpp
Expand Up @@ -38,7 +38,7 @@ std::string Type::GetName() const {
case String:
return "String";
case FixedString:
return As<FixedStringType>()->GetName();
return static_cast<const FixedStringType*>(this)->GetName();
case IPv4:
return "IPv4";
case IPv6:
Expand All @@ -48,19 +48,19 @@ std::string Type::GetName() const {
case Date:
return "Date";
case Array:
return As<ArrayType>()->GetName();
return static_cast<const ArrayType*>(this)->GetName();
case Nullable:
return As<NullableType>()->GetName();
return static_cast<const NullableType*>(this)->GetName();
case Tuple:
return As<TupleType>()->GetName();
return static_cast<const TupleType*>(this)->GetName();
case Enum8:
case Enum16:
return As<EnumType>()->GetName();
return static_cast<const EnumType*>(this)->GetName();
case Decimal:
case Decimal32:
case Decimal64:
case Decimal128:
return As<DecimalType>()->GetName();
return static_cast<const DecimalType*>(this)->GetName();
}

// XXX: NOT REACHED!
Expand Down
10 changes: 0 additions & 10 deletions clickhouse/types/types.h
Expand Up @@ -48,16 +48,6 @@ class Type {
Type(const Code code);

public:
template <typename Derived>
auto* As() {
return static_cast<Derived*>(this);
}

template <typename Derived>
const auto* As() const {
return static_cast<const Derived*>(this);
}

/// Type's code.
Code GetCode() const { return code_; }

Expand Down
8 changes: 8 additions & 0 deletions cmake/cpp11.cmake
@@ -0,0 +1,8 @@
MACRO (USE_CXX11)
IF (CMAKE_VERSION VERSION_LESS "3.1")
SET (CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
ELSE ()
SET (CMAKE_CXX_STANDARD 11)
SET (CMAKE_CXX_STANDARD_REQUIRED ON)
ENDIF ()
ENDMACRO (USE_CXX11)
8 changes: 0 additions & 8 deletions cmake/cpp17.cmake

This file was deleted.

0 comments on commit fc78d2a

Please sign in to comment.