Skip to content

Commit 6cbdf1b

Browse files
committed
Introducing a new directory structure in src.
- For future addition of components, the components are organized in a multi- level structure. - Add `atan2`.
1 parent 2ea65f4 commit 6cbdf1b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+916
-675
lines changed

.idea/misc.xml

Lines changed: 8 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CMakeLists.txt

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,21 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.20)
2424
PROJECT(Steppable)
2525

2626
# Ensure that Python is available to run the development scripts, and build with bindings.
27-
set(Python_FIND_VIRTUALENV FIRST)
27+
SET(Python_FIND_VIRTUALENV FIRST)
2828

29-
find_package(
30-
Python
31-
COMPONENTS Development Interpreter
32-
REQUIRED)
29+
FIND_PACKAGE(
30+
Python
31+
COMPONENTS Development Interpreter
32+
REQUIRED
33+
)
3334

34-
find_package(
35-
Python3
36-
COMPONENTS Development Interpreter
37-
REQUIRED)
35+
FIND_PACKAGE(
36+
Python3
37+
COMPONENTS Development Interpreter
38+
REQUIRED
39+
)
3840

39-
SET(CMAKE_CXX_STANDARD 20)
41+
SET(CMAKE_CXX_STANDARD 23)
4042
SET(CMAKE_C_STANDARD 20)
4143
SET(CMAKE_CXX_EXTENSIONS OFF)
4244
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -90,27 +92,35 @@ FUNCTION(capitalize IN OUT)
9092
ENDFUNCTION()
9193

9294
SET(COMPONENTS
93-
abs
94-
add
95-
baseConvert
96-
subtract
97-
multiply
98-
decimalConvert
99-
comparison
100-
power
101-
division
102-
root
103-
factorial
104-
trig
105-
hyp
106-
log)
95+
calc::abs
96+
calc::add
97+
base::baseConvert
98+
calc::subtract
99+
calc::multiply
100+
base::decimalConvert
101+
calc::comparison
102+
calc::power
103+
calc::division
104+
calc::root
105+
calc::factorial
106+
calc::trig
107+
calc::hyp
108+
calc::log
109+
calc::atan2
110+
)
107111
# NEW_COMPONENT: PATCH Do NOT remove the previous comment.
108112

109113
SET(TARGETS ${COMPONENTS} util)
110114
SET(TEST_TARGETS_TEMP util fraction number factors format ${COMPONENTS})
111115

112116
FOREACH(TEST_TARGET IN LISTS TEST_TARGETS_TEMP)
113117
SET(TARGET_NAME "test")
118+
STRING(REPLACE "::" ";" COMPONENT_PARTS ${TEST_TARGET})
119+
LIST(LENGTH COMPONENT_PARTS LEN)
120+
IF(LEN EQUAL 2)
121+
LIST(GET COMPONENT_PARTS 1 TEST_TARGET)
122+
ENDIF()
123+
114124
CAPITALIZE(${TEST_TARGET} FILE_NAME)
115125
STRING(CONCAT TARGET_NAME ${TARGET_NAME} ${FILE_NAME})
116126
LIST(APPEND TEST_TARGETS ${TARGET_NAME})

gui/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ FUNCTION(ADD_GUI SOURCE)
99
TARGET_INCLUDE_DIRECTORIES(${NAME} PRIVATE "${STP_BASE_DIRECTORY}/include/imgui")
1010

1111
# Link Steppable stuff
12-
TARGET_LINK_LIBRARIES(${NAME} PRIVATE calc impl)
12+
TARGET_LINK_LIBRARIES(${NAME} PRIVATE func impl)
1313
TARGET_INCLUDE_DIRECTORIES(${NAME} PRIVATE ${STP_BASE_DIRECTORY}/include)
1414

1515
if(FREETYPE_FOUND)

include/platform.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,11 @@
3232
*/
3333

3434
#pragma once
35+
3536
#include <cstdlib>
3637
#include <ctime>
3738
#include <filesystem>
39+
#include <mutex>
3840

3941
using namespace std::literals;
4042

lib/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ if(NOT ${STP_NO_BINDINGS}) # Only create the bindings if needed
4040
target_link_options(steppyble PRIVATE -Bsymbolic)
4141
endif()
4242
set_target_properties(steppyble PROPERTIES POSITION_INDEPENDENT_CODE ON)
43-
target_link_libraries(steppyble PRIVATE calc steppable)
43+
target_link_libraries(steppyble PRIVATE func steppable)
4444
target_compile_definitions(steppyble PRIVATE NO_MAIN)
4545
target_include_directories(steppyble PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../include)
46-
endif()
46+
endif()

src/CMakeLists.txt

Lines changed: 33 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -20,59 +20,56 @@
2020
# SOFTWARE. #
2121
#####################################################################################################
2222

23-
ADD_LIBRARY(util STATIC argParse.cpp colors.cpp logging.cpp symbols.cpp testing.cpp util.cpp getString.cpp platform.cpp format.cpp constants.cpp)
23+
ADD_LIBRARY(
24+
util STATIC
25+
argParse.cpp
26+
colors.cpp
27+
logging.cpp
28+
symbols.cpp
29+
testing.cpp
30+
util.cpp
31+
getString.cpp
32+
platform.cpp
33+
format.cpp
34+
constants.cpp
35+
)
2436
SET_TARGET_PROPERTIES(util PROPERTIES POSITION_INDEPENDENT_CODE ON)
2537

2638
ADD_LIBRARY(steppable STATIC number.cpp fraction.cpp)
2739
SET_TARGET_PROPERTIES(steppable PROPERTIES POSITION_INDEPENDENT_CODE ON)
2840

2941
SET(CALCULATOR_FILES)
3042

31-
FUNCTION(COPY_TO_BIN TARGET_NAME)
32-
IF(DEFINED STP_BUILD_COMPONENT_EXECUTABLE)
33-
IF(WINDOWS)
34-
ADD_CUSTOM_COMMAND(
35-
TARGET ${TARGET_NAME}
36-
POST_BUILD
37-
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${TARGET_NAME}>
38-
${CMAKE_CURRENT_BINARY_DIR}/../bin/${TARGET_NAME}.exe
39-
)
40-
ELSE()
41-
ADD_CUSTOM_COMMAND(
42-
TARGET ${TARGET_NAME}
43-
POST_BUILD
44-
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${TARGET_NAME}>
45-
${CMAKE_CURRENT_BINARY_DIR}/../bin/${TARGET_NAME}
46-
)
47-
ENDIF()
48-
ENDIF()
49-
ENDFUNCTION()
50-
5143
FOREACH(COMPONENT IN LISTS COMPONENTS)
52-
MESSAGE(TRACE "Adding component: ${COMPONENT}: ${COMPONENT}/${COMPONENT}.cpp, ${COMPONENT}/${COMPONENT}Report.cpp")
44+
STRING(REPLACE "::" ";" COMPONENT_PARTS ${COMPONENT})
45+
LIST(LENGTH COMPONENT_PARTS LEN)
46+
IF(NOT LEN EQUAL 2)
47+
MESSAGE(FATAL_ERROR "Incorrect format of target name.")
48+
ENDIF()
49+
LIST(GET COMPONENT_PARTS 0 ORIGIN)
50+
LIST(GET COMPONENT_PARTS 1 NAME)
51+
SET(TARGET_NAME ${ORIGIN}_${NAME})
52+
MESSAGE(TRACE "Adding component: ${NAME}: ${ORIGIN}/${NAME}/${NAME}.cpp, ${ORIGIN}/${NAME}/${NAME}Report.cpp")
5353

5454
# No longer offering executables for each component automatically.
55-
IF(DEFINED STP_BUILD_COMPONENT_EXECUTABLE)
56-
ADD_EXECUTABLE(${COMPONENT} ${COMPONENT}/${COMPONENT}.cpp ${COMPONENT}/${COMPONENT}Report.cpp)
57-
TARGET_INCLUDE_DIRECTORIES(${COMPONENT} PRIVATE ${STP_BASE_DIRECTORY}/include/)
58-
TARGET_LINK_LIBRARIES(${COMPONENT} PRIVATE calc)
55+
IF(STP_BUILD_COMPONENT_EXECUTABLE)
56+
ADD_EXECUTABLE(${TARGET_NAME} ${ORIGIN}/${NAME}/${NAME}.cpp ${ORIGIN}/${NAME}/${NAME}Report.cpp)
57+
TARGET_INCLUDE_DIRECTORIES(${TARGET_NAME} PRIVATE ${STP_BASE_DIRECTORY}/include/)
58+
TARGET_LINK_LIBRARIES(${TARGET_NAME} PRIVATE func)
5959
ENDIF()
6060

61-
LIST(APPEND CALCULATOR_FILES ${CMAKE_CURRENT_SOURCE_DIR}/${COMPONENT}/${COMPONENT}.cpp
62-
${CMAKE_CURRENT_SOURCE_DIR}/${COMPONENT}/${COMPONENT}Report.cpp
63-
)
64-
65-
COPY_TO_BIN(${COMPONENT})
61+
LIST(APPEND CALCULATOR_FILES ${ORIGIN}/${NAME}/${NAME}.cpp ${ORIGIN}/${NAME}/${NAME}Report.cpp)
6662
ENDFOREACH()
6763

68-
ADD_LIBRARY(calc STATIC ${CALCULATOR_FILES} fraction.cpp rounding.cpp factors.cpp number.cpp)
69-
SET_TARGET_PROPERTIES(calc PROPERTIES POSITION_INDEPENDENT_CODE ON)
64+
# FUNC: Library containing all Steppable functions.
65+
ADD_LIBRARY(func STATIC ${CALCULATOR_FILES} fraction.cpp rounding.cpp factors.cpp number.cpp)
66+
SET_TARGET_PROPERTIES(func PROPERTIES POSITION_INDEPENDENT_CODE ON)
7067

7168
TARGET_INCLUDE_DIRECTORIES(steppable PRIVATE ${STP_BASE_DIRECTORY}/include/)
72-
TARGET_INCLUDE_DIRECTORIES(calc PRIVATE ${STP_BASE_DIRECTORY}/include/)
69+
TARGET_INCLUDE_DIRECTORIES(func PRIVATE ${STP_BASE_DIRECTORY}/include/)
7370
TARGET_INCLUDE_DIRECTORIES(util PRIVATE ${STP_BASE_DIRECTORY}/include/)
7471

7572
TARGET_LINK_LIBRARIES(steppable PRIVATE util)
76-
TARGET_LINK_LIBRARIES(calc PRIVATE steppable)
77-
TARGET_COMPILE_DEFINITIONS(calc PRIVATE NO_MAIN)
73+
TARGET_LINK_LIBRARIES(func PRIVATE steppable)
74+
TARGET_COMPILE_DEFINITIONS(func PRIVATE NO_MAIN)
7875
TARGET_COMPILE_DEFINITIONS(steppable PRIVATE NO_MAIN)

0 commit comments

Comments
 (0)