Remove boost::any

This commit is contained in:
antao 2018-10-16 10:59:32 +08:00
parent a5bdadc3a3
commit 23b8d7447a
5 changed files with 9 additions and 36 deletions

View File

@ -4,22 +4,19 @@ project (DROGON CXX)
IF (CMAKE_SYSTEM_NAME MATCHES "Linux")
EXEC_PROGRAM (gcc ARGS "--version | grep '^gcc'|awk '{print $3}' | sed s'/)//g' | sed s'/-.*//g'" OUTPUT_VARIABLE version)
MESSAGE(STATUS "This is gcc version:: " ${version})
if(version LESS 4.9.0)
if(version LESS 5.4.0)
MESSAGE(STATUS "gcc is too old")
stop()
elseif (version LESS 6.1.0)
MESSAGE(STATUS "c++11")
set(CMAKE_CXX_STD_FLAGS c++11)
elseif(version LESS 7.1.0)
set(CMAKE_CXX_STD_FLAGS c++14)
MESSAGE(STATUS "c++14")
else()
set(CMAKE_CXX_STD_FLAGS c++17)
set(DR_DEFS "USE_STD_ANY")
MESSAGE(STATUS "c++17")
endif()
else()
set(CMAKE_CXX_STD_FLAGS c++11)
#MacOS use c++17
set(CMAKE_CXX_STD_FLAGS c++17)
endif()
include_directories(${PROJECT_SOURCE_DIR}/trantor ${PROJECT_SOURCE_DIR}/lib/inc)
@ -53,12 +50,6 @@ endif()
message(STATUS "openssl inc path:" ${OPENSSL_INCLUDE_DIR})
find_package(ZLIB REQUIRED)
include_directories(${ZLIB_INCLUDE_DIR})
find_package(Boost)
if(Boost_FOUND)
# add_definitions(-DUSE_BOOST)
set(DR_DEFS "USE_BOOST;${DR_DEFS}")
include_directories(${Boost_INCLUDE_DIRS})
endif()
if(CMAKE_BUILD_TYPE STREQUAL "")
set(CMAKE_BUILD_TYPE Release)
@ -89,26 +80,8 @@ SET(CONFIG_HEADER "${PROJECT_SOURCE_DIR}/config.h")
file(WRITE "${CONFIG_HEADER}" "#pragma once\n")
#get_directory_property(DR_DEFS COMPILE_DEFINITIONS)
foreach(loop_var ${DR_DEFS})
file(APPEND "${CONFIG_HEADER}" "#define ${loop_var}\n")
endforeach(loop_var)
file(APPEND "${CONFIG_HEADER}" "#ifdef USE_STD_ANY\n")
file(APPEND "${CONFIG_HEADER}" "#include <any>\n")
file(APPEND "${CONFIG_HEADER}" "using std::any;\n")
file(APPEND "${CONFIG_HEADER}" "using std::any_cast;\n")
file(APPEND "${CONFIG_HEADER}" "#else \n")
file(APPEND "${CONFIG_HEADER}" "#ifdef USE_BOOST\n")
file(APPEND "${CONFIG_HEADER}" "#include <boost/any.hpp>\n")
file(APPEND "${CONFIG_HEADER}" "using boost::any;\n")
file(APPEND "${CONFIG_HEADER}" "using boost::any_cast;\n")
file(APPEND "${CONFIG_HEADER}" "#else\n")
file(APPEND "${CONFIG_HEADER}" "#error,must use c++17 or boost to support any\n")
file(APPEND "${CONFIG_HEADER}" "#endif\n")
file(APPEND "${CONFIG_HEADER}" "#endif\n")
file(APPEND "${CONFIG_HEADER}" "#include <trantor/utils/config.h>\n")
string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_LOWER)
if(CMAKE_BUILD_TYPE_LOWER STREQUAL release)
file(APPEND "${CONFIG_HEADER}" "\n" "const char compileFlags[]=\"" ${CMAKE_CXX_FLAGS_RELEASE} "\";")

View File

@ -63,9 +63,9 @@ static void outputVal(std::ofstream &oSrcFile, const std::string &streamName, co
oSrcFile << "{\n";
oSrcFile << " auto & val=" << viewDataName << "[\"" << keyName << "\"];\n";
oSrcFile << " if(val.type()==typeid(const char *)){\n";
oSrcFile << " " << streamName << "<<any_cast<const char *>(val);\n";
oSrcFile << " " << streamName << "<<*any_cast<const char *>(&val);\n";
oSrcFile << " }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){\n";
oSrcFile << " " << streamName << "<<any_cast<const std::string>(val);\n";
oSrcFile << " " << streamName << "<<*any_cast<const std::string>(&val);\n";
oSrcFile << " }\n";
oSrcFile << "}\n";
}

View File

@ -38,7 +38,7 @@ class HttpViewData
{
try
{
return any_cast<T>(it->second);
return *(std::any_cast<T>(&(it->second)));
}
catch (std::exception &e)
{

View File

@ -33,7 +33,7 @@ class Session
auto it = sessionMap_.find(key);
if (it != sessionMap_.end())
{
return any_cast<T>(it->second);
return *(any_cast<T>(&(it->second)));
}
T tmp;
return tmp;

@ -1 +1 @@
Subproject commit b2f00ea13730d4b37de0a461ab14c0c11cd98c6d
Subproject commit d9252c3032468a1c2a8b8db5dc83142084d50fc0