compress-utils 0.4.1__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 (76) hide show
  1. compress_utils-0.4.1/.clang-format +35 -0
  2. compress_utils-0.4.1/.clang-tidy +29 -0
  3. compress_utils-0.4.1/.github/workflows/build_and_test_c_cpp.yml +196 -0
  4. compress_utils-0.4.1/.github/workflows/build_and_test_python.yml +113 -0
  5. compress_utils-0.4.1/.github/workflows/pr_build_and_test.yml +37 -0
  6. compress_utils-0.4.1/.github/workflows/release_artifacts.yml +34 -0
  7. compress_utils-0.4.1/.gitignore +47 -0
  8. compress_utils-0.4.1/.vscode/c_cpp_properties.json +27 -0
  9. compress_utils-0.4.1/.vscode/settings.json +81 -0
  10. compress_utils-0.4.1/ACKNOWLEDGMENTS.md +27 -0
  11. compress_utils-0.4.1/CMakeLists.txt +311 -0
  12. compress_utils-0.4.1/CODEOWNERS +8 -0
  13. compress_utils-0.4.1/LICENSE +21 -0
  14. compress_utils-0.4.1/PKG-INFO +197 -0
  15. compress_utils-0.4.1/README.md +157 -0
  16. compress_utils-0.4.1/TODO.md +64 -0
  17. compress_utils-0.4.1/algorithms/README.md +10 -0
  18. compress_utils-0.4.1/algorithms/brotli/CMakeLists.txt +91 -0
  19. compress_utils-0.4.1/algorithms/xz/CMakeLists.txt +82 -0
  20. compress_utils-0.4.1/algorithms/zlib/CMakeLists.txt +71 -0
  21. compress_utils-0.4.1/algorithms/zstd/CMakeLists.txt +75 -0
  22. compress_utils-0.4.1/bindings/c/CMakeLists.txt +107 -0
  23. compress_utils-0.4.1/bindings/c/README.md +75 -0
  24. compress_utils-0.4.1/bindings/c/algorithms.h +34 -0
  25. compress_utils-0.4.1/bindings/c/algorithms.h.in +19 -0
  26. compress_utils-0.4.1/bindings/c/compress_utils.h +43 -0
  27. compress_utils-0.4.1/bindings/c/compress_utils_c.cpp +68 -0
  28. compress_utils-0.4.1/bindings/c/symbol_exports.h +21 -0
  29. compress_utils-0.4.1/bindings/c/symbol_exports_shared.h +13 -0
  30. compress_utils-0.4.1/bindings/c/symbol_exports_static.h +7 -0
  31. compress_utils-0.4.1/bindings/c/tests/CMakeLists.txt +84 -0
  32. compress_utils-0.4.1/bindings/c/tests/test_compress_utils.c +187 -0
  33. compress_utils-0.4.1/bindings/cpp/README.md +234 -0
  34. compress_utils-0.4.1/bindings/python/API.md +266 -0
  35. compress_utils-0.4.1/bindings/python/CMakeLists.txt +100 -0
  36. compress_utils-0.4.1/bindings/python/README.md +68 -0
  37. compress_utils-0.4.1/bindings/python/compress_utils/__init__.py +4 -0
  38. compress_utils-0.4.1/bindings/python/compress_utils.egg-info/PKG-INFO +197 -0
  39. compress_utils-0.4.1/bindings/python/compress_utils.egg-info/SOURCES.txt +74 -0
  40. compress_utils-0.4.1/bindings/python/compress_utils.egg-info/dependency_links.txt +1 -0
  41. compress_utils-0.4.1/bindings/python/compress_utils.egg-info/not-zip-safe +1 -0
  42. compress_utils-0.4.1/bindings/python/compress_utils.egg-info/top_level.txt +1 -0
  43. compress_utils-0.4.1/bindings/python/compress_utils_py.cpp +125 -0
  44. compress_utils-0.4.1/bindings/python/pyproject.toml +27 -0
  45. compress_utils-0.4.1/bindings/python/setup.py +82 -0
  46. compress_utils-0.4.1/bindings/python/tests/test_compress_utils.py +70 -0
  47. compress_utils-0.4.1/build.ps1 +223 -0
  48. compress_utils-0.4.1/build.sh +198 -0
  49. compress_utils-0.4.1/environment.yml +13 -0
  50. compress_utils-0.4.1/pyproject.toml +27 -0
  51. compress_utils-0.4.1/setup.cfg +4 -0
  52. compress_utils-0.4.1/setup.py +82 -0
  53. compress_utils-0.4.1/src/algorithms/brotli/brotli.cpp +122 -0
  54. compress_utils-0.4.1/src/algorithms/brotli/brotli.hpp +35 -0
  55. compress_utils-0.4.1/src/algorithms/xz/xz.cpp +138 -0
  56. compress_utils-0.4.1/src/algorithms/xz/xz.hpp +35 -0
  57. compress_utils-0.4.1/src/algorithms/zlib/zlib.cpp +87 -0
  58. compress_utils-0.4.1/src/algorithms/zlib/zlib.hpp +35 -0
  59. compress_utils-0.4.1/src/algorithms/zstd/zstd.cpp +80 -0
  60. compress_utils-0.4.1/src/algorithms/zstd/zstd.hpp +35 -0
  61. compress_utils-0.4.1/src/algorithms.hpp +30 -0
  62. compress_utils-0.4.1/src/algorithms.hpp.in +15 -0
  63. compress_utils-0.4.1/src/compress_utils.cpp +28 -0
  64. compress_utils-0.4.1/src/compress_utils.hpp +82 -0
  65. compress_utils-0.4.1/src/compress_utils_func.cpp +66 -0
  66. compress_utils-0.4.1/src/compress_utils_func.hpp +60 -0
  67. compress_utils-0.4.1/src/symbol_exports.hpp +21 -0
  68. compress_utils-0.4.1/src/symbol_exports_shared.hpp +13 -0
  69. compress_utils-0.4.1/src/symbol_exports_static.hpp +7 -0
  70. compress_utils-0.4.1/src/utils/algorithms_router.hpp +60 -0
  71. compress_utils-0.4.1/src/utils/constants.hpp +27 -0
  72. compress_utils-0.4.1/tests/CMakeLists.txt +100 -0
  73. compress_utils-0.4.1/tests/helpers.hpp +71 -0
  74. compress_utils-0.4.1/tests/test_compress_utils.cpp +118 -0
  75. compress_utils-0.4.1/tests/test_compress_utils_func.cpp +123 -0
  76. compress_utils-0.4.1/tests/test_main.cpp +6 -0
@@ -0,0 +1,35 @@
1
+ BasedOnStyle: Google
2
+ IndentWidth: 4
3
+ TabWidth: 4
4
+ UseTab: Never
5
+ ColumnLimit: 100
6
+
7
+ IncludeCategories:
8
+ # 1. The source file's own header (should come first)
9
+ - Regex: '^"(.*/)?[^/]+\.h"$'
10
+ Priority: 0 # Highest priority for the source file's own header
11
+ SortPriority: 0
12
+ CaseSensitive: false
13
+ - Regex: '^"(.*/)?[^/]+\.hpp"$'
14
+ Priority: 0 # Highest priority for the source file's own header
15
+ SortPriority: 0
16
+ CaseSensitive: false
17
+ - Regex: '^"(.*/)?[^/]+\.cuh"$'
18
+ Priority: 0 # Same priority for .cuh file if it's the corresponding file's header
19
+ SortPriority: 0
20
+ CaseSensitive: false
21
+
22
+ # 2. C++ Standard Library headers (second)
23
+ - Regex: '^<.*>$' # Any header included with angle brackets is considered a system or standard library header
24
+ Priority: 1
25
+ SortPriority: 1
26
+ CaseSensitive: false
27
+
28
+ # 3. Other project headers (third)
29
+ - Regex: '^".*"$' # All remaining project headers included with double quotes
30
+ Priority: 2
31
+ SortPriority: 2
32
+ CaseSensitive: false
33
+
34
+ SortIncludes: true # Keep headers sorted within their priority groups
35
+ IncludeIsMainRegex: '([-_](test|unittest))?$'
@@ -0,0 +1,29 @@
1
+ Checks: 'google-*,readability-identifier-naming'
2
+ WarningsAsErrors: ''
3
+ HeaderFilterRegex: '.*'
4
+ FormatStyle: 'file'
5
+ CheckOptions:
6
+ - { key: readability-identifier-naming.ClassCase, value: CamelCase }
7
+ - { key: readability-identifier-naming.ClassMemberCase, value: lower_case }
8
+ - { key: readability-identifier-naming.ConstexprVariableCase, value: UPPER_CASE }
9
+ - { key: readability-identifier-naming.EnumCase, value: CamelCase }
10
+ - { key: readability-identifier-naming.EnumConstantCase, value: CamelCase }
11
+ - { key: readability-identifier-naming.FunctionCase, value: CamelCase }
12
+ - { key: readability-identifier-naming.StaticConstantCase, value: CamelCase }
13
+ - { key: readability-identifier-naming.StaticConstantPrefix, value: k }
14
+ - { key: readability-identifier-naming.StaticVariableCase, value: lower_case }
15
+ - { key: readability-identifier-naming.MacroDefinitionCase, value: UPPER_CASE }
16
+ - { key: readability-identifier-naming.MacroDefinitionIgnoredRegexp, value: '^[A-Z]+(_[A-Z]+)*_$' }
17
+ - { key: readability-identifier-naming.MemberCase, value: lower_case }
18
+ - { key: readability-identifier-naming.PrivateMemberSuffix, value: _ }
19
+ - { key: readability-identifier-naming.PublicMemberSuffix, value: '' }
20
+ - { key: readability-identifier-naming.NamespaceCase, value: lower_case }
21
+ - { key: readability-identifier-naming.ParameterCase, value: lower_case }
22
+ - { key: readability-identifier-naming.TypeAliasCase, value: CamelCase }
23
+ - { key: readability-identifier-naming.TypedefCase, value: CamelCase }
24
+ - { key: readability-identifier-naming.VariableCase, value: lower_case }
25
+ - { key: readability-identifier-naming.IgnoreMainLikeFunctions, value: 1 }
26
+ - { key: readability-identifier-naming.StructCase, value: CamelCase }
27
+ - { key: readability-identifier-naming.GlobalConstantCase, value: UPPER_CASE }
28
+ - { key: readability-identifier-naming.ConstantCase, value: lower_case }
29
+
@@ -0,0 +1,196 @@
1
+ name: Build, Test and Package C/C++
2
+
3
+ on:
4
+ push:
5
+ branches: [ "main" ]
6
+
7
+ jobs:
8
+ build:
9
+ runs-on: ${{ matrix.os }}
10
+ strategy:
11
+ matrix:
12
+ os: [macos-latest, windows-latest, ubuntu-latest]
13
+
14
+ steps:
15
+ - name: Checkout Code
16
+ uses: actions/checkout@v4
17
+ with:
18
+ fetch-depth: 0
19
+ clean: true
20
+
21
+ - name: Configure CMake for C/C++ Language Bindings & All Compressors
22
+ run: |
23
+ mkdir build
24
+ cd build
25
+ cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_PYTHON_BINDINGS=OFF
26
+
27
+ - name: Build All Languages
28
+ run: cmake --build build --config Release -j 4
29
+
30
+ - name: Install Bindings
31
+ run: cmake --install build
32
+
33
+ - name: Test All Bindings & Compressors
34
+ run: |
35
+ cd build
36
+ ctest --output-on-failure -C Release
37
+
38
+ - name: Zip C Bindings
39
+ run: |
40
+ cd dist
41
+ if [[ "${{ runner.os }}" == "Windows" ]]; then
42
+ powershell -Command "Compress-Archive -Path c -DestinationPath c-bindings-${{ matrix.os }}.zip"
43
+ else
44
+ zip -r c-bindings-${{ matrix.os }}.zip c
45
+ fi
46
+ shell: bash
47
+
48
+ - name: Zip C++ Bindings
49
+ run: |
50
+ cd dist
51
+ if [[ "${{ runner.os }}" == "Windows" ]]; then
52
+ powershell -Command "Compress-Archive -Path cpp -DestinationPath cpp-bindings-${{ matrix.os }}.zip"
53
+ else
54
+ zip -r cpp-bindings-${{ matrix.os }}.zip cpp
55
+ fi
56
+ shell: bash
57
+
58
+ - name: Upload C Artifacts
59
+ uses: actions/upload-artifact@v4
60
+ with:
61
+ name: c-bindings-${{ matrix.os }}
62
+ path: dist/c-bindings-${{ matrix.os }}.zip
63
+ retention-days: 1 # These artifacts are only used for the `combine` step
64
+
65
+ - name: Upload C++ Artifacts
66
+ uses: actions/upload-artifact@v4
67
+ with:
68
+ name: cpp-bindings-${{ matrix.os }}
69
+ path: dist/cpp-bindings-${{ matrix.os }}.zip
70
+ retention-days: 1 # These artifacts are only used for the `combine` step
71
+
72
+ combine:
73
+ needs: build
74
+ runs-on: ubuntu-latest
75
+
76
+ steps:
77
+
78
+ ##### C Artifacts #####
79
+
80
+ - name: Create C Artifact Directories
81
+ run: mkdir -p compress-utils-c/macos compress-utils-c/linux compress-utils-c/windows
82
+
83
+ - name: Download C Artifacts from macOS
84
+ uses: actions/download-artifact@v4
85
+ with:
86
+ name: c-bindings-macos-latest
87
+ path: compress-utils-c/macos
88
+
89
+ - name: Download C Artifacts from Ubuntu
90
+ uses: actions/download-artifact@v4
91
+ with:
92
+ name: c-bindings-ubuntu-latest
93
+ path: compress-utils-c/linux
94
+
95
+ - name: Download C Artifacts from Windows
96
+ uses: actions/download-artifact@v4
97
+ with:
98
+ name: c-bindings-windows-latest
99
+ path: compress-utils-c/windows
100
+
101
+ - name: Unzip C Artifacts from macOS
102
+ run: |
103
+ unzip -o compress-utils-c/macos/c-bindings-macos-latest.zip -d compress-utils-c/macos
104
+ mv compress-utils-c/macos/c/* compress-utils-c/macos/
105
+ rm -r compress-utils-c/macos/c
106
+ rm compress-utils-c/macos/c-bindings-macos-latest.zip
107
+
108
+ - name: Unzip C Artifacts from Ubuntu
109
+ run: |
110
+ unzip -o compress-utils-c/linux/c-bindings-ubuntu-latest.zip -d compress-utils-c/linux
111
+ mv compress-utils-c/linux/c/* compress-utils-c/linux/
112
+ rm -r compress-utils-c/linux/c
113
+ rm compress-utils-c/linux/c-bindings-ubuntu-latest.zip
114
+
115
+ - name: Unzip C Artifacts from Windows
116
+ run: |
117
+ set +e
118
+ unzip -o compress-utils-c/windows/c-bindings-windows-latest.zip -d compress-utils-c/windows
119
+ unzip_exit_code=$?
120
+ set -e
121
+ if [ $unzip_exit_code -gt 1 ]; then exit $unzip_exit_code; fi
122
+ chmod -R u+rwX,go+rwX compress-utils-c/windows/c
123
+ mv compress-utils-c/windows/c/* compress-utils-c/windows/
124
+ rm -r compress-utils-c/windows/c
125
+ rm compress-utils-c/windows/c-bindings-windows-latest.zip
126
+
127
+ ##### C++ Artifacts #####
128
+
129
+ - name: Create C++ Artifact Directories
130
+ run: mkdir -p compress-utils-cpp/macos compress-utils-cpp/linux compress-utils-cpp/windows
131
+
132
+ - name: Download C++ Artifacts from macOS
133
+ uses: actions/download-artifact@v4
134
+ with:
135
+ name: cpp-bindings-macos-latest
136
+ path: compress-utils-cpp/macos
137
+
138
+ - name: Download C++ Artifacts from Ubuntu
139
+ uses: actions/download-artifact@v4
140
+ with:
141
+ name: cpp-bindings-ubuntu-latest
142
+ path: compress-utils-cpp/linux
143
+
144
+ - name: Download C++ Artifacts from Windows
145
+ uses: actions/download-artifact@v4
146
+ with:
147
+ name: cpp-bindings-windows-latest
148
+ path: compress-utils-cpp/windows
149
+
150
+ - name: Unzip C++ Artifacts from macOS
151
+ run: |
152
+ unzip -o compress-utils-cpp/macos/cpp-bindings-macos-latest.zip -d compress-utils-cpp/macos
153
+ mv compress-utils-cpp/macos/cpp/* compress-utils-cpp/macos/
154
+ rm -r compress-utils-cpp/macos/cpp
155
+ rm compress-utils-cpp/macos/cpp-bindings-macos-latest.zip
156
+
157
+ - name: Unzip C++ Artifacts from Ubuntu
158
+ run: |
159
+ unzip -o compress-utils-cpp/linux/cpp-bindings-ubuntu-latest.zip -d compress-utils-cpp/linux
160
+ mv compress-utils-cpp/linux/cpp/* compress-utils-cpp/linux/
161
+ rm -r compress-utils-cpp/linux/cpp
162
+ rm compress-utils-cpp/linux/cpp-bindings-ubuntu-latest.zip
163
+
164
+ - name: Unzip C++ Artifacts from Windows
165
+ run: |
166
+ set +e
167
+ unzip -o compress-utils-cpp/windows/cpp-bindings-windows-latest.zip -d compress-utils-cpp/windows
168
+ unzip_exit_code=$?
169
+ set -e
170
+ if [ $unzip_exit_code -gt 1 ]; then exit $unzip_exit_code; fi
171
+ chmod -R u+rwX,go+rwX compress-utils-cpp/windows/cpp
172
+ mv compress-utils-cpp/windows/cpp/* compress-utils-cpp/windows/
173
+ rm -r compress-utils-cpp/windows/cpp
174
+ rm compress-utils-cpp/windows/cpp-bindings-windows-latest.zip
175
+
176
+ ##### Merge All Artifacts #####
177
+
178
+ - name: Zip All C Artifacts Together
179
+ run: zip -r compress-utils-c.zip compress-utils-c
180
+
181
+ - name: Zip All C++ Artifacts Together
182
+ run: zip -r compress-utils-cpp.zip compress-utils-cpp
183
+
184
+ ##### Upload Artifacts #####
185
+
186
+ - name: Upload Unified C Artifacts
187
+ uses: actions/upload-artifact@v4
188
+ with:
189
+ name: compress-utils-c
190
+ path: compress-utils-c.zip
191
+
192
+ - name: Upload Unified C++ Artifacts
193
+ uses: actions/upload-artifact@v4
194
+ with:
195
+ name: compress-utils-cpp
196
+ path: compress-utils-cpp.zip
@@ -0,0 +1,113 @@
1
+ name: Build, Test and Package Python Wheels
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"]
6
+ tags:
7
+ - "v*"
8
+
9
+ jobs:
10
+ build_wheels:
11
+ runs-on: ${{ matrix.os }}
12
+ strategy:
13
+ matrix:
14
+ os: [ubuntu-latest, macos-latest, windows-latest]
15
+ python-version: ["cp36", "cp37", "cp38", "cp39", "cp310", "cp311", "cp312", "cp313"]
16
+ exclude:
17
+ # Exclude Python 3.6 - 3.8 on macOS (Apple Silicon incompatible)
18
+ - os: macos-latest
19
+ python-version: "cp36"
20
+ - os: macos-latest
21
+ python-version: "cp37"
22
+ - os: macos-latest
23
+ python-version: "cp38"
24
+ fail-fast: false
25
+
26
+ steps:
27
+ - name: Checkout code
28
+ uses: actions/checkout@v4
29
+ with:
30
+ fetch-depth: 0
31
+
32
+ - name: Set up Python
33
+ uses: actions/setup-python@v4
34
+ with:
35
+ python-version: "3.11"
36
+
37
+ - name: Install cibuildwheel and build
38
+ run: pip install cibuildwheel build
39
+
40
+ - name: Copy Python Bindings Configuration
41
+ run: cp bindings/python/pyproject.toml . && cp bindings/python/setup.py .
42
+
43
+ - name: Build Python Wheels
44
+ env:
45
+ CIBW_BUILD_VERBOSITY: 1
46
+ CIBW_BUILD: "${{ matrix.python-version }}-*"
47
+ CIBW_ARCHS_LINUX: "x86_64" # TODO - change this to "x86_64 aarch64"
48
+ CIBW_ARCHS_MACOS: "arm64" # TODO - change this to Universal2
49
+ CIBW_ARCHS_WINDOWS: "AMD64" # TODO - change this to "AMD64 ARM64"
50
+ run: cibuildwheel --output-dir wheelhouse
51
+
52
+ - name: Build Source Distribution (sdist)
53
+ if: matrix.os == 'ubuntu-latest' && matrix.python-version == 'cp310'
54
+ run: python -m build --sdist --outdir wheelhouse
55
+
56
+ - name: Upload Wheels as GitHub Artifact
57
+ uses: actions/upload-artifact@v4
58
+ with:
59
+ name: wheels-${{ matrix.os }}-${{ matrix.python-version }}
60
+ path: wheelhouse/*.whl
61
+
62
+ - name: Upload Source Distribution as GitHub Artifact
63
+ if: matrix.os == 'ubuntu-latest' && matrix.python-version == 'cp310'
64
+ uses: actions/upload-artifact@v4
65
+ with:
66
+ name: python-sdist
67
+ path: wheelhouse/*.tar.gz
68
+ retention-days: 5
69
+
70
+ publish_to_pypi:
71
+ needs: build_wheels
72
+ runs-on: ubuntu-latest
73
+ if: github.ref_type == 'tag'
74
+ permissions:
75
+ id-token: write
76
+ contents: write
77
+
78
+ steps:
79
+ - name: Download All Artifacts
80
+ uses: actions/download-artifact@v4
81
+ with:
82
+ path: dist
83
+
84
+ - name: Prepare for Upload
85
+ run: |
86
+ mkdir -p wheelhouse
87
+ find dist -type f -name "*.whl" -exec cp {} wheelhouse/ \;
88
+ find dist -type f -name "*.tar.gz" -exec cp {} wheelhouse/ \; || echo "No source distribution found"
89
+ ls -la wheelhouse/
90
+
91
+ - name: Create Combined Archive
92
+ run: |
93
+ VERSION=${GITHUB_REF_NAME#v} # Strip the 'v' prefix if present
94
+ echo "Creating archive for version $VERSION"
95
+ zip -r compress-utils-python-${VERSION}.zip wheelhouse/
96
+ echo "RELEASE_VERSION=$VERSION" >> $GITHUB_ENV
97
+
98
+ - name: Publish to GitHub Release
99
+ uses: softprops/action-gh-release@v1
100
+ with:
101
+ files: |
102
+ compress-utils-python-${{ env.RELEASE_VERSION }}.zip
103
+ generate_release_notes: false
104
+ fail_on_unmatched_files: false
105
+ draft: false
106
+ tag_name: ${{ github.ref_name }}
107
+
108
+
109
+ - name: Publish to PyPI
110
+ uses: pypa/gh-action-pypi-publish@release/v1
111
+ with:
112
+ packages-dir: wheelhouse/
113
+ skip-existing: true
@@ -0,0 +1,37 @@
1
+ name: Build and Test for PR
2
+
3
+ on:
4
+ pull_request:
5
+ types: [opened, synchronize]
6
+ branches: [ "main" ]
7
+
8
+ jobs:
9
+ build_and_test:
10
+ runs-on: ${{ matrix.os }}
11
+ strategy:
12
+ matrix:
13
+ os: [macos-latest, windows-latest, ubuntu-latest]
14
+
15
+ steps:
16
+ - name: Checkout Code
17
+ uses: actions/checkout@v4
18
+ with:
19
+ fetch-depth: 0
20
+ clean: true
21
+
22
+ - name: Configure CMake for All Language Bindings & All Compressors
23
+ run: |
24
+ mkdir build
25
+ cd build
26
+ cmake .. -DCMAKE_BUILD_TYPE=Release
27
+
28
+ - name: Build All Languages
29
+ run: cmake --build build --config Release -j 4
30
+
31
+ - name: Install Bindings
32
+ run: cmake --install build
33
+
34
+ - name: Test All Bindings & Compressors
35
+ run: |
36
+ cd build
37
+ ctest --output-on-failure -C Release
@@ -0,0 +1,34 @@
1
+ name: Attach Artifacts to Release
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ attach-unified-artifacts:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - name: Checkout Code
12
+ uses: actions/checkout@v4
13
+
14
+ - name: Download Unified C Artifact
15
+ uses: actions/download-artifact@v4
16
+ with:
17
+ name: compress-utils-c
18
+ path: ./dist
19
+
20
+ - name: Download Unified C++ Artifact
21
+ uses: actions/download-artifact@v4
22
+ with:
23
+ name: compress-utils-cpp
24
+ path: ./dist
25
+
26
+ - name: Attach Unified Artifacts to Release
27
+ env:
28
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
29
+ run: |
30
+ # Get the release ID of the current release
31
+ release_id=$(gh release view "${{ github.event.release.tag_name }}" --json id --jq '.id')
32
+
33
+ # Upload the artifacts to the release
34
+ gh release upload "$release_id" ./dist/compress-utils-c.zip ./dist/compress-utils-cpp.zip --clobber
@@ -0,0 +1,47 @@
1
+ # Prerequisites
2
+ *.d
3
+
4
+ # Compiled Object files
5
+ *.slo
6
+ *.lo
7
+ *.o
8
+ *.obj
9
+
10
+ # Precompiled Headers
11
+ *.gch
12
+ *.pch
13
+
14
+ # Compiled Dynamic libraries
15
+ *.so
16
+ *.dylib
17
+ *.dll
18
+
19
+ # Fortran module files
20
+ *.mod
21
+ *.smod
22
+
23
+ # Compiled Static libraries
24
+ *.lai
25
+ *.la
26
+ *.a
27
+ *.lib
28
+
29
+ # Executables
30
+ *.exe
31
+ *.out
32
+ *.app
33
+
34
+ # Output files
35
+ build/
36
+ dist/
37
+ algorithms/dist/
38
+ algorithms/*/src/
39
+ algorithms/*/build/
40
+ algorithms/*/dist/
41
+
42
+ # Python
43
+ __pycache__/
44
+ .pytest_cache/
45
+
46
+ # MacOS
47
+ .DS_Store
@@ -0,0 +1,27 @@
1
+ {
2
+ "configurations": [
3
+ {
4
+ "name": "compress-utils",
5
+ "includePath": [
6
+ "${workspaceFolder}/src",
7
+ "${workspaceFolder}/algorithms/dist/include",
8
+ "${workspaceFolder}/build/external/CUnit/include",
9
+ "/usr/local/include"
10
+ ],
11
+ "defines": [
12
+ "INCLUDE_BROTLI",
13
+ "INCLUDE_XZ",
14
+ "INCLUDE_ZLIB",
15
+ "INCLUDE_ZSTD"
16
+ ],
17
+ "macFrameworkPath": [
18
+ "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"
19
+ ],
20
+ "compilerPath": "/usr/bin/clang++",
21
+ "cStandard": "c17",
22
+ "cppStandard": "c++20",
23
+ "intelliSenseMode": "macos-clang-arm64"
24
+ }
25
+ ],
26
+ "version": 4
27
+ }
@@ -0,0 +1,81 @@
1
+ {
2
+ "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
3
+ "C_Cpp.codeAnalysis.clangTidy.enabled": true,
4
+ "C_Cpp.codeAnalysis.runAutomatically": true,
5
+ "C_Cpp.codeAnalysis.exclude": {
6
+ "build/**": true,
7
+ "build": true,
8
+ "algorithms/**": true,
9
+ "algorithms": true
10
+ },
11
+ "editor.formatOnSave": true,
12
+ "files.associations": {
13
+ "vector": "cpp",
14
+ "__bit_reference": "cpp",
15
+ "__hash_table": "cpp",
16
+ "__locale": "cpp",
17
+ "__node_handle": "cpp",
18
+ "__split_buffer": "cpp",
19
+ "__threading_support": "cpp",
20
+ "__verbose_abort": "cpp",
21
+ "array": "cpp",
22
+ "bitset": "cpp",
23
+ "cctype": "cpp",
24
+ "charconv": "cpp",
25
+ "clocale": "cpp",
26
+ "cmath": "cpp",
27
+ "complex": "cpp",
28
+ "cstdarg": "cpp",
29
+ "cstddef": "cpp",
30
+ "cstdint": "cpp",
31
+ "cstdio": "cpp",
32
+ "cstdlib": "cpp",
33
+ "cstring": "cpp",
34
+ "ctime": "cpp",
35
+ "cwchar": "cpp",
36
+ "cwctype": "cpp",
37
+ "deque": "cpp",
38
+ "execution": "cpp",
39
+ "memory": "cpp",
40
+ "forward_list": "cpp",
41
+ "fstream": "cpp",
42
+ "initializer_list": "cpp",
43
+ "iomanip": "cpp",
44
+ "ios": "cpp",
45
+ "iosfwd": "cpp",
46
+ "iostream": "cpp",
47
+ "istream": "cpp",
48
+ "limits": "cpp",
49
+ "locale": "cpp",
50
+ "mutex": "cpp",
51
+ "new": "cpp",
52
+ "optional": "cpp",
53
+ "ostream": "cpp",
54
+ "print": "cpp",
55
+ "queue": "cpp",
56
+ "ratio": "cpp",
57
+ "sstream": "cpp",
58
+ "stack": "cpp",
59
+ "stdexcept": "cpp",
60
+ "streambuf": "cpp",
61
+ "string": "cpp",
62
+ "string_view": "cpp",
63
+ "tuple": "cpp",
64
+ "typeindex": "cpp",
65
+ "typeinfo": "cpp",
66
+ "unordered_map": "cpp",
67
+ "unordered_set": "cpp",
68
+ "variant": "cpp",
69
+ "algorithm": "cpp",
70
+ "__tree": "cpp",
71
+ "any": "cpp",
72
+ "cinttypes": "cpp",
73
+ "condition_variable": "cpp",
74
+ "map": "cpp",
75
+ "set": "cpp",
76
+ "span": "cpp",
77
+ "csignal": "cpp",
78
+ "list": "cpp"
79
+ },
80
+ "C_Cpp.errorSquiggles": "disabled"
81
+ }
@@ -0,0 +1,27 @@
1
+ # Acknowledgements
2
+
3
+ This project would not be possible without the remarkable work of other engineers in the data compression space. `compress-utils` incorporates such code from the following third-party projects:
4
+
5
+ ## Brotli
6
+
7
+ - **Repository**: https://github.com/google/brotli.git
8
+ - **License**: MIT License
9
+ - **Authors**: Google and contributors
10
+
11
+ ## zlib
12
+
13
+ - **Repository**: https://github.com/madler/zlib
14
+ - **License**: zlib License
15
+ - **Authors**: Jean-loup Gailly, Mark Adler and contributors
16
+
17
+ ## Zstandard (zstd)
18
+
19
+ - **Repository**: https://github.com/facebook/zstd
20
+ - **License**: BSD 3-Clause License
21
+ - **Authors**: Yann Collet and contributors
22
+
23
+ ## XZ Utils
24
+
25
+ - **Repository**: https://github.com/tukaani-project/xz
26
+ - **License**: BSD 0-Clause License
27
+ - **Authors**: Lasse Collin, Tukaani and contributors