From 1f97ab2ef846462d7a599fbd3ac9415da8f0953b Mon Sep 17 00:00:00 2001 From: HampusM Date: Thu, 28 Apr 2022 22:01:40 +0200 Subject: build: change to static library --- CMakeLists.txt | 41 +++++++++++++++++++++++++--- include/yacppdic/detail/container-impl.hpp | 8 ------ include/yacppdic/detail/object_type-impl.hpp | 29 -------------------- include/yacppdic/object_type.hpp | 2 -- src/container.cpp | 17 ++++++++++++ src/object_type.cpp | 27 ++++++++++++++++++ 6 files changed, 81 insertions(+), 43 deletions(-) delete mode 100644 include/yacppdic/detail/object_type-impl.hpp create mode 100644 src/container.cpp create mode 100644 src/object_type.cpp 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 $ ) 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 &wrapper -) noexcept -{ - _bindings.insert({ type, wrapper }); -} - } // namespace yacppdic diff --git a/include/yacppdic/detail/object_type-impl.hpp b/include/yacppdic/detail/object_type-impl.hpp deleted file mode 100644 index f12f99e..0000000 --- a/include/yacppdic/detail/object_type-impl.hpp +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include "yacppdic/object_type.hpp" - -BaseObjectType::BaseObjectType(const std::type_info &type_info) noexcept - : _type_info(type_info) -{ -} - -auto BaseObjectType::operator==(const BaseObjectType &object_type) const noexcept -> bool -{ - return hash() == object_type.hash(); -} - -auto BaseObjectType::hash() const noexcept -> std::size_t -{ - return _type_info.hash_code(); -} - -auto BaseObjectType::name() const noexcept -> std::string_view -{ - return { _type_info.name() }; -} - -auto ObjectTypeHasher::operator()(const BaseObjectType &object_type) const noexcept - -> std::size_t -{ - return object_type.hash(); -} 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 &wrapper +) noexcept +{ + _bindings.insert({ type, wrapper }); +} + +} // namespace yacppdic diff --git a/src/object_type.cpp b/src/object_type.cpp new file mode 100644 index 0000000..4384e37 --- /dev/null +++ b/src/object_type.cpp @@ -0,0 +1,27 @@ +#include "yacppdic/object_type.hpp" + +BaseObjectType::BaseObjectType(const std::type_info &type_info) noexcept + : _type_info(type_info) +{ +} + +auto BaseObjectType::operator==(const BaseObjectType &object_type) const noexcept -> bool +{ + return hash() == object_type.hash(); +} + +auto BaseObjectType::hash() const noexcept -> std::size_t +{ + return _type_info.hash_code(); +} + +auto BaseObjectType::name() const noexcept -> std::string_view +{ + return { _type_info.name() }; +} + +auto ObjectTypeHasher::operator()(const BaseObjectType &object_type) const noexcept + -> std::size_t +{ + return object_type.hash(); +} -- cgit v1.2.3-18-g5258