dsf-mobility 3.9.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. dsf_mobility-3.9.4/CMakeLists.txt +103 -0
  2. dsf_mobility-3.9.4/Doxyfile +2824 -0
  3. dsf_mobility-3.9.4/LICENSE +437 -0
  4. dsf_mobility-3.9.4/MANIFEST.in +10 -0
  5. dsf_mobility-3.9.4/PKG-INFO +158 -0
  6. dsf_mobility-3.9.4/README.md +115 -0
  7. dsf_mobility-3.9.4/dsf_mobility.egg-info/PKG-INFO +158 -0
  8. dsf_mobility-3.9.4/dsf_mobility.egg-info/SOURCES.txt +54 -0
  9. dsf_mobility-3.9.4/dsf_mobility.egg-info/dependency_links.txt +1 -0
  10. dsf_mobility-3.9.4/dsf_mobility.egg-info/not-zip-safe +1 -0
  11. dsf_mobility-3.9.4/dsf_mobility.egg-info/requires.txt +1 -0
  12. dsf_mobility-3.9.4/dsf_mobility.egg-info/top_level.txt +1 -0
  13. dsf_mobility-3.9.4/pyproject.toml +3 -0
  14. dsf_mobility-3.9.4/requirements.txt +12 -0
  15. dsf_mobility-3.9.4/setup.cfg +4 -0
  16. dsf_mobility-3.9.4/setup.py +476 -0
  17. dsf_mobility-3.9.4/src/dsf/binding.cpp +497 -0
  18. dsf_mobility-3.9.4/src/dsf/dsf.hpp +35 -0
  19. dsf_mobility-3.9.4/src/dsf/headers/AdjacencyMatrix.hpp +119 -0
  20. dsf_mobility-3.9.4/src/dsf/headers/Agent.hpp +175 -0
  21. dsf_mobility-3.9.4/src/dsf/headers/Dynamics.hpp +101 -0
  22. dsf_mobility-3.9.4/src/dsf/headers/Edge.hpp +93 -0
  23. dsf_mobility-3.9.4/src/dsf/headers/FirstOrderDynamics.hpp +53 -0
  24. dsf_mobility-3.9.4/src/dsf/headers/Intersection.hpp +133 -0
  25. dsf_mobility-3.9.4/src/dsf/headers/Itinerary.hpp +60 -0
  26. dsf_mobility-3.9.4/src/dsf/headers/Network.hpp +262 -0
  27. dsf_mobility-3.9.4/src/dsf/headers/Node.hpp +116 -0
  28. dsf_mobility-3.9.4/src/dsf/headers/Road.hpp +98 -0
  29. dsf_mobility-3.9.4/src/dsf/headers/RoadDynamics.hpp +2381 -0
  30. dsf_mobility-3.9.4/src/dsf/headers/RoadJunction.hpp +89 -0
  31. dsf_mobility-3.9.4/src/dsf/headers/RoadNetwork.hpp +419 -0
  32. dsf_mobility-3.9.4/src/dsf/headers/Roundabout.hpp +60 -0
  33. dsf_mobility-3.9.4/src/dsf/headers/Sensors.hpp +34 -0
  34. dsf_mobility-3.9.4/src/dsf/headers/SparseMatrix.hpp +353 -0
  35. dsf_mobility-3.9.4/src/dsf/headers/Station.hpp +56 -0
  36. dsf_mobility-3.9.4/src/dsf/headers/Street.hpp +265 -0
  37. dsf_mobility-3.9.4/src/dsf/headers/TrafficLight.hpp +174 -0
  38. dsf_mobility-3.9.4/src/dsf/sources/AdjacencyMatrix.cpp +270 -0
  39. dsf_mobility-3.9.4/src/dsf/sources/Agent.cpp +79 -0
  40. dsf_mobility-3.9.4/src/dsf/sources/Edge.cpp +93 -0
  41. dsf_mobility-3.9.4/src/dsf/sources/FirstOrderDynamics.cpp +114 -0
  42. dsf_mobility-3.9.4/src/dsf/sources/Intersection.cpp +38 -0
  43. dsf_mobility-3.9.4/src/dsf/sources/Itinerary.cpp +64 -0
  44. dsf_mobility-3.9.4/src/dsf/sources/Road.cpp +89 -0
  45. dsf_mobility-3.9.4/src/dsf/sources/RoadJunction.cpp +26 -0
  46. dsf_mobility-3.9.4/src/dsf/sources/RoadNetwork.cpp +1113 -0
  47. dsf_mobility-3.9.4/src/dsf/sources/Roundabout.cpp +20 -0
  48. dsf_mobility-3.9.4/src/dsf/sources/Sensors.cpp +25 -0
  49. dsf_mobility-3.9.4/src/dsf/sources/Station.cpp +38 -0
  50. dsf_mobility-3.9.4/src/dsf/sources/Street.cpp +208 -0
  51. dsf_mobility-3.9.4/src/dsf/sources/TrafficLight.cpp +173 -0
  52. dsf_mobility-3.9.4/src/dsf/utility/TypeTraits/is_node.hpp +73 -0
  53. dsf_mobility-3.9.4/src/dsf/utility/TypeTraits/is_numeric.hpp +23 -0
  54. dsf_mobility-3.9.4/src/dsf/utility/TypeTraits/is_street.hpp +30 -0
  55. dsf_mobility-3.9.4/src/dsf/utility/Typedef.hpp +60 -0
  56. dsf_mobility-3.9.4/src/dsf/utility/queue.hpp +42 -0
@@ -0,0 +1,103 @@
1
+ cmake_minimum_required(VERSION 3.16.0)
2
+
3
+ # Read version from header file
4
+ file(READ "${CMAKE_CURRENT_SOURCE_DIR}/src/dsf/dsf.hpp" DSF_HPP_CONTENT)
5
+ string(REGEX MATCH "DSF_VERSION_MAJOR = ([0-9]+)" _ ${DSF_HPP_CONTENT})
6
+ set(DSF_VERSION_MAJOR ${CMAKE_MATCH_1})
7
+ string(REGEX MATCH "DSF_VERSION_MINOR = ([0-9]+)" _ ${DSF_HPP_CONTENT})
8
+ set(DSF_VERSION_MINOR ${CMAKE_MATCH_1})
9
+ string(REGEX MATCH "DSF_VERSION_PATCH = ([0-9]+)" _ ${DSF_HPP_CONTENT})
10
+ set(DSF_VERSION_PATCH ${CMAKE_MATCH_1})
11
+
12
+ set(DSF_VERSION "${DSF_VERSION_MAJOR}.${DSF_VERSION_MINOR}.${DSF_VERSION_PATCH}")
13
+
14
+ project(dsf VERSION ${DSF_VERSION} LANGUAGES CXX)
15
+
16
+ # Set the C++ standard
17
+ set(CMAKE_CXX_STANDARD 20)
18
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
19
+ set(CMAKE_CXX_EXTENSIONS OFF)
20
+
21
+ # Ensure optimization flags are applied only in Release mode
22
+ if (CMAKE_BUILD_TYPE MATCHES "Release")
23
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Ofast -march=native -flto=auto")
24
+ endif()
25
+
26
+ find_package(TBB REQUIRED CONFIG)
27
+ find_package(fmt REQUIRED)
28
+ find_package(spdlog REQUIRED)
29
+ find_package(simdjson REQUIRED)
30
+
31
+ file(GLOB SOURCES "src/dsf/sources/*.cpp" "src/dsf/utility/*.cpp")
32
+
33
+ include(FetchContent)
34
+ # Get csv-parser
35
+ FetchContent_Declare(csv_parser
36
+ GIT_REPOSITORY https://github.com/vincentlaucsb/csv-parser.git
37
+ GIT_TAG 2.3.0
38
+ )
39
+ FetchContent_MakeAvailable(csv_parser)
40
+
41
+ # Get csv source files manually to avoid export issues
42
+ file(GLOB CSV_SOURCES "${csv_parser_SOURCE_DIR}/include/internal/*.cpp")
43
+
44
+ add_library(dsf STATIC ${SOURCES} ${CSV_SOURCES})
45
+ target_include_directories(dsf PUBLIC
46
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/headers>
47
+ $<INSTALL_INTERFACE:include>
48
+ )
49
+
50
+ # Include csv headers privately
51
+ target_include_directories(dsf PRIVATE "${csv_parser_SOURCE_DIR}/include")
52
+
53
+ # Link other libraries - no csv dependency needed now
54
+ target_link_libraries(dsf PRIVATE TBB::tbb fmt::fmt spdlog::spdlog simdjson::simdjson)
55
+
56
+ # Install dsf library
57
+ install(TARGETS dsf
58
+ EXPORT dsfConfig
59
+ ARCHIVE DESTINATION lib
60
+ LIBRARY DESTINATION lib
61
+ RUNTIME DESTINATION bin)
62
+
63
+ install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include)
64
+
65
+ install(EXPORT dsfConfig
66
+ FILE dsfConfig.cmake
67
+ NAMESPACE dsf::
68
+ DESTINATION lib/cmake/dsf)
69
+
70
+ # Optional Python bindings - only build if requested
71
+ option(BUILD_PYTHON_BINDINGS "Build Python bindings" OFF)
72
+
73
+ if(BUILD_PYTHON_BINDINGS)
74
+ include(FetchContent)
75
+
76
+ # Get pybind11
77
+ FetchContent_Declare(pybind11
78
+ GIT_REPOSITORY https://github.com/pybind/pybind11.git
79
+ GIT_TAG v3.0.1
80
+ )
81
+ FetchContent_GetProperties(pybind11)
82
+ if(NOT pybind11_POPULATED)
83
+ FetchContent_MakeAvailable(pybind11)
84
+ endif()
85
+
86
+ # Add the Python binding module
87
+ add_library(dsf_python_module MODULE src/dsf/binding.cpp)
88
+
89
+ # Ensure the Python module name has no 'lib' prefix on Unix systems
90
+ set_target_properties(dsf_python_module PROPERTIES
91
+ PREFIX ""
92
+ OUTPUT_NAME "dsf"
93
+ )
94
+
95
+ # Link the pybind11 module with your static library and pybind11
96
+ target_link_libraries(dsf_python_module PRIVATE dsf pybind11::module pybind11::headers)
97
+
98
+ # Set include directories (if binding.cpp needs headers from your project)
99
+ target_include_directories(dsf_python_module PRIVATE
100
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/headers
101
+ )
102
+ endif()
103
+