Skip to content
Open
Show file tree
Hide file tree
Changes from 48 commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
a1e913f
Upgrade to C++23 from C++17
danielduberg Feb 16, 2026
39e0c27
Using pi from numbers
danielduberg Feb 16, 2026
e5c183e
Use Span instead
danielduberg Feb 16, 2026
cf0ff54
Simplified CMake files and made files visible in IDEs
danielduberg Feb 16, 2026
a1663ec
Capitalized
danielduberg Feb 16, 2026
b1c68c6
Finding OpenMP
danielduberg Feb 16, 2026
9275d2b
Formatted
danielduberg Feb 16, 2026
c9ae9fa
Corrected order
danielduberg Feb 16, 2026
4477abd
Fix for finding dependencies
danielduberg Feb 16, 2026
ba673f4
Merge branch 'main' into dduberg/c++23
danielduberg Feb 16, 2026
5788cbc
Remove TBB installation step from CMake install workflow
rhaeus Feb 16, 2026
5b8c850
Merge branch 'main' into dduberg/c++23
danielduberg Feb 16, 2026
105caee
Merge branch 'main' into dduberg/c++23
danielduberg Feb 17, 2026
b3d140b
Updated minimum required CMake version to 3.23 for FILE_SET
rhaeus Feb 17, 2026
2e684d4
Updated
danielduberg Feb 18, 2026
00d452b
Updated to C++23
danielduberg Feb 18, 2026
ea3e751
Made sure toSTL always exists
danielduberg Feb 18, 2026
56c025a
Removed unused files
danielduberg Feb 18, 2026
ba9c3a7
Added C++23
danielduberg Feb 18, 2026
6efaf3e
Updated math.hpp and added tests
danielduberg Feb 21, 2026
fd5c4bc
Updated external libs
danielduberg Feb 23, 2026
2d509e6
Added app that currently can only print version and system info
danielduberg Feb 23, 2026
f4288f5
Disabled everything except core, math, and utility
danielduberg Feb 23, 2026
eee1ccc
Updated
danielduberg Feb 23, 2026
49a66b8
Removed randomized test
danielduberg Feb 23, 2026
036570d
Updated to GCC/G++ 14
danielduberg Feb 23, 2026
a2cda21
Added correct excludes for GCC/G++ 14
danielduberg Feb 23, 2026
58d4166
Commented out currently unused
danielduberg Feb 23, 2026
8f68088
Updated to GCC/G++ 14
danielduberg Feb 23, 2026
821cbe2
Link against UFO::UFO instead of UFO::Map
danielduberg Feb 23, 2026
9f9e079
Update to GCC/G++ 14 for consumer as well
danielduberg Feb 23, 2026
f92b42d
Updated
danielduberg Feb 23, 2026
88dfcd3
On macOS use LLVM 19
danielduberg Feb 23, 2026
2372b3d
Updated
danielduberg Feb 23, 2026
d9aee2e
Removed comments
danielduberg Feb 23, 2026
34df875
Updated
danielduberg Feb 23, 2026
012ad13
Updated matrix
danielduberg Feb 23, 2026
58b4c2d
Updated order
danielduberg Feb 23, 2026
b7c7583
Updated
danielduberg Feb 23, 2026
6806b57
Updated
danielduberg Feb 23, 2026
172f31d
Updated to LLVM 21 for macOS
danielduberg Feb 23, 2026
3f57579
Updated
danielduberg Feb 23, 2026
8a9e6e2
Added experimental flag
danielduberg Feb 23, 2026
2ad26b3
std::ranges::zip_transform_view
danielduberg Feb 23, 2026
d6be61d
Updated Clang Tidy
danielduberg Feb 23, 2026
8d4f169
Update
danielduberg Feb 23, 2026
957e463
Added doxygen to Ubuntu build
danielduberg Feb 23, 2026
27ba85f
Updated
danielduberg Feb 23, 2026
6baffdb
Updated so it does not add comments for every push to PR
danielduberg Feb 23, 2026
e55b41c
Install UFO target
danielduberg Feb 23, 2026
ce200b9
Added application and example tag
danielduberg Feb 23, 2026
cb9fe01
Added feature guard to ensure it works on macOS
danielduberg Feb 23, 2026
db379e9
Added GPU(s) output
danielduberg Feb 23, 2026
3bdddbe
Add item to checklist and how to get test configuration
danielduberg Feb 25, 2026
02063af
Removed old files
danielduberg Feb 25, 2026
ece5868
Refactored predicates
danielduberg Feb 25, 2026
d5b2b40
Update
danielduberg Mar 3, 2026
ea34fd1
Changed branch for now
danielduberg Mar 3, 2026
119d6b8
Added quotation marks around branch name
danielduberg Mar 3, 2026
990a074
Update branch again
danielduberg Mar 3, 2026
f96f9bc
Fixed actions/checkout version
danielduberg Mar 3, 2026
d0fb866
Added predicates page
danielduberg Mar 3, 2026
5c01dbe
Updated dependencies
danielduberg Mar 3, 2026
c7e6c93
Updated svg
danielduberg Mar 3, 2026
f06d7dc
Updated diagrams
danielduberg Mar 3, 2026
af7bac5
Changed to classic diagram look
danielduberg Mar 3, 2026
bede857
Updated
danielduberg Mar 3, 2026
02a1008
Added plugin
danielduberg Mar 3, 2026
85888f3
Updated headings
danielduberg Mar 3, 2026
44c8bec
Updated
danielduberg Mar 3, 2026
2f60912
Updated
danielduberg Mar 3, 2026
59344a4
Simplified
danielduberg Mar 3, 2026
dc1b176
Made true bold to stand out more
danielduberg Mar 3, 2026
2b0f35d
Updated
danielduberg Mar 3, 2026
91c5cd3
Updated
danielduberg Mar 3, 2026
1f7eff9
Updated
danielduberg Mar 3, 2026
dd25e92
Updated
danielduberg Mar 3, 2026
9b943ef
Updated
danielduberg Mar 3, 2026
c9b156f
Added example
danielduberg Mar 3, 2026
6aee742
Simplified example
danielduberg Mar 3, 2026
9596f9b
Added
danielduberg Mar 3, 2026
a6f4069
Updated
danielduberg Mar 3, 2026
26a240c
Updated
danielduberg Mar 4, 2026
9268525
Changed from math to numeric
danielduberg Mar 7, 2026
039fd96
Math to numeric
danielduberg Mar 7, 2026
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
37 changes: 16 additions & 21 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -1,27 +1,22 @@
---
Checks: 'clang-diagnostic-*,clang-analyzer-*'
WarningsAsErrors: ''
HeaderFilterRegex: '/(lib|tests)/'
Checks: >
clang-diagnostic-*,
clang-analyzer-*,
bugprone-*,
cert-*,
cppcoreguidelines-*,
google-*,
llvm-*,
modernize-*,
performance-*,
readability-*
WarningsAsErrors: 'bugprone-*,performance-*'
HeaderFilterRegex: '/(apps|lib|tests)/'
AnalyzeTemporaryDtors: false
FormatStyle: none
User: dduberg
FormatStyle: file
CheckOptions:
llvm-else-after-return.WarnOnConditionVariables: 'false'
modernize-loop-convert.MinConfidence: reasonable
modernize-replace-auto-ptr.IncludeStyle: llvm
cert-str34-c.DiagnoseSignedUnsignedCharComparisons: 'false'
google-readability-namespace-comments.ShortNamespaceLines: '10'
cert-err33-c.CheckedFunctions: '::aligned_alloc;::asctime_s;::at_quick_exit;::atexit;::bsearch;::bsearch_s;::btowc;::c16rtomb;::c32rtomb;::calloc;::clock;::cnd_broadcast;::cnd_init;::cnd_signal;::cnd_timedwait;::cnd_wait;::ctime_s;::fclose;::fflush;::fgetc;::fgetpos;::fgets;::fgetwc;::fopen;::fopen_s;::fprintf;::fprintf_s;::fputc;::fputs;::fputwc;::fputws;::fread;::freopen;::freopen_s;::fscanf;::fscanf_s;::fseek;::fsetpos;::ftell;::fwprintf;::fwprintf_s;::fwrite;::fwscanf;::fwscanf_s;::getc;::getchar;::getenv;::getenv_s;::gets_s;::getwc;::getwchar;::gmtime;::gmtime_s;::localtime;::localtime_s;::malloc;::mbrtoc16;::mbrtoc32;::mbsrtowcs;::mbsrtowcs_s;::mbstowcs;::mbstowcs_s;::memchr;::mktime;::mtx_init;::mtx_lock;::mtx_timedlock;::mtx_trylock;::mtx_unlock;::printf_s;::putc;::putwc;::raise;::realloc;::remove;::rename;::scanf;::scanf_s;::setlocale;::setvbuf;::signal;::snprintf;::snprintf_s;::sprintf;::sprintf_s;::sscanf;::sscanf_s;::strchr;::strerror_s;::strftime;::strpbrk;::strrchr;::strstr;::strtod;::strtof;::strtoimax;::strtok;::strtok_s;::strtol;::strtold;::strtoll;::strtoul;::strtoull;::strtoumax;::strxfrm;::swprintf;::swprintf_s;::swscanf;::swscanf_s;::thrd_create;::thrd_detach;::thrd_join;::thrd_sleep;::time;::timespec_get;::tmpfile;::tmpfile_s;::tmpnam;::tmpnam_s;::tss_create;::tss_get;::tss_set;::ungetc;::ungetwc;::vfprintf;::vfprintf_s;::vfscanf;::vfscanf_s;::vfwprintf;::vfwprintf_s;::vfwscanf;::vfwscanf_s;::vprintf_s;::vscanf;::vscanf_s;::vsnprintf;::vsnprintf_s;::vsprintf;::vsprintf_s;::vsscanf;::vsscanf_s;::vswprintf;::vswprintf_s;::vswscanf;::vswscanf_s;::vwprintf_s;::vwscanf;::vwscanf_s;::wcrtomb;::wcschr;::wcsftime;::wcspbrk;::wcsrchr;::wcsrtombs;::wcsrtombs_s;::wcsstr;::wcstod;::wcstof;::wcstoimax;::wcstok;::wcstok_s;::wcstol;::wcstold;::wcstoll;::wcstombs;::wcstombs_s;::wcstoul;::wcstoull;::wcstoumax;::wcsxfrm;::wctob;::wctrans;::wctype;::wmemchr;::wprintf_s;::wscanf;::wscanf_s;'
cert-oop54-cpp.WarnOnlyIfThisHasSuspiciousField: 'false'
cert-dcl16-c.NewSuffixes: 'L;LL;LU;LLU'
google-readability-braces-around-statements.ShortStatementLines: '1'
cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic: 'true'
google-readability-braces-around-statements.ShortStatementLines: '1'
google-readability-function-size.StatementThreshold: '100'
google-readability-namespace-comments.SpacesBeforeComments: '2'
modernize-loop-convert.MaxCopySize: '16'
modernize-pass-by-value.IncludeStyle: llvm
modernize-use-nullptr.NullMacros: 'NULL'
llvm-qualified-auto.AddConstToQualified: 'false'
modernize-loop-convert.NamingStyle: CamelCase
llvm-else-after-return.WarnOnUnfixable: 'false'
google-readability-function-size.StatementThreshold: '800'
...
2 changes: 2 additions & 0 deletions .clangd
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
CompileFlags:
Add: [-std=c++23]
InlayHints:
Enabled: Yes
Designators: No
Expand Down
24 changes: 9 additions & 15 deletions .github/workflows/cmake-install.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,13 @@ on:
jobs:
test-install:
runs-on: ubuntu-latest
steps:
- name: Install TBB
run: |
sudo apt-get update -yqq
sudo apt-get install -yqq libtbb-dev

steps:
- name: Checkout UFO Library
uses: actions/checkout@v5

- name: Build and Install UFO
run: |
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=g++-14 -DCMAKE_C_COMPILER=gcc-14 -DUFO_DEV_MODE=OFF
cmake --build build
cmake --install build --prefix $GITHUB_WORKSPACE/dist

Expand All @@ -37,7 +32,7 @@ jobs:
find_package(UFO REQUIRED)

add_executable(test_consumer main.cpp)
target_link_libraries(test_consumer PRIVATE UFO::Map)
target_link_libraries(test_consumer PRIVATE UFO::UFO)
set_target_properties(test_consumer
PROPERTIES
VERSION ${PROJECT_VERSION}
Expand All @@ -48,18 +43,17 @@ jobs:
EOF

cat <<EOF > consumer/main.cpp
#include <ufo/map/occupancy/map.hpp>
#include <ufo/map/ufomap.hpp>
// #include <ufo/map/occupancy/map.hpp>
// #include <ufo/map/ufomap.hpp>
int main() {
ufo::Map3D<ufo::OccupancyMap> map(0.5, 3);
ufo::Vec3f coord(0, 0, 0);
map.occupancySet(coord, 0.95f);
// ufo::Map3D<ufo::OccupancyMap> map(0.5, 3);
// ufo::Vec3f coord(0, 0, 0);
// map.occupancySet(coord, 0.95f);
return 0;
}
EOF

- name: Build and Link Consumer
run: |
cmake -S consumer -B consumer/build \
-DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/dist
cmake -S consumer -B consumer/build -DCMAKE_CXX_COMPILER=g++-14 -DCMAKE_C_COMPILER=gcc-14 -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/dist
cmake --build consumer/build --config Release
48 changes: 40 additions & 8 deletions .github/workflows/cmake-multi-platform.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform.
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
# See: https://github.com/actions/starter-gitgithubworkflows/blob/main/ci/cmake-single-platform.yml
name: CMake

on:
Expand All @@ -21,11 +21,11 @@ jobs:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
build_type: [Debug, Release]
c_compiler: [gcc, clang, cl]
c_compiler: [gcc-14, clang, cl]
include:
- os: ubuntu-latest
c_compiler: gcc
cpp_compiler: g++
c_compiler: gcc-14
cpp_compiler: g++-14
- os: ubuntu-latest
c_compiler: clang
cpp_compiler: clang++
Expand All @@ -39,16 +39,41 @@ jobs:
- os: ubuntu-latest
c_compiler: cl
- os: macos-latest
c_compiler: gcc
c_compiler: gcc-14
- os: macos-latest
c_compiler: cl
- os: windows-latest
c_compiler: gcc
c_compiler: gcc-14
- os: windows-latest
c_compiler: clang

steps:
- uses: actions/checkout@v5

- name: Install dependencies (Ubuntu)
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y doxygen

- name: Install LLVM 21 (macOS)
if: matrix.os == 'macos-latest'
run: |
brew install llvm@21

# Force the shell to find LLVM 21 binaries first
echo "/opt/homebrew/opt/llvm@21/bin" >> $GITHUB_PATH

# Point to the macOS SDK
echo "SDKROOT=$(xcrun --show-sdk-path)" >> $GITHUB_ENV

# Tell the compiler and linker to use the LLVM 21 library/headers
# instead of the outdated Apple Clang system headers
echo "LDFLAGS=-L/opt/homebrew/opt/llvm@21/lib -Wl,-rpath,/opt/homebrew/opt/llvm@21/lib" >> $GITHUB_ENV
echo "CPPFLAGS=-I/opt/homebrew/opt/llvm@21/include" >> $GITHUB_ENV

# These help CMake find the correct standard library for C++23 Ranges
echo "CXXFLAGS=-stdlib=libc++ -fexperimental-library" >> $GITHUB_ENV

- name: Set reusable strings
# Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file.
Expand All @@ -60,18 +85,25 @@ jobs:
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
# On macOS, we explicitly pass the Homebrew paths to CMake
run: >
cmake -B ${{ steps.strings.outputs.build-output-dir }}
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
-DCMAKE_CXX_COMPILER=${{ matrix.os == 'macos-latest' && '/opt/homebrew/opt/llvm@21/bin/clang++' || matrix.cpp_compiler }}
-DCMAKE_C_COMPILER=${{ matrix.os == 'macos-latest' && '/opt/homebrew/opt/llvm@21/bin/clang' || matrix.c_compiler }}
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-S ${{ github.workspace }}
-DUFO_BUILD_TESTS=ON
-DUFO_DEV_MODE=${{ matrix.build_type == 'Release' && 'OFF' || 'ON' }}
-DUFO_BUILD_DOCS=${{ matrix.os == 'ubuntu-latest' && matrix.cpp_compiler == 'g++-14' && 'ON' || 'OFF' }}

- name: Build
# Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }}

- name: Build Documentation
if: matrix.os == 'ubuntu-latest' && matrix.cpp_compiler == 'g++-14'
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --target Docs

- name: Test
working-directory: ${{ steps.strings.outputs.build-output-dir }}
# Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:

- name: Generate Doxygen API documentation
run: |
cmake -B build -DUFO_BUILD_DOCS=ON
cmake -B build -DUFO_BUILD_DOCS=ON -DCMAKE_CXX_COMPILER=g++-14 -DCMAKE_C_COMPILER=gcc-14 -DUFO_DEV_MODE=OFF
cmake --build build --target Docs
cp -r build/docs/html docs/public/cpp_api

Expand Down
Loading
Loading