├── .github ├── FUNDING.yml └── workflows │ ├── release.yml │ ├── sonar.yml │ ├── build.yml │ └── docs.yml ├── docs ├── example.png ├── octicons │ ├── check-circle-fill-16.svg │ ├── info-16.svg │ ├── check-circle-16.svg │ ├── alert-16.svg │ ├── stop-16.svg │ ├── trash-16.svg │ ├── checkbox-16.svg │ ├── report-16.svg │ ├── eye-16.svg │ ├── light-bulb-16.svg │ └── bug-16.svg ├── footer.html ├── icon.svg ├── logo.svg ├── exceptions4c.css ├── doxygen-awesome-sidebar-only.css ├── exceptions4c.svg ├── Doxyfile └── README.md ├── exceptions4c.pc.in ├── .editorconfig ├── clib.json ├── .codecov.yml ├── NOTICE ├── sonar-project.properties ├── .gitattributes ├── tests ├── throw-uncaught-1.c ├── panic-dangling.c ├── throw-uncaught-2.c ├── panic-try.c ├── handler-terminate.c ├── throw-format.c ├── catch-duplicate.c ├── panic-retry.c ├── panic-reacquire.c ├── handler-uncaught.c ├── catch-unordered.c ├── catch-all.c ├── catch-sigint.c ├── catch-sigterm.c ├── panic-context.c ├── handler-finalize.c ├── handler-initialize.c ├── panic-block-try.c ├── panic-block-next.c ├── retry.c ├── panic-block-catch.c ├── catch-sigsegv.c ├── is-uncaught.c ├── catch-specific.c ├── get-exception.c ├── reacquire.c ├── throw-cause.c ├── throw-suppressed.c ├── catch-generic.c ├── finally.c ├── with-use.c └── testing.h ├── examples ├── uncaught-handler.c ├── signals.c ├── pthreads.c ├── customization.c └── pet-store.c ├── configure.ac ├── README.md ├── .gitignore ├── CHANGELOG.md ├── Makefile.am ├── LICENSE └── src └── exceptions4c.c /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | 2 | github: LeakyAbstractions 3 | ko_fi: guillermocalvo 4 | -------------------------------------------------------------------------------- /docs/example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guillermocalvo/exceptions4c/HEAD/docs/example.png -------------------------------------------------------------------------------- /exceptions4c.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=${prefix}/include 5 | 6 | Name: exceptions4c 7 | Description: Exceptions for C 8 | Version: @VERSION@ 9 | Libs: -L${libdir} -llibexceptions4c 10 | Cflags: -I${includedir} 11 | -------------------------------------------------------------------------------- /docs/octicons/check-circle-fill-16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org/ 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | end_of_line = lf 8 | indent_style = space 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | max_line_length = 120 12 | 13 | [*.md] 14 | # Preserve trailing whitespace for Markdown files 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /clib.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "exceptions4c", 3 | "version": "4.0.0", 4 | "description": "Exceptions for C", 5 | "repo": "guillermocalvo/exceptions4c", 6 | "license": "Apache-2.0", 7 | "src": [ 8 | "src/exceptions4c.c", 9 | "src/exceptions4c.h" 10 | ], 11 | "keywords": [ 12 | "exceptions", 13 | "error-handling" 14 | ] 15 | } -------------------------------------------------------------------------------- /docs/octicons/info-16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/octicons/check-circle-16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/octicons/alert-16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/octicons/stop-16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/octicons/trash-16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/octicons/checkbox-16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.codecov.yml: -------------------------------------------------------------------------------- 1 | 2 | codecov: 3 | notify: 4 | require_ci_to_pass: yes 5 | 6 | coverage: 7 | precision: 4 8 | round: down 9 | range: "80...98" 10 | status: 11 | project: yes 12 | patch: yes 13 | changes: no 14 | 15 | parsers: 16 | gcov: 17 | branch_detection: 18 | conditional: yes 19 | loop: yes 20 | method: no 21 | macro: no 22 | 23 | comment: 24 | layout: "header, diff" 25 | behavior: default 26 | require_changes: no 27 | 28 | ignore: 29 | - "tests/*" 30 | - "examples/*" 31 | -------------------------------------------------------------------------------- /docs/octicons/report-16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Copyright 2025 Guillermo Calvo 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /sonar-project.properties: -------------------------------------------------------------------------------- 1 | sonar.projectKey=guillermocalvo_exceptions4c 2 | sonar.organization=guillermocalvo 3 | sonar.projectName=exceptions4c 4 | sonar.projectVersion=4.0.0 5 | sonar.description=Exceptions for C 6 | sonar.links.homepage=https://exceptions4c.guillermo.dev/ 7 | sonar.links.scm=https://github.com/guillermocalvo/exceptions4c 8 | sonar.links.ci=https://github.com/guillermocalvo/exceptions4c/actions 9 | sonar.links.issue=https://github.com/guillermocalvo/exceptions4c/issues 10 | sonar.sourceEncoding=UTF-8 11 | sonar.sources=src,tests,examples 12 | sonar.exclusions=examples/pthreads.c,examples/customization.c 13 | #sonar.inclusions= 14 | #sonar.tests= 15 | #sonar.test.exclusions= 16 | #sonar.test.inclusions= 17 | sonar.verbose=true 18 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set the default behavior that will override individual core.autocrlf setting 2 | * text eol=lf 3 | 4 | # Text files that will always be normalized on checkout 5 | *.config text 6 | *.editorconfig text 7 | *.gradle text 8 | *.groovy text 9 | *.java text 10 | *.js text 11 | *.json text 12 | *.md text 13 | *.properties text 14 | *.py text 15 | *.sh text 16 | *.sql text 17 | *.toml text 18 | *.txt text 19 | *.xml text 20 | *.yml text 21 | *.yaml text 22 | *.Jenkinsfile text 23 | 24 | # Files that will always have CRLF line endings on checkout 25 | *.bat text eol=crlf 26 | 27 | # Files that are truly binary and should not be modified on checkout 28 | *.bin binary 29 | *.class binary 30 | *.jar binary 31 | *.png binary 32 | *.mp3 binary 33 | -------------------------------------------------------------------------------- /docs/octicons/eye-16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/octicons/light-bulb-16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | 2 | # Publish a new Release 3 | name: Release 4 | 5 | on: 6 | push: 7 | tags: ['[0-9]+.[0-9]+.[0-9]+*'] 8 | 9 | jobs: 10 | publish: 11 | 12 | name: Publish 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | 17 | # ================================ 18 | # CHECKOUT 19 | # ================================ 20 | - name: Checkout git tag 21 | uses: actions/checkout@v4 22 | 23 | # ================================ 24 | # CREATE RELEASE 25 | # ================================ 26 | - name: Create Release 27 | uses: softprops/action-gh-release@v2 28 | with: 29 | preserve_order: true 30 | files: | 31 | src/exceptions4c.h 32 | src/exceptions4c.c 33 | LICENSE 34 | NOTICE 35 | CHANGELOG.md 36 | -------------------------------------------------------------------------------- /docs/footer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
10 | 11 | 12 |