Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
b5ba23b
code refactor
7bitcoder Jan 12, 2024
9eeba2b
add external service factory
7bitcoder Jan 13, 2024
3a6dc89
add unique ptr service fcn factory
7bitcoder Jan 14, 2024
1e1789a
fix build
7bitcoder Jan 14, 2024
4cba698
add enum check
7bitcoder Jan 20, 2024
55f6e76
add alias to service lifetime
7bitcoder Jan 20, 2024
f1c184d
code refactor
7bitcoder Jan 21, 2024
05de747
refactor provider code
7bitcoder Jan 21, 2024
9f6981b
refactor provider code
7bitcoder Jan 24, 2024
1b36ed0
code refactor
7bitcoder Jan 24, 2024
7cc5a14
code refactor
7bitcoder Jan 24, 2024
ce35823
refactor provider code
7bitcoder Jan 25, 2024
dcceaca
code refactor
7bitcoder Jan 25, 2024
23bfbaa
code refactor
7bitcoder Jan 26, 2024
874a811
add alias handling implementation
7bitcoder Jan 27, 2024
057406c
improve alias code
7bitcoder Jan 27, 2024
c5e39ce
fix alias handling implementation
7bitcoder Jan 27, 2024
a12b651
fix alias handling implementation
7bitcoder Jan 27, 2024
c63847e
improve alias code
7bitcoder Jan 27, 2024
d3b6d03
fix alias handling implementation
7bitcoder Jan 28, 2024
3534588
improve service alias code
7bitcoder Jan 28, 2024
1e7a232
improve alias code
7bitcoder Jan 28, 2024
6f4ade2
improve alias code
7bitcoder Jan 28, 2024
c1b99ba
rearrange code
7bitcoder Jan 28, 2024
d54f51f
update tests
7bitcoder Jan 29, 2024
41be1cd
remove unused functions
7bitcoder Jan 29, 2024
be21bf5
update checkouts
7bitcoder Jan 29, 2024
71f180f
update tests
7bitcoder Jan 30, 2024
8b6aa86
add support for multiple inheritance
7bitcoder Jan 31, 2024
63458a5
add serviceInstance wrapper
7bitcoder Feb 2, 2024
810672d
refactor code
7bitcoder Feb 2, 2024
c1d85a8
fix tests
7bitcoder Feb 3, 2024
89eef4c
add export
7bitcoder Feb 3, 2024
caf621d
refactor and test update
7bitcoder Feb 4, 2024
613844b
refactor code
7bitcoder Feb 4, 2024
93001ba
refactor and test update
7bitcoder Feb 5, 2024
20ca766
add include
7bitcoder Feb 5, 2024
a5b996c
add factory tests
7bitcoder Feb 5, 2024
e681b66
add uniq factory tests
7bitcoder Feb 5, 2024
81eb4f3
add more integration tests
7bitcoder Feb 6, 2024
49c42a5
add ete tests
7bitcoder Feb 6, 2024
49113b5
fix ete on windows
7bitcoder Feb 6, 2024
2869667
remove test path
7bitcoder Feb 6, 2024
0bf713c
update documentation
7bitcoder Feb 7, 2024
412d38c
update cmake txt format
7bitcoder Feb 7, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/DevCI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
runs-on: ${{matrix.os}}

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Create Build Environment
run: cmake -E make_directory ${{runner.workspace}}/build
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/Linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:

runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Create Build Environment
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/MacOs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:

runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Create Build Environment
if: matrix.compiler.tool != 'apple-clang'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/Windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:

runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Create Build Environment
if: matrix.compiler.tool != 'msvc'
Expand Down
16 changes: 8 additions & 8 deletions Benchmarks/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
include(FetchContent)
FetchContent_Declare(
benchmark
GIT_REPOSITORY https://github.com/google/benchmark.git
GIT_TAG 344117638c8ff7e239044fd0fa7085839fc03021 # release-1.14.0
benchmark
GIT_REPOSITORY https://github.com/google/benchmark.git
GIT_TAG 344117638c8ff7e239044fd0fa7085839fc03021 # release-1.14.0
)
FetchContent_MakeAvailable(benchmark)

enable_testing()

file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS *.cpp)

foreach (SOURCE ${SOURCES})
foreach(SOURCE ${SOURCES})
get_filename_component(FILE_NAME ${SOURCE} NAME_WLE)

add_executable(${FILE_NAME}
${SOURCE}
${SOURCE}
)

target_link_libraries(${FILE_NAME}
7bitDI
benchmark::benchmark
7bitDI
benchmark::benchmark
)
endforeach ()
endforeach()
2 changes: 1 addition & 1 deletion Benchmarks/Classes.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ struct ITestComplexClass6
virtual ~ITestComplexClass6() = default;
};

class TestComplexClass6 : ITestComplexClass6
class TestComplexClass6 : public ITestComplexClass6
{
std::vector<ITestComplexClass1 *> _vec;

Expand Down
61 changes: 31 additions & 30 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.15.0)
set(_7BIT_DI_LIBRARY 7bitDI)

set(_7BIT_DI_VERSION_MAJOR 2)
set(_7BIT_DI_VERSION_MINOR 0)
set(_7BIT_DI_VERSION_MINOR 1)
set(_7BIT_DI_VERSION_PATCH 0)

set(_7BIT_DI_VERSION ${_7BIT_DI_VERSION_MAJOR}.${_7BIT_DI_VERSION_MINOR}.${_7BIT_DI_VERSION_PATCH})
Expand All @@ -12,9 +12,10 @@ project(${_7BIT_DI_LIBRARY} LANGUAGES CXX VERSION ${_7BIT_DI_VERSION})

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Cmake")

if (NOT CMAKE_CXX_STANDARD)
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17)
endif ()
endif()

set(CMAKE_CXX_STANDARD_REQUIRED ON)

include(Setup)
Expand All @@ -25,27 +26,27 @@ include_directories(${_7BIT_DI_INCLUDE_DIR})

add_subdirectory(Source)

if (_7BIT_DI_BUILD_DOCS)
if(_7BIT_DI_BUILD_DOCS)
add_subdirectory(Docs)
endif ()
endif()

if (_7BIT_DI_BUILD_TESTS)
if(_7BIT_DI_BUILD_TESTS)
add_subdirectory(Tests)
endif ()
endif()

if (_7BIT_DI_BUILD_EXAMPLES)
if(_7BIT_DI_BUILD_EXAMPLES)
add_subdirectory(Examples)
endif ()
endif()

if (_7BIT_DI_BUILD_BENCHMARKS)
if(_7BIT_DI_BUILD_BENCHMARKS)
add_subdirectory(Benchmarks)
endif ()
endif()

if (_7BIT_DI_BUILD_SINGLE_HEADER)
if(_7BIT_DI_BUILD_SINGLE_HEADER)
add_subdirectory(SingleHeader)
endif ()
endif()

if (_7BIT_DI_INSTALL)
if(_7BIT_DI_INSTALL)
set(PROJECT_CONFIG_IN ${CMAKE_CURRENT_SOURCE_DIR}/Cmake/7bitDIConfig.cmake.in)
set(PROJECT_CONFIG_OUT ${CMAKE_CURRENT_BINARY_DIR}/7bitDIConfig.cmake)
set(CONFIG_TARGETS_FILE 7bitDIConfigTargets.cmake)
Expand All @@ -55,29 +56,29 @@ if (_7BIT_DI_INSTALL)
install(DIRECTORY ${_7BIT_DI_INCLUDE_DIR}/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})

install(
TARGETS 7bitDI
EXPORT 7bitDI
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
TARGETS 7bitDI
EXPORT 7bitDI
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})

export(
TARGETS 7bitDI
NAMESPACE 7bitDI::
FILE ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_TARGETS_FILE})
TARGETS 7bitDI
NAMESPACE 7bitDI::
FILE ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_TARGETS_FILE})

install(
EXPORT 7bitDI
EXPORT 7bitDI
DESTINATION ${EXPORT_DEST_DIR}
NAMESPACE 7bitDI::
NAMESPACE 7bitDI::
FILE ${CONFIG_TARGETS_FILE})
EXPORT 7bitDI
EXPORT 7bitDI
DESTINATION ${EXPORT_DEST_DIR}
NAMESPACE 7bitDI::
NAMESPACE 7bitDI::
FILE ${CONFIG_TARGETS_FILE})

include(CMakePackageConfigHelpers)

configure_package_config_file(${PROJECT_CONFIG_IN} ${PROJECT_CONFIG_OUT}
INSTALL_DESTINATION ${EXPORT_DEST_DIR})
INSTALL_DESTINATION ${EXPORT_DEST_DIR})

write_basic_package_version_file(${VERSIONS_CONFIG_FILE} COMPATIBILITY SameMajorVersion)

Expand All @@ -86,4 +87,4 @@ if (_7BIT_DI_INSTALL)
export(PACKAGE 7bitDI)

include(CPack)
endif ()
endif()
74 changes: 37 additions & 37 deletions Cmake/Setup.cmake
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
include(Functions)

if (NOT CMAKE_BUILD_TYPE)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose Release or Debug" FORCE)
endif ()
endif()

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin)
Expand Down Expand Up @@ -33,20 +33,20 @@ set(_7BIT_DI_DETAILS_DIR "${_7BIT_DI_DI_DIR}/Details")
set(_7BIT_DI_MAIN_HEADER "${_7BIT_DI_INCLUDE_DIR}/SevenBit/DI.hpp")
file(GLOB _7BIT_DI_TOP_HEADERS "${_7BIT_DI_DI_DIR}/*.hpp")
file(GLOB _7BIT_DI_DETAILS_HEADERS
"${_7BIT_DI_DETAILS_DIR}/Containers/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Core/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Factories/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Helpers/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Services/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Utils/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Containers/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Core/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Factories/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Helpers/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Services/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Utils/*.hpp"
)
file(GLOB _7BIT_DI_IMPL_HEADERS
"${_7BIT_DI_DI_DIR}/Impl/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Containers/Impl/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Core/Impl/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Factories/Impl/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Helpers/Impl/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Utils/Impl/*.hpp"
"${_7BIT_DI_DI_DIR}/Impl/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Containers/Impl/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Core/Impl/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Factories/Impl/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Helpers/Impl/*.hpp"
"${_7BIT_DI_DETAILS_DIR}/Utils/Impl/*.hpp"
)
set(_7BIT_DI_ALL_HEADERS ${_7BIT_DI_MAIN_HEADER} ${_7BIT_DI_TOP_HEADERS} ${_7BIT_DI_DETAILS_HEADERS} ${_7BIT_DI_IMPL_HEADERS})

Expand All @@ -63,43 +63,43 @@ option(_7BIT_DI_BUILD_DOCS "Turn on to build documentation (requires sphinx and
option(_7BIT_DI_INSTALL "Installs 7bitDI" OFF)
option(_7BIT_DI_BUILD_SINGLE_HEADER "Builds single header SevenBitDI.hpp" OFF)

if (_7BIT_DI_BUILD_PIC)
if(_7BIT_DI_BUILD_PIC)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif ()
endif()

if (_7BIT_DI_LIBRARY_TYPE STREQUAL "Shared" OR BUILD_SHARED_LIBS)
if(_7BIT_DI_LIBRARY_TYPE STREQUAL "Shared" OR BUILD_SHARED_LIBS)
set(_7BIT_DI_BUILD_LIBRARY_TYPE "Shared")
set(_7BIT_DI_SHARED_LIB ON)
elseif (_7BIT_DI_LIBRARY_TYPE STREQUAL "HeaderOnly")
elseif(_7BIT_DI_LIBRARY_TYPE STREQUAL "HeaderOnly")
set(_7BIT_DI_BUILD_LIBRARY_TYPE "HeaderOnly")
set(_7BIT_DI_HEADER_ONLY_LIB ON)
else ()
else()
set(_7BIT_DI_BUILD_LIBRARY_TYPE "Static")
set(_7BIT_DI_STATIC_LIB ON)
endif ()
endif()

configure_file(${_7BIT_DI_DI_DIR}/CmakeDef.hpp.input ${_7BIT_DI_DI_DIR}/CmakeDef.hpp)

set(BYTE_SIZE 8)
math(EXPR MEMORY_SIZE "${CMAKE_SIZEOF_VOID_P} * ${BYTE_SIZE}")

set(INFOS
"${_7BIT_DI_LIBRARY} ${_7BIT_DI_VERSION}"
"Build type: ${CMAKE_BUILD_TYPE}"
"Library type: ${_7BIT_DI_BUILD_LIBRARY_TYPE}"
"=================================================="
"Cmake version: ${CMAKE_VERSION}"
"Os: ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION}"
"Architecture: ${CMAKE_SYSTEM_PROCESSOR} ${MEMORY_SIZE}bit"
"CXX compiler: ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}"
"CXX standard: ${CMAKE_CXX_STANDARD}"
"Generator: ${CMAKE_GENERATOR}"
"=================================================="
"Build tests: ${_7BIT_DI_BUILD_TESTS}"
"Build examples: ${_7BIT_DI_BUILD_EXAMPLES}"
"Build benchmarks: ${_7BIT_DI_BUILD_BENCHMARKS}"
"Build documentation: ${_7BIT_DI_BUILD_DOCS}"
"Build single header: ${_7BIT_DI_BUILD_SINGLE_HEADER}"
"Install project: ${_7BIT_DI_INSTALL}"
"${_7BIT_DI_LIBRARY} ${_7BIT_DI_VERSION}"
"Build type: ${CMAKE_BUILD_TYPE}"
"Library type: ${_7BIT_DI_BUILD_LIBRARY_TYPE}"
"=================================================="
"Cmake version: ${CMAKE_VERSION}"
"Os: ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION}"
"Architecture: ${CMAKE_SYSTEM_PROCESSOR} ${MEMORY_SIZE}bit"
"CXX compiler: ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}"
"CXX standard: ${CMAKE_CXX_STANDARD}"
"Generator: ${CMAKE_GENERATOR}"
"=================================================="
"Build tests: ${_7BIT_DI_BUILD_TESTS}"
"Build examples: ${_7BIT_DI_BUILD_EXAMPLES}"
"Build benchmarks: ${_7BIT_DI_BUILD_BENCHMARKS}"
"Build documentation: ${_7BIT_DI_BUILD_DOCS}"
"Build single header: ${_7BIT_DI_BUILD_SINGLE_HEADER}"
"Install project: ${_7BIT_DI_INSTALL}"
)
printInfo("${INFOS}" = 50 7 0)
26 changes: 13 additions & 13 deletions Docs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,19 @@ set(SPHINX_OUT ${SPHINX_SOURCE}/conf.py)
configure_file(${SPHINX_IN} ${SPHINX_OUT} @ONLY)

add_custom_command(OUTPUT ${SPHINX_INDEX_FILE}
COMMAND
${SPHINX_EXECUTABLE} -b html
${SPHINX_SOURCE} ${SPHINX_BUILD}
WORKING_DIRECTORY ${SPHINX_SOURCE}
DEPENDS
${SPHINX_RST_FILES}
${EXAMPLES}
${SOURCES}
MAIN_DEPENDENCY ${SPHINX_OUT}
COMMENT "Generating documentation with Sphinx")
COMMAND
${SPHINX_EXECUTABLE} -b html
${SPHINX_SOURCE} ${SPHINX_BUILD}
WORKING_DIRECTORY ${SPHINX_SOURCE}
DEPENDS
${SPHINX_RST_FILES}
${EXAMPLES}
${SOURCES}
MAIN_DEPENDENCY ${SPHINX_OUT}
COMMENT "Generating documentation with Sphinx")

add_custom_target(GenerateDoc
ALL DEPENDS
${SPHINX_INDEX_FILE}
${SPHINX_RST_FILES}
ALL DEPENDS
${SPHINX_INDEX_FILE}
${SPHINX_RST_FILES}
)
6 changes: 1 addition & 5 deletions Docs/advanced-guides.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,6 @@ Advanced Guides
:titlesonly:

advanced-guides/using-factories
advanced-guides/using-aliases
advanced-guides/external-singleton
advanced-guides/building-library





Loading