diff --git a/CMakeLists.txt b/CMakeLists.txt index 24c4f79..d745fb3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,12 +1,30 @@ -cmake_minimum_required(VERSION 3.15 FATAL_ERROR) +cmake_minimum_required(VERSION 3.21 FATAL_ERROR) -if(NOT DEFINED PROJECT_NAME) - set(BUILD_AS_STANDALONE ON) -else() - set(BUILD_AS_STANDALONE OFF) -endif() +# +# VERSION +# -project(meta.hpp) +file(READ headers/meta.hpp/meta_base/base.hpp META_HPP_BASE_FILE) + +string(REGEX MATCH "#define[ ]+META_HPP_VERSION_MAJOR[ ]+([0-9]+)" _ ${META_HPP_BASE_FILE}) +set(META_HPP_VERSION_MAJOR "${CMAKE_MATCH_1}") + +string(REGEX MATCH "#define[ ]+META_HPP_VERSION_MINOR[ ]+([0-9]+)" _ ${META_HPP_BASE_FILE}) +set(META_HPP_VERSION_MINOR "${CMAKE_MATCH_1}") + +string(REGEX MATCH "#define[ ]+META_HPP_VERSION_PATCH[ ]+([0-9]+)" _ ${META_HPP_BASE_FILE}) +set(META_HPP_VERSION_PATCH "${CMAKE_MATCH_1}") + +set(META_HPP_VERSION ${META_HPP_VERSION_MAJOR}.${META_HPP_VERSION_MINOR}.${META_HPP_VERSION_PATCH}) + +# +# PROJECT +# + +project(meta.hpp + VERSION ${META_HPP_VERSION} + DESCRIPTION "C++20 tiny dynamic reflection library" + HOMEPAGE_URL "https://github.com/blackmatov/meta.hpp") add_library(${PROJECT_NAME} INTERFACE) target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_20) @@ -16,10 +34,10 @@ find_package(Threads REQUIRED) target_link_libraries(${PROJECT_NAME} INTERFACE Threads::Threads) # -# BUILD_AS_STANDALONE +# DEVELOPER # -if(NOT ${BUILD_AS_STANDALONE}) +if(NOT PROJECT_IS_TOP_LEVEL) return() endif() diff --git a/CMakePresets.json b/CMakePresets.json index 8df8146..1e08e52 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -3,7 +3,7 @@ "cmakeMinimumRequired": { "major": 3, - "minor": 20, + "minor": 21, "patch": 0 }, diff --git a/headers/meta.hpp/meta_all.hpp b/headers/meta.hpp/meta_all.hpp index 070501d..6f2eacd 100644 --- a/headers/meta.hpp/meta_all.hpp +++ b/headers/meta.hpp/meta_all.hpp @@ -9,7 +9,6 @@ #include "meta_base.hpp" #include "meta_binds.hpp" - #include "meta_binds/array_bind.hpp" #include "meta_binds/class_bind.hpp" #include "meta_binds/enum_bind.hpp" diff --git a/headers/meta.hpp/meta_base.hpp b/headers/meta.hpp/meta_base.hpp index 0840599..ed6d76b 100644 --- a/headers/meta.hpp/meta_base.hpp +++ b/headers/meta.hpp/meta_base.hpp @@ -6,34 +6,7 @@ #pragma once -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - +#include "meta_base/base.hpp" #include "meta_base/bitflags.hpp" #include "meta_base/cv_traits.hpp" #include "meta_base/cvref_traits.hpp" @@ -48,14 +21,6 @@ #include "meta_base/type_kinds.hpp" #include "meta_base/type_list.hpp" -#if !defined(__cpp_exceptions) -# define META_HPP_NO_EXCEPTIONS -#endif - -#if !defined(__cpp_rtti) -# define META_HPP_NO_RTTI -#endif - namespace meta_hpp { using detail::select_const; diff --git a/headers/meta.hpp/meta_base/base.hpp b/headers/meta.hpp/meta_base/base.hpp new file mode 100644 index 0000000..47e96a5 --- /dev/null +++ b/headers/meta.hpp/meta_base/base.hpp @@ -0,0 +1,47 @@ +/******************************************************************************* + * This file is part of the "https://github.com/blackmatov/meta.hpp" + * For conditions of distribution and use, see copyright notice in LICENSE.md + * Copyright (C) 2021-2022, by Matvey Cherevko (blackmatov@gmail.com) + ******************************************************************************/ + +#pragma once + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define META_HPP_VERSION_MAJOR 0 +#define META_HPP_VERSION_MINOR 0 +#define META_HPP_VERSION_PATCH 1 + +#if !defined(__cpp_exceptions) +# define META_HPP_NO_EXCEPTIONS +#endif + +#if !defined(__cpp_rtti) +# define META_HPP_NO_RTTI +#endif diff --git a/headers/meta.hpp/meta_base/bitflags.hpp b/headers/meta.hpp/meta_base/bitflags.hpp index 90edcac..a297451 100644 --- a/headers/meta.hpp/meta_base/bitflags.hpp +++ b/headers/meta.hpp/meta_base/bitflags.hpp @@ -6,9 +6,7 @@ #pragma once -#include -#include -#include +#include "base.hpp" namespace meta_hpp::detail { diff --git a/headers/meta.hpp/meta_base/cv_traits.hpp b/headers/meta.hpp/meta_base/cv_traits.hpp index 9e92401..97e3e74 100644 --- a/headers/meta.hpp/meta_base/cv_traits.hpp +++ b/headers/meta.hpp/meta_base/cv_traits.hpp @@ -6,7 +6,7 @@ #pragma once -#include +#include "base.hpp" namespace meta_hpp::detail { diff --git a/headers/meta.hpp/meta_base/cvref_traits.hpp b/headers/meta.hpp/meta_base/cvref_traits.hpp index 0aef426..957d25a 100644 --- a/headers/meta.hpp/meta_base/cvref_traits.hpp +++ b/headers/meta.hpp/meta_base/cvref_traits.hpp @@ -6,7 +6,7 @@ #pragma once -#include +#include "base.hpp" namespace meta_hpp::detail { diff --git a/headers/meta.hpp/meta_base/fixed_function.hpp b/headers/meta.hpp/meta_base/fixed_function.hpp index 0cfc6a8..0e72313 100644 --- a/headers/meta.hpp/meta_base/fixed_function.hpp +++ b/headers/meta.hpp/meta_base/fixed_function.hpp @@ -6,14 +6,7 @@ #pragma once -#include -#include - -#include -#include -#include -#include -#include +#include "base.hpp" namespace meta_hpp::detail { diff --git a/headers/meta.hpp/meta_base/hash_combiner.hpp b/headers/meta.hpp/meta_base/hash_combiner.hpp index e228c45..05b09bc 100644 --- a/headers/meta.hpp/meta_base/hash_combiner.hpp +++ b/headers/meta.hpp/meta_base/hash_combiner.hpp @@ -6,8 +6,7 @@ #pragma once -#include -#include +#include "base.hpp" namespace meta_hpp::detail { diff --git a/headers/meta.hpp/meta_base/is_in_place_type.hpp b/headers/meta.hpp/meta_base/is_in_place_type.hpp index b9c0648..edbb08b 100644 --- a/headers/meta.hpp/meta_base/is_in_place_type.hpp +++ b/headers/meta.hpp/meta_base/is_in_place_type.hpp @@ -6,8 +6,7 @@ #pragma once -#include -#include +#include "base.hpp" namespace meta_hpp::detail { diff --git a/headers/meta.hpp/meta_base/noncopyable.hpp b/headers/meta.hpp/meta_base/noncopyable.hpp index 7b3a84c..c9608bc 100644 --- a/headers/meta.hpp/meta_base/noncopyable.hpp +++ b/headers/meta.hpp/meta_base/noncopyable.hpp @@ -6,6 +6,8 @@ #pragma once +#include "base.hpp" + namespace meta_hpp::detail { class noncopyable { diff --git a/headers/meta.hpp/meta_base/overloaded.hpp b/headers/meta.hpp/meta_base/overloaded.hpp index 0ae408d..3839775 100644 --- a/headers/meta.hpp/meta_base/overloaded.hpp +++ b/headers/meta.hpp/meta_base/overloaded.hpp @@ -6,6 +6,8 @@ #pragma once +#include "base.hpp" + namespace meta_hpp::detail { template < typename... Ts > diff --git a/headers/meta.hpp/meta_base/select_overload.hpp b/headers/meta.hpp/meta_base/select_overload.hpp index 8a275ef..818926f 100644 --- a/headers/meta.hpp/meta_base/select_overload.hpp +++ b/headers/meta.hpp/meta_base/select_overload.hpp @@ -6,6 +6,8 @@ #pragma once +#include "base.hpp" + namespace meta_hpp::detail { template < typename C, typename R, typename... Args > diff --git a/headers/meta.hpp/meta_base/to_underlying.hpp b/headers/meta.hpp/meta_base/to_underlying.hpp index f4bd77f..57545f5 100644 --- a/headers/meta.hpp/meta_base/to_underlying.hpp +++ b/headers/meta.hpp/meta_base/to_underlying.hpp @@ -6,7 +6,7 @@ #pragma once -#include +#include "base.hpp" namespace meta_hpp::detail { diff --git a/headers/meta.hpp/meta_base/type_id.hpp b/headers/meta.hpp/meta_base/type_id.hpp index ddcfe97..bf85eb7 100644 --- a/headers/meta.hpp/meta_base/type_id.hpp +++ b/headers/meta.hpp/meta_base/type_id.hpp @@ -6,10 +6,7 @@ #pragma once -#include -#include -#include - +#include "base.hpp" #include "type_list.hpp" namespace meta_hpp::detail diff --git a/headers/meta.hpp/meta_base/type_kinds.hpp b/headers/meta.hpp/meta_base/type_kinds.hpp index ea72011..fd02438 100644 --- a/headers/meta.hpp/meta_base/type_kinds.hpp +++ b/headers/meta.hpp/meta_base/type_kinds.hpp @@ -6,8 +6,7 @@ #pragma once -#include -#include +#include "base.hpp" namespace meta_hpp::detail { diff --git a/headers/meta.hpp/meta_base/type_list.hpp b/headers/meta.hpp/meta_base/type_list.hpp index 43684b3..6063edd 100644 --- a/headers/meta.hpp/meta_base/type_list.hpp +++ b/headers/meta.hpp/meta_base/type_list.hpp @@ -6,7 +6,7 @@ #pragma once -#include +#include "base.hpp" namespace meta_hpp::detail { diff --git a/singles/headers/meta.hpp/meta_all.hpp b/singles/headers/meta.hpp/meta_all.hpp index 541a989..0657eee 100644 --- a/singles/headers/meta.hpp/meta_all.hpp +++ b/singles/headers/meta.hpp/meta_all.hpp @@ -31,6 +31,18 @@ #include #include +#define META_HPP_VERSION_MAJOR 0 +#define META_HPP_VERSION_MINOR 0 +#define META_HPP_VERSION_PATCH 1 + +#if !defined(__cpp_exceptions) +# define META_HPP_NO_EXCEPTIONS +#endif + +#if !defined(__cpp_rtti) +# define META_HPP_NO_RTTI +#endif + namespace meta_hpp::detail { template < typename Enum > @@ -718,14 +730,6 @@ namespace meta_hpp::detail } } -#if !defined(__cpp_exceptions) -# define META_HPP_NO_EXCEPTIONS -#endif - -#if !defined(__cpp_rtti) -# define META_HPP_NO_RTTI -#endif - namespace meta_hpp { using detail::select_const;