diff options
-rw-r--r-- | CMakeLists.txt | 41 | ||||
-rw-r--r-- | include/yacppdic/detail/container-impl.hpp | 8 | ||||
-rw-r--r-- | include/yacppdic/object_type.hpp | 2 | ||||
-rw-r--r-- | src/container.cpp | 17 | ||||
-rw-r--r-- | src/object_type.cpp (renamed from include/yacppdic/detail/object_type-impl.hpp) | 2 |
5 files changed, 54 insertions, 16 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 9810762..25ead17 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,12 +1,45 @@ cmake_minimum_required(VERSION 3.2.0) +set(CMAKE_EXPORT_COMPILE_COMMANDS 1) +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + + project(yacppdic CXX) -add_library(${PROJECT_NAME} INTERFACE) +add_library(${PROJECT_NAME} STATIC) + +target_sources( + ${PROJECT_NAME} + PRIVATE + src/container.cpp + src/object_type.cpp +) + +target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_20) + +target_compile_options( + ${PROJECT_NAME} + PRIVATE + -Wall -Wextra -Wpedantic -Wshadow + -Wold-style-cast -Wcast-align -Wno-unused + -Wconversion -Wcast-qual -Wctor-dtor-privacy + -Wdisabled-optimization -Wformat=2 -Winit-self + -Wmissing-declarations -Wmissing-include-dirs + -Woverloaded-virtual -Wredundant-decls + -Wsign-conversion -Wsign-promo + -Wstrict-overflow=5 -Wswitch-default + -Wundef -Werror + -pedantic -fsanitize=address -fno-exceptions -stdlib=libc++ +) + +target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=address -stdlib=libc++) -target_include_directories( - ${PROJECT_NAME} - INTERFACE +target_include_directories(${PROJECT_NAME} + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/src + PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> ) diff --git a/include/yacppdic/detail/container-impl.hpp b/include/yacppdic/detail/container-impl.hpp index 897b8c3..584c0d0 100644 --- a/include/yacppdic/detail/container-impl.hpp +++ b/include/yacppdic/detail/container-impl.hpp @@ -83,12 +83,4 @@ auto Container::get() const noexcept -> AFactory return wrapper->get(); } -void Container::add( - BaseObjectType type, - const WrapperPtr<IGenericWrapper> &wrapper -) noexcept -{ - _bindings.insert({ type, wrapper }); -} - } // namespace yacppdic diff --git a/include/yacppdic/object_type.hpp b/include/yacppdic/object_type.hpp index eb4ce0c..5107dbf 100644 --- a/include/yacppdic/object_type.hpp +++ b/include/yacppdic/object_type.hpp @@ -30,5 +30,3 @@ class ObjectTypeHasher public: auto operator()(const BaseObjectType &object_type) const noexcept -> std::size_t; }; - -#include "yacppdic/detail/object_type-impl.hpp" diff --git a/src/container.cpp b/src/container.cpp new file mode 100644 index 0000000..d906f1e --- /dev/null +++ b/src/container.cpp @@ -0,0 +1,17 @@ +#include "yacppdic/container.hpp" + +#include "yacppdic/detail/internal/wrapper/function_wrapper.hpp" +#include "yacppdic/detail/internal/wrapper/object_wrapper.hpp" + +namespace yacppdic +{ + +void Container::add( + BaseObjectType type, + const WrapperPtr<IGenericWrapper> &wrapper +) noexcept +{ + _bindings.insert({ type, wrapper }); +} + +} // namespace yacppdic diff --git a/include/yacppdic/detail/object_type-impl.hpp b/src/object_type.cpp index f12f99e..4384e37 100644 --- a/include/yacppdic/detail/object_type-impl.hpp +++ b/src/object_type.cpp @@ -1,5 +1,3 @@ -#pragma once - #include "yacppdic/object_type.hpp" BaseObjectType::BaseObjectType(const std::type_info &type_info) noexcept |