pythoncdt 2.0.0__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 (87) hide show
  1. pythoncdt-2.0.0/.clang-format +52 -0
  2. pythoncdt-2.0.0/.github/dependabot.yml +9 -0
  3. pythoncdt-2.0.0/.github/release-drafter.yml +15 -0
  4. pythoncdt-2.0.0/.github/workflows/ci.yml +51 -0
  5. pythoncdt-2.0.0/.github/workflows/release-drafter.yml +15 -0
  6. pythoncdt-2.0.0/.github/workflows/wheels.yml +63 -0
  7. pythoncdt-2.0.0/.gitignore +13 -0
  8. pythoncdt-2.0.0/.gitmodules +3 -0
  9. pythoncdt-2.0.0/.pre-commit-config.yaml +7 -0
  10. pythoncdt-2.0.0/CDT/.clang-format +53 -0
  11. pythoncdt-2.0.0/CDT/.github/workflows/ci_builds.yml +167 -0
  12. pythoncdt-2.0.0/CDT/.github/workflows/documentation.yml +64 -0
  13. pythoncdt-2.0.0/CDT/.gitignore +89 -0
  14. pythoncdt-2.0.0/CDT/.gitmodules +3 -0
  15. pythoncdt-2.0.0/CDT/.mailmap +4 -0
  16. pythoncdt-2.0.0/CDT/CDT/CMakeLists.txt +324 -0
  17. pythoncdt-2.0.0/CDT/CDT/LICENSE +373 -0
  18. pythoncdt-2.0.0/CDT/CDT/conan_basic_setup.cmake +10 -0
  19. pythoncdt-2.0.0/CDT/CDT/conanfile.py +71 -0
  20. pythoncdt-2.0.0/CDT/CDT/extras/VerifyTopology.h +112 -0
  21. pythoncdt-2.0.0/CDT/CDT/include/CDT.h +447 -0
  22. pythoncdt-2.0.0/CDT/CDT/include/CDT.hpp +115 -0
  23. pythoncdt-2.0.0/CDT/CDT/include/CDTUtils.h +702 -0
  24. pythoncdt-2.0.0/CDT/CDT/include/CDTUtils.hpp +339 -0
  25. pythoncdt-2.0.0/CDT/CDT/include/KDTree.h +471 -0
  26. pythoncdt-2.0.0/CDT/CDT/include/LocatorKDTree.h +81 -0
  27. pythoncdt-2.0.0/CDT/CDT/include/Triangulation.h +1448 -0
  28. pythoncdt-2.0.0/CDT/CDT/include/Triangulation.hpp +2805 -0
  29. pythoncdt-2.0.0/CDT/CDT/include/portable_nth_element.hpp +313 -0
  30. pythoncdt-2.0.0/CDT/CDT/include/predicates.h +1022 -0
  31. pythoncdt-2.0.0/CDT/CDT/include/remove_at.hpp +55 -0
  32. pythoncdt-2.0.0/CDT/CDT/src/CDT.cpp +89 -0
  33. pythoncdt-2.0.0/CDT/LICENSE +373 -0
  34. pythoncdt-2.0.0/CDT/visualizer/CMakeLists.txt +24 -0
  35. pythoncdt-2.0.0/CDT/visualizer/LICENSE +373 -0
  36. pythoncdt-2.0.0/CDT/visualizer/data/Capital A.txt +59 -0
  37. pythoncdt-2.0.0/CDT/visualizer/data/Constrained Sweden.txt +5239 -0
  38. pythoncdt-2.0.0/CDT/visualizer/data/Hanging.txt +9 -0
  39. pythoncdt-2.0.0/CDT/visualizer/data/Hanging2.txt +23 -0
  40. pythoncdt-2.0.0/CDT/visualizer/data/HangingIntersection.txt +10 -0
  41. pythoncdt-2.0.0/CDT/visualizer/data/LakeSuperior.txt +1553 -0
  42. pythoncdt-2.0.0/CDT/visualizer/data/Letter u.txt +17 -0
  43. pythoncdt-2.0.0/CDT/visualizer/data/OnEdge.txt +21 -0
  44. pythoncdt-2.0.0/CDT/visualizer/data/OnEdge2.txt +35 -0
  45. pythoncdt-2.0.0/CDT/visualizer/data/Orange County.txt +233 -0
  46. pythoncdt-2.0.0/CDT/visualizer/data/ProblematicCase1.txt +10 -0
  47. pythoncdt-2.0.0/CDT/visualizer/data/Sweden with constraints.txt +2641 -0
  48. pythoncdt-2.0.0/CDT/visualizer/data/Sweden with duplicate points.txt +2639 -0
  49. pythoncdt-2.0.0/CDT/visualizer/data/Sweden.txt +2620 -0
  50. pythoncdt-2.0.0/CDT/visualizer/data/cdt.txt +205 -0
  51. pythoncdt-2.0.0/CDT/visualizer/data/cdt_duplicates.txt +207 -0
  52. pythoncdt-2.0.0/CDT/visualizer/data/corner cases.txt +19 -0
  53. pythoncdt-2.0.0/CDT/visualizer/data/crossing-edges.txt +7 -0
  54. pythoncdt-2.0.0/CDT/visualizer/data/ditch.txt +24 -0
  55. pythoncdt-2.0.0/CDT/visualizer/data/duplicates.txt +12 -0
  56. pythoncdt-2.0.0/CDT/visualizer/data/gh_issue.txt +157 -0
  57. pythoncdt-2.0.0/CDT/visualizer/data/guitar no box.txt +289 -0
  58. pythoncdt-2.0.0/CDT/visualizer/data/guitar.txt +293 -0
  59. pythoncdt-2.0.0/CDT/visualizer/data/island.txt +191 -0
  60. pythoncdt-2.0.0/CDT/visualizer/data/issue-42-full-boundary-overlap-2.txt +29 -0
  61. pythoncdt-2.0.0/CDT/visualizer/data/issue-42-full-boundary-overlap.txt +29 -0
  62. pythoncdt-2.0.0/CDT/visualizer/data/issue-42-hole-overlaps-bondary.txt +17 -0
  63. pythoncdt-2.0.0/CDT/visualizer/data/issue-42-multiple-boundary-overlaps-conform-to-edge.txt +37 -0
  64. pythoncdt-2.0.0/CDT/visualizer/data/issue-42-multiple-boundary-overlaps.txt +33 -0
  65. pythoncdt-2.0.0/CDT/visualizer/data/issue-65-wrong-edges.txt +4 -0
  66. pythoncdt-2.0.0/CDT/visualizer/data/kidney.txt +101 -0
  67. pythoncdt-2.0.0/CDT/visualizer/data/overlapping constraints.txt +17 -0
  68. pythoncdt-2.0.0/CDT/visualizer/data/overlapping constraints2.txt +13 -0
  69. pythoncdt-2.0.0/CDT/visualizer/data/points_on_constraint_edge.txt +14 -0
  70. pythoncdt-2.0.0/CDT/visualizer/data/regression_issue_38_wrong_hull.txt +37 -0
  71. pythoncdt-2.0.0/CDT/visualizer/data/regression_issue_38_wrong_hull_small.txt +7 -0
  72. pythoncdt-2.0.0/CDT/visualizer/data/square with crack.txt +15 -0
  73. pythoncdt-2.0.0/CDT/visualizer/data/unit square.txt +9 -0
  74. pythoncdt-2.0.0/CDT/visualizer/main.cpp +1174 -0
  75. pythoncdt-2.0.0/CMakeLists.txt +13 -0
  76. pythoncdt-2.0.0/LICENSE +373 -0
  77. pythoncdt-2.0.0/PKG-INFO +129 -0
  78. pythoncdt-2.0.0/README.md +101 -0
  79. pythoncdt-2.0.0/benchmark_gil_release.py +47 -0
  80. pythoncdt-2.0.0/benchmark_list_vs_array_access.py +18 -0
  81. pythoncdt-2.0.0/pyproject.toml +75 -0
  82. pythoncdt-2.0.0/src/cdt_bindings.cpp +551 -0
  83. pythoncdt-2.0.0/src/pythoncdt/__init__.py +8 -0
  84. pythoncdt-2.0.0/src/pythoncdt/_core.pyi +157 -0
  85. pythoncdt-2.0.0/src/pythoncdt/py.typed +0 -0
  86. pythoncdt-2.0.0/tests/stubtest-allowlist.txt +12 -0
  87. pythoncdt-2.0.0/tests/test_bindings.py +393 -0
@@ -0,0 +1,52 @@
1
+ # ================================
2
+ # Can be used when needed locally:
3
+ # ================================
4
+ SortIncludes: false
5
+ SortUsingDeclarations: true
6
+
7
+ AccessModifierOffset: -4
8
+ AlignAfterOpenBracket: AlwaysBreak
9
+ AllowAllParametersOfDeclarationOnNextLine: false
10
+ AllowShortBlocksOnASingleLine: false
11
+ AllowShortCaseLabelsOnASingleLine: false
12
+ AllowShortFunctionsOnASingleLine: None
13
+ AllowShortIfStatementsOnASingleLine: false
14
+ AllowShortLoopsOnASingleLine: false
15
+ AlwaysBreakTemplateDeclarations: true
16
+ BinPackArguments: false
17
+ BinPackParameters: false
18
+ BreakConstructorInitializersBeforeComma: true
19
+ ColumnLimit: 80
20
+ ConstructorInitializerIndentWidth: 4
21
+ ContinuationIndentWidth: 4
22
+ DerivePointerAlignment: false
23
+ PointerAlignment: Left
24
+ IndentWidth: 4
25
+ Language: Cpp
26
+ NamespaceIndentation: None
27
+ SpaceBeforeParens: ControlStatements
28
+ SpacesBeforeTrailingComments: 1
29
+ Standard: Cpp03
30
+ UseTab: Never
31
+
32
+ # =====================
33
+ # Clang 5 new features:
34
+ # =====================
35
+ BreakBeforeBraces: Custom
36
+ BraceWrapping:
37
+ AfterClass: true
38
+ AfterControlStatement: true
39
+ AfterEnum : true
40
+ AfterFunction : true
41
+ AfterNamespace : true
42
+ AfterStruct : true
43
+ AfterUnion : true
44
+ BeforeCatch : true
45
+ BeforeElse : true
46
+ IndentBraces : false
47
+ SplitEmptyFunction: false
48
+ SplitEmptyRecord: false
49
+ SplitEmptyNamespace: true
50
+ BreakBeforeInheritanceComma: true
51
+ FixNamespaceComments: true
52
+ ReflowComments: true
@@ -0,0 +1,9 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: github-actions
4
+ directory: /
5
+ schedule:
6
+ interval: monthly
7
+ groups:
8
+ actions:
9
+ patterns: ["*"]
@@ -0,0 +1,15 @@
1
+ name-template: $RESOLVED_VERSION
2
+ tag-template: $RESOLVED_VERSION
3
+ # The pull request labels choose the next version; unlabeled ones count as patch
4
+ categories:
5
+ - type: version-resolver
6
+ semver-increment: major
7
+ when:
8
+ label: major
9
+ - type: version-resolver
10
+ semver-increment: minor
11
+ when:
12
+ label: minor
13
+ - type: version-resolver
14
+ template: |
15
+ $CHANGES
@@ -0,0 +1,51 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+ pull_request:
7
+
8
+ concurrency:
9
+ group: ${{ github.workflow }}-${{ github.ref }}
10
+ cancel-in-progress: true
11
+
12
+ jobs:
13
+ lint:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v7
17
+ - run: pipx run pre-commit run --all-files --show-diff-on-failure
18
+
19
+ test:
20
+ name: ${{ matrix.os }} / Python ${{ matrix.python-version }}
21
+ runs-on: ${{ matrix.os }}
22
+ strategy:
23
+ fail-fast: false
24
+ matrix:
25
+ os: [ubuntu-latest, macos-latest, windows-latest]
26
+ python-version: ["3.10", "3.14", "3.14t"]
27
+ steps:
28
+ - uses: actions/checkout@v7
29
+ with:
30
+ submodules: true
31
+ fetch-depth: 0
32
+ - uses: actions/setup-python@v7
33
+ with:
34
+ python-version: ${{ matrix.python-version }}
35
+ - run: python -m pip install --upgrade pip
36
+ - run: python -m pip install . --group test
37
+ - run: python -m pytest ${{ endsWith(matrix.python-version, 't') && '--parallel-threads=4' || '' }}
38
+
39
+ stubs:
40
+ name: Type stubs match the module
41
+ runs-on: ubuntu-latest
42
+ steps:
43
+ - uses: actions/checkout@v7
44
+ with:
45
+ submodules: true
46
+ fetch-depth: 0
47
+ - uses: actions/setup-python@v7
48
+ with:
49
+ python-version: "3.x"
50
+ - run: python -m pip install . mypy
51
+ - run: python -m mypy.stubtest pythoncdt --allowlist tests/stubtest-allowlist.txt
@@ -0,0 +1,15 @@
1
+ name: Release Drafter
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+
7
+ permissions:
8
+ contents: write
9
+ pull-requests: read
10
+
11
+ jobs:
12
+ draft:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: release-drafter/release-drafter@v7
@@ -0,0 +1,63 @@
1
+ name: Wheels
2
+
3
+ on:
4
+ pull_request:
5
+ release:
6
+ types: [published]
7
+ workflow_dispatch:
8
+
9
+ concurrency:
10
+ group: ${{ github.workflow }}-${{ github.ref }}
11
+ cancel-in-progress: true
12
+
13
+ jobs:
14
+ sdist:
15
+ name: Source distribution
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: actions/checkout@v7
19
+ with:
20
+ submodules: true
21
+ fetch-depth: 0 # the version comes from git tags
22
+ # Builds the sdist, then a wheel from it: proves the sdist is complete
23
+ - run: pipx run build
24
+ - uses: actions/upload-artifact@v7
25
+ with:
26
+ name: dist-sdist
27
+ path: dist/*.tar.gz
28
+
29
+ wheels:
30
+ name: Wheels on ${{ matrix.os }}
31
+ runs-on: ${{ matrix.os }}
32
+ strategy:
33
+ fail-fast: false
34
+ matrix:
35
+ os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-15-intel, macos-latest]
36
+ steps:
37
+ - uses: actions/checkout@v7
38
+ with:
39
+ submodules: true
40
+ fetch-depth: 0
41
+ - uses: pypa/cibuildwheel@v4.3.0
42
+ - uses: actions/upload-artifact@v7
43
+ with:
44
+ name: dist-wheels-${{ matrix.os }}
45
+ path: wheelhouse/*.whl
46
+
47
+ publish:
48
+ name: Publish to PyPI
49
+ if: github.event_name == 'release' && github.repository == 'artem-ogre/PythonCDT'
50
+ needs: [sdist, wheels]
51
+ runs-on: ubuntu-latest
52
+ environment:
53
+ name: pypi
54
+ url: https://pypi.org/p/pythoncdt
55
+ permissions:
56
+ id-token: write
57
+ steps:
58
+ - uses: actions/download-artifact@v8
59
+ with:
60
+ pattern: dist-*
61
+ path: dist
62
+ merge-multiple: true
63
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,13 @@
1
+ .cache/*
2
+ .pytest_cache/
3
+ __pycache__/
4
+ .vscode/*
5
+ .idea/*
6
+ build/*
7
+ dist/*
8
+ *.egg-info/
9
+ cmake-build-*/*
10
+ python/.venv/*
11
+ .venv/*
12
+ out/
13
+ wheelhouse/
@@ -0,0 +1,3 @@
1
+ [submodule "CDT"]
2
+ path = CDT
3
+ url = https://github.com/artem-ogre/CDT.git
@@ -0,0 +1,7 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ rev: v0.16.10
4
+ hooks:
5
+ - id: ruff-check
6
+ args: [--fix]
7
+ - id: ruff-format
@@ -0,0 +1,53 @@
1
+ # ================================
2
+ # Can be used when needed locally:
3
+ # ================================
4
+ SortIncludes: true
5
+ SortUsingDeclarations: true
6
+
7
+ AccessModifierOffset: -4
8
+ AlignAfterOpenBracket: AlwaysBreak
9
+ AllowAllParametersOfDeclarationOnNextLine: false
10
+ AllowShortBlocksOnASingleLine: false
11
+ AllowShortCaseLabelsOnASingleLine: false
12
+ AllowShortFunctionsOnASingleLine: None
13
+ AllowShortIfStatementsOnASingleLine: false
14
+ AllowShortLoopsOnASingleLine: false
15
+ AlwaysBreakTemplateDeclarations: true
16
+ BinPackArguments: false
17
+ BinPackParameters: false
18
+ BreakConstructorInitializersBeforeComma: true
19
+ ColumnLimit: 80
20
+ ConstructorInitializerIndentWidth: 4
21
+ ContinuationIndentWidth: 4
22
+ DerivePointerAlignment: false
23
+ PointerAlignment: Left
24
+ IndentWidth: 4
25
+ Language: Cpp
26
+ NamespaceIndentation: None
27
+ SpaceBeforeParens: Never
28
+ SpacesBeforeTrailingComments: 1
29
+ Standard: Cpp03
30
+ UseTab: Never
31
+
32
+ # =====================
33
+ # Clang 5 new features:
34
+ # =====================
35
+ BreakBeforeBraces: Custom
36
+ BraceWrapping:
37
+ AfterCaseLabel: true
38
+ AfterClass: true
39
+ AfterControlStatement: true
40
+ AfterEnum : true
41
+ AfterFunction : true
42
+ AfterNamespace : true
43
+ AfterStruct : true
44
+ AfterUnion : true
45
+ BeforeCatch : true
46
+ BeforeElse : true
47
+ IndentBraces : false
48
+ SplitEmptyFunction: false
49
+ SplitEmptyRecord: false
50
+ SplitEmptyNamespace: true
51
+ BreakBeforeInheritanceComma: true
52
+ FixNamespaceComments: true
53
+ ReflowComments: true
@@ -0,0 +1,167 @@
1
+ name: CI Builds
2
+
3
+ # Only master on push: branches are covered by the pull_request event, which
4
+ # additionally tests the result of merging into master. Running on every push
5
+ # would build a branch with an open pull request twice.
6
+ on:
7
+ push:
8
+ branches: [master]
9
+ pull_request:
10
+
11
+ jobs:
12
+ builds:
13
+ name: ${{ matrix.config.name }}
14
+ runs-on: ${{ matrix.config.os }}
15
+ strategy:
16
+ fail-fast: false
17
+ matrix:
18
+ config:
19
+ - name: "Windows 2025 (x64)"
20
+ os: windows-2025
21
+ - name: "Ubuntu 24.04 (x64)"
22
+ os: ubuntu-24.04
23
+ - name: "Ubuntu 24.04 (arm64)"
24
+ os: ubuntu-24.04-arm
25
+ - name: "macOS 15 (arm64)"
26
+ os: macos-15
27
+
28
+ steps:
29
+ - uses: actions/checkout@v4
30
+ with:
31
+ submodules: true
32
+
33
+ - name: Set up Python
34
+ uses: actions/setup-python@v5
35
+ with:
36
+ python-version: '3.x'
37
+
38
+ - name: Install Conan
39
+ run: |
40
+ python -m pip install --upgrade pip
41
+ pip install conan
42
+ conan --version
43
+ conan profile detect
44
+
45
+ - name: "Build: compiled, shared, boost"
46
+ run: conan create CDT/ -o as_compiled_library=True -o shared=True -o use_boost=True -o enable_testing=True --build missing
47
+ - name: "Build: compiled, shared, without boost"
48
+ run: conan create CDT/ -o as_compiled_library=True -o shared=True -o use_boost=False -o enable_testing=True
49
+ - name: "Build: compiled, static, boost"
50
+ run: conan create CDT/ -o as_compiled_library=True -o use_boost=True -o enable_testing=True --build missing
51
+ - name: "Build: compiled, static, without boost"
52
+ run: conan create CDT/ -o as_compiled_library=True -o use_boost=False -o enable_testing=True
53
+ - name: "Build: header-only, boost"
54
+ run: conan create CDT/ -o use_boost=True -o enable_testing=True --build missing
55
+ - name: "Build: header-only, without boost, with callbacks"
56
+ run: conan create CDT/ -o use_boost=False -o enable_testing=True -o enable_callback_handler=True
57
+
58
+ standards:
59
+ name: "C++${{ matrix.std }} (${{ matrix.cxx }})"
60
+ runs-on: ubuntu-24.04
61
+ strategy:
62
+ fail-fast: false
63
+ matrix:
64
+ include:
65
+ # oldest supported standard: Boost stands in for the c++11 features
66
+ - std: 98
67
+ cxx: g++-13
68
+ boost: "ON"
69
+ - std: 11
70
+ cxx: g++-13
71
+ boost: "OFF"
72
+ - std: 14
73
+ cxx: g++-13
74
+ boost: "OFF"
75
+ - std: 17
76
+ cxx: g++-13
77
+ boost: "OFF"
78
+ - std: 20
79
+ cxx: g++-13
80
+ boost: "OFF"
81
+ - std: 23
82
+ cxx: g++-13
83
+ boost: "OFF"
84
+ # newest standard: g++-13 does not know -std=c++26
85
+ - std: 26
86
+ cxx: g++-14
87
+ boost: "OFF"
88
+
89
+ steps:
90
+ - uses: actions/checkout@v4
91
+
92
+ - name: Set up Python
93
+ uses: actions/setup-python@v5
94
+ with:
95
+ python-version: '3.x'
96
+
97
+ - name: Install compiler
98
+ run: |
99
+ sudo apt-get update
100
+ sudo apt-get install -y ${{ matrix.cxx }}
101
+
102
+ - name: Install Conan and fetch Boost
103
+ if: matrix.boost == 'ON'
104
+ run: |
105
+ python -m pip install --upgrade pip
106
+ pip install conan
107
+ conan profile detect
108
+ conan install --requires=boost/1.83.0 -o "boost/*:header_only=True" \
109
+ -g CMakeDeps --output-folder=boost-dep --build=missing
110
+
111
+ - name: "Header-only: build and run"
112
+ run: |
113
+ cmake -S CDT -B build-header-only \
114
+ -DCMAKE_CXX_COMPILER=${{ matrix.cxx }} \
115
+ -DCMAKE_CXX_STANDARD=${{ matrix.std }} \
116
+ -DCMAKE_CXX_STANDARD_REQUIRED=ON \
117
+ -DCMAKE_PREFIX_PATH="$PWD/boost-dep" \
118
+ -DCDT_USE_BOOST=${{ matrix.boost }} \
119
+ -DCDT_ENABLE_STANDARDS_CHECK=ON \
120
+ -DCMAKE_BUILD_TYPE=Release
121
+ cmake --build build-header-only -j
122
+ ./build-header-only/CDT-standards-check
123
+
124
+ - name: "Compiled library: build and run"
125
+ run: |
126
+ cmake -S CDT -B build-compiled \
127
+ -DCMAKE_CXX_COMPILER=${{ matrix.cxx }} \
128
+ -DCMAKE_CXX_STANDARD=${{ matrix.std }} \
129
+ -DCMAKE_CXX_STANDARD_REQUIRED=ON \
130
+ -DCMAKE_PREFIX_PATH="$PWD/boost-dep" \
131
+ -DCDT_USE_BOOST=${{ matrix.boost }} \
132
+ -DCDT_USE_AS_COMPILED_LIBRARY=ON \
133
+ -DCDT_ENABLE_STANDARDS_CHECK=ON \
134
+ -DCMAKE_BUILD_TYPE=Release
135
+ cmake --build build-compiled -j
136
+ ./build-compiled/CDT-standards-check
137
+
138
+ fast-math:
139
+ name: "Fast math (${{ matrix.compiler }})"
140
+ runs-on: ${{ matrix.os }}
141
+ strategy:
142
+ fail-fast: false
143
+ matrix:
144
+ include:
145
+ - compiler: MSVC
146
+ os: windows-2025
147
+ flags: "/arch:AVX2 /fp:fast /fp:contract"
148
+ - compiler: GCC
149
+ os: ubuntu-24.04
150
+ flags: "-march=haswell -ffast-math"
151
+ - compiler: Clang
152
+ os: macos-15
153
+ flags: "-ffast-math"
154
+
155
+ steps:
156
+ - uses: actions/checkout@v4
157
+ with:
158
+ submodules: true
159
+
160
+ - name: Build and test
161
+ shell: bash
162
+ env:
163
+ CXXFLAGS: ${{ matrix.flags }}
164
+ run: |
165
+ cmake -S CDT -B build -DCDT_ENABLE_TESTING=ON -DCMAKE_BUILD_TYPE=Release -DCDT_ENSURE_PRECISE_MATH_IN_CONSTRUCTIONS=ON
166
+ cmake --build build --config Release -j
167
+ ctest --test-dir build -C Release --output-on-failure
@@ -0,0 +1,64 @@
1
+ name: Documentation
2
+
3
+ # Same rationale as in ci_builds.yml: master on push, branches via pull_request.
4
+ # Pull requests only check that the docs still build, master also publishes them.
5
+ on:
6
+ push:
7
+ branches: [master]
8
+ pull_request:
9
+ workflow_dispatch:
10
+
11
+ permissions:
12
+ contents: read
13
+ pages: write
14
+ id-token: write
15
+
16
+ # Never let two deployments to GitHub Pages run at the same time.
17
+ concurrency:
18
+ group: github-pages
19
+ cancel-in-progress: false
20
+
21
+ env:
22
+ # Keep in sync with the Doxygen version the docs were last generated with
23
+ DOXYGEN_VERSION: "1.13.2"
24
+
25
+ jobs:
26
+ build:
27
+ name: Generate Doxygen documentation
28
+ runs-on: ubuntu-24.04
29
+ steps:
30
+ - uses: actions/checkout@v4
31
+
32
+ - name: Install Graphviz
33
+ run: sudo apt-get update && sudo apt-get install --yes graphviz
34
+
35
+ - name: Install Doxygen
36
+ run: |
37
+ tag="Release_${DOXYGEN_VERSION//./_}"
38
+ url="https://github.com/doxygen/doxygen/releases/download/$tag/doxygen-$DOXYGEN_VERSION.linux.bin.tar.gz"
39
+ curl --fail --silent --show-error --location "$url" | sudo tar xz -C /opt
40
+ echo "/opt/doxygen-$DOXYGEN_VERSION/bin" >> "$GITHUB_PATH"
41
+
42
+ - name: Configure
43
+ run: cmake -S CDT -B build
44
+
45
+ - name: Generate documentation
46
+ run: cmake --build build --target CDT-docs
47
+
48
+ - name: Upload GitHub Pages artifact
49
+ uses: actions/upload-pages-artifact@v3
50
+ with:
51
+ path: build/docs/html
52
+
53
+ deploy:
54
+ name: Deploy to GitHub Pages
55
+ needs: build
56
+ if: github.event_name != 'pull_request'
57
+ runs-on: ubuntu-24.04
58
+ environment:
59
+ name: github-pages
60
+ url: ${{ steps.deployment.outputs.page_url }}
61
+ steps:
62
+ - name: Deploy
63
+ id: deployment
64
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,89 @@
1
+ # This file is used to ignore files which are generated
2
+ # ----------------------------------------------------------------------------
3
+
4
+ build/
5
+ cmake-build*/
6
+ *~
7
+ *.autosave
8
+ *.a
9
+ *.core
10
+ *.moc
11
+ *.o
12
+ *.obj
13
+ *.orig
14
+ *.rej
15
+ *.so
16
+ *.so.*
17
+ *_pch.h.cpp
18
+ *_resource.rc
19
+ *.qm
20
+ .#*
21
+ *.*#
22
+ core
23
+ !core/
24
+ tags
25
+ .DS_Store
26
+ .directory
27
+ *.debug
28
+ Makefile*
29
+ *.prl
30
+ *.app
31
+ moc_*.cpp
32
+ ui_*.h
33
+ qrc_*.cpp
34
+ Thumbs.db
35
+ *.res
36
+ *.rc
37
+ /.qmake.cache
38
+ /.qmake.stash
39
+
40
+ # qtcreator generated files
41
+ *.pro.user*
42
+
43
+ # xemacs temporary files
44
+ *.flc
45
+
46
+ # Vim temporary files
47
+ .*.swp
48
+
49
+ # Visual Studio generated files
50
+ *.ib_pdb_index
51
+ *.idb
52
+ *.ilk
53
+ *.pdb
54
+ *.sln
55
+ *.suo
56
+ *.vcproj
57
+ *vcproj.*.*.user
58
+ *.ncb
59
+ *.sdf
60
+ *.opensdf
61
+ *.vcxproj
62
+ *vcxproj.*
63
+
64
+ # MinGW generated files
65
+ *.Debug
66
+ *.Release
67
+
68
+ # Python byte code
69
+ *.pyc
70
+
71
+ # Binaries
72
+ # --------
73
+ *.dll
74
+ *.exe
75
+
76
+ # xcode
77
+ *.xcode*
78
+ # moc
79
+ moc_*.h
80
+
81
+ # CLion
82
+ *.idea*
83
+
84
+ # Visual code files
85
+ *.code-workspace
86
+ *.vscode
87
+
88
+ # Claude Code
89
+ .claude/
@@ -0,0 +1,3 @@
1
+ [submodule "CDT/tests/Catch2"]
2
+ path = CDT/tests/Catch2
3
+ url = https://github.com/catchorg/Catch2.git
@@ -0,0 +1,4 @@
1
+ artem-ogre <artem.ogre@gmail.com> <artem.ogre@gmail.com>
2
+ artem-ogre <artem.ogre@gmail.com> <artem.amirkhanov@leica-geosystems.com>
3
+ artem-ogre <artem.ogre@gmail.com> <artem>
4
+ kalleakerblom <kalleakerblom@gmail.com> <karl.akerblom@leica-geosystems.com>