diff options
193 files changed, 2752 insertions, 3972 deletions
diff --git a/.clang-format b/.clang-format index 2ded658..c40ad9c 100644 --- a/.clang-format +++ b/.clang-format @@ -1,34 +1,38 @@ +# Copyright 2020-2024 David Robillard <d@drobilla.net> +# SPDX-License-Identifier: 0BSD OR ISC + --- AlignConsecutiveAssignments: true AlignConsecutiveDeclarations: true -AlignEscapedNewlinesLeft: true +AlignEscapedNewlines: Left +AttributeMacros: + - LV2_DEPRECATED + - LV2_SYMBOL_EXPORT BasedOnStyle: Mozilla BraceWrapping: - AfterNamespace: false AfterClass: true AfterEnum: false AfterExternBlock: false AfterFunction: true + AfterNamespace: false AfterStruct: false SplitEmptyFunction: false SplitEmptyRecord: false BreakBeforeBraces: Custom Cpp11BracedListStyle: true +ForEachMacros: + - LV2_ATOM_OBJECT_BODY_FOREACH + - LV2_ATOM_OBJECT_FOREACH + - LV2_ATOM_SEQUENCE_BODY_FOREACH + - LV2_ATOM_SEQUENCE_FOREACH + - LV2_ATOM_TUPLE_BODY_FOREACH + - LV2_ATOM_TUPLE_FOREACH IndentCaseLabels: false IndentPPDirectives: AfterHash KeepEmptyLinesAtTheStartOfBlocks: false SpacesInContainerLiterals: false StatementMacros: - - LV2_DEPRECATED - LV2_DISABLE_DEPRECATION_WARNINGS - LV2_RESTORE_WARNINGS - - LV2_SYMBOL_EXPORT - _Pragma -ForEachMacros: - - LV2_ATOM_OBJECT_BODY_FOREACH - - LV2_ATOM_OBJECT_FOREACH - - LV2_ATOM_SEQUENCE_BODY_FOREACH - - LV2_ATOM_SEQUENCE_FOREACH - - LV2_ATOM_TUPLE_BODY_FOREACH - - LV2_ATOM_TUPLE_FOREACH ... diff --git a/.clang-tidy b/.clang-tidy index 342cf5a..013eda7 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,27 +1,25 @@ +# Copyright 2020-2025 David Robillard <d@drobilla.net> +# SPDX-License-Identifier: 0BSD OR ISC + Checks: > *, - -*-else-after-return, + -*-macro-to-enum, -*-magic-numbers, - -*-uppercase-literal-suffix, -altera-*, + -bugprone-assignment-in-if-condition, -bugprone-easily-swappable-parameters, -bugprone-macro-parentheses, - -bugprone-suspicious-include, - -bugprone-suspicious-string-compare, - -cert-err33-c, - -clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling, - -clang-diagnostic-empty-translation-unit, -clang-diagnostic-unused-function, -clang-diagnostic-unused-macros, - -hicpp-signed-bitwise, - -llvm-header-guard, -llvmlibc-*, - -misc-unused-parameters, - -modernize-redundant-void-arg, - -modernize-use-trailing-return-type, + -misc-include-cleaner, -performance-no-int-to-ptr, - -readability-function-cognitive-complexity, -readability-identifier-length, -WarningsAsErrors: '*' -HeaderFilterRegex: '.*' +CheckOptions: + - key: hicpp-uppercase-literal-suffix.NewSuffixes + value: L;U;f + - key: readability-uppercase-literal-suffix.NewSuffixes + value: L;U;f FormatStyle: file +HeaderFilterRegex: 'lv2/.*\.h' +WarningsAsErrors: '*' diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 0000000..6f45828 --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,5 @@ +# Copyright 2025 David Robillard <d@drobilla.net> +# SPDX-License-Identifier: 0BSD OR ISC + +# Format all code with clang-format +882b9446cbf7316345de391188e68c2a7333da5b @@ -1,9 +1,15 @@ +# Copyright 2016-2021 David Robillard <d@drobilla.net> +# Copyright 2016 Robin Gareus <robin@gareus.org> +# SPDX-License-Identifier: 0BSD OR ISC + # generated files and folders /build *.pyc -NEWS # misc editor/tools *.swp cscope.* tags + +# cached files when used as a meson subproject +.meson-subproject-wrap-hash.txt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 92ff3ef..a67a043 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,165 +1,141 @@ -arm32_dbg: - image: lv2plugin/debian-arm32 - script: - - meson setup build --cross-file=/usr/share/meson/cross/arm-linux-gnueabihf.ini -Dbuildtype=debug -Dstrict=true -Dwerror=true -Ddocs=disabled - - ninja -C build test - -arm32_rel: - image: lv2plugin/debian-arm32 - script: - - meson setup build --cross-file=/usr/share/meson/cross/arm-linux-gnueabihf.ini -Dbuildtype=release -Dstrict=true -Dwerror=true -Ddocs=disabled - - ninja -C build test - - -arm64_dbg: - image: lv2plugin/debian-arm64 - script: - - meson setup build --cross-file=/usr/share/meson/cross/aarch64-linux-gnu.ini -Dbuildtype=debug -Dstrict=true -Dwerror=true -Ddocs=disabled - - ninja -C build test - -arm64_rel: - image: lv2plugin/debian-arm64 - script: - - meson setup build --cross-file=/usr/share/meson/cross/aarch64-linux-gnu.ini -Dbuildtype=release -Dstrict=true -Dwerror=true -Ddocs=disabled - - ninja -C build test - +# Copyright 2018-2023 David Robillard <d@drobilla.net> +# SPDX-License-Identifier: 0BSD OR ISC -x32_dbg: - image: lv2plugin/debian-x32 - script: - - meson setup build --cross-file=/usr/share/meson/cross/i686-linux-gnu.ini -Dbuildtype=debug -Dstrict=true -Dwerror=true -Ddocs=disabled - - ninja -C build test - -x32_rel: - image: lv2plugin/debian-x32 +default: + image: lv2plugin/debian-x64 script: - - meson setup build --cross-file=/usr/share/meson/cross/i686-linux-gnu.ini -Dbuildtype=release -Dstrict=true -Dwerror=true -Ddocs=disabled + - meson setup build -Dwerror=true - ninja -C build test - -x64_dbg: - image: lv2plugin/debian-x64 +dev: + image: lv2plugin/debian-x64-big script: - - meson setup build -Dbuildtype=debug -Dstrict=true -Dwerror=true -Db_coverage=true + - meson setup build -Dbuildtype=debug -Dwarning_level=3 -Dwerror=true -Db_coverage=true -Dlint=true - ninja -C build test - ninja -C build coverage-html + - meson configure -Dbuildtype=release -Db_coverage=false build + - ninja -C build test coverage: '/ *lines\.*: \d+\.\d+.*/' artifacts: paths: - build/meson-logs/coveragereport -x64_rel: +static: image: lv2plugin/debian-x64 script: - - meson setup build -Dbuildtype=release -Dstrict=true -Dwerror=true -Ddocs=disabled + - meson setup build -Ddefault_library=static -Dwarning_level=3 -Dwerror=true -Ddocs=disabled - ninja -C build test - -x64_static: - image: lv2plugin/debian-x64 - script: - - meson setup build -Ddefault_library=static -Dstrict=true -Dwerror=true -Ddocs=disabled - - ninja -C build test - - -x64_sanitize: +sanitize: image: lv2plugin/debian-x64-clang script: - - meson setup build -Db_lundef=false -Dbuildtype=plain -Dstrict=true -Dwerror=true -Ddocs=disabled + - meson setup build -Db_lundef=false -Dbuildtype=plain -Dwarning_level=3 -Dwerror=true -Ddocs=disabled - ninja -C build test variables: CC: "clang" CFLAGS: "-fno-sanitize-recover=all -fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=unsigned-integer-overflow -fsanitize=implicit-conversion -fsanitize=local-bounds -fsanitize=nullability" LDFLAGS: "-fno-sanitize-recover=all -fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=unsigned-integer-overflow -fsanitize=implicit-conversion -fsanitize=local-bounds -fsanitize=nullability" +# Linux Distributions -freebsd_dbg: - tags: [freebsd,meson] +fedora: + image: lv2plugin/fedora-big script: - - meson setup build -Dbuildtype=debug -Dstrict=true -Dwerror=true -Ddocs=disabled + - meson setup build -Dbuildtype=plain -Dwarning_level=3 -Ddocs=enabled -Dwerror=true - ninja -C build test + variables: + CFLAGS: -O2 -D_FORTIFY_SOURCE=2 + artifacts: + paths: + - build/doc -freebsd_rel: - tags: [freebsd,meson] +# Linux Platforms + +arm32: + image: lv2plugin/debian-arm32 script: - - meson setup build -Dbuildtype=release -Dstrict=true -Dwerror=true -Ddocs=disabled + - meson setup build --cross-file=/usr/share/meson/cross/arm-linux-gnueabihf.ini -Dbuildtype=debug -Dwarning_level=3 -Dwerror=true -Ddocs=disabled + - ninja -C build test + - meson configure -Dbuildtype=release build - ninja -C build test - -mingw32_dbg: - image: lv2plugin/debian-mingw32 +arm64: + image: lv2plugin/debian-arm64 script: - - meson setup build --cross-file=/usr/share/meson/cross/i686-w64-mingw32.ini -Dbuildtype=debug -Dstrict=true -Dwerror=true -Ddocs=disabled + - meson setup build --cross-file=/usr/share/meson/cross/aarch64-linux-gnu.ini -Dbuildtype=debug -Dwarning_level=3 -Dwerror=true -Ddocs=disabled + - ninja -C build test + - meson configure -Dbuildtype=release build - ninja -C build test -mingw32_rel: +mingw32: image: lv2plugin/debian-mingw32 script: - - meson setup build --cross-file=/usr/share/meson/cross/i686-w64-mingw32.ini -Dbuildtype=release -Dstrict=true -Dwerror=true -Ddocs=disabled + - meson setup build --cross-file=/usr/share/meson/cross/i686-w64-mingw32.ini -Dbuildtype=debug -Dwarning_level=everything -Dwerror=true -Ddocs=disabled - ninja -C build test - - -mingw64_dbg: - image: lv2plugin/debian-mingw64 - script: - - meson setup build --cross-file=/usr/share/meson/cross/x86_64-w64-mingw32.ini -Dbuildtype=debug -Dstrict=true -Dwerror=true -Ddocs=disabled + - meson configure -Dbuildtype=release build - ninja -C build test -mingw64_rel: +mingw64: image: lv2plugin/debian-mingw64 script: - - meson setup build --cross-file=/usr/share/meson/cross/x86_64-w64-mingw32.ini -Dbuildtype=release -Dstrict=true -Dwerror=true -Ddocs=disabled + - meson setup build --cross-file=/usr/share/meson/cross/x86_64-w64-mingw32.ini -Dbuildtype=debug -Dwarning_level=3 -Dwerror=true -Ddocs=disabled + - ninja -C build test + - meson configure -Dbuildtype=release build - ninja -C build test - -mac_dbg: - tags: [macos] +wasm: + image: lv2plugin/debian-wasm script: - - meson setup build -Dbuildtype=debug -Dstrict=true -Dwerror=true + - meson setup build --cross-file=/usr/share/meson/cross/wasm.ini -Dbuildtype=debug -Dwarning_level=3 -Dwerror=true -Ddefault_library=static -Ddocs=disabled -Dplugins=disabled + - ninja -C build test + - meson configure -Dbuildtype=release build - ninja -C build test -mac_rel: - tags: [macos] +x32: + image: lv2plugin/debian-x32 script: - - meson setup build -Dbuildtype=release -Dstrict=true -Dwerror=true + - meson setup build --cross-file=/usr/share/meson/cross/i686-linux-gnu.ini -Dbuildtype=debug -Dwarning_level=3 -Dwerror=true -Ddocs=disabled + - ninja -C build test + - meson configure -Dbuildtype=release build - ninja -C build test +# Non-Linux/Docker rows (not hosted) -win_dbg: - tags: [windows,meson] +freebsd: + tags: [freebsd,meson] script: - - meson setup build -Dbuildtype=debug -Dstrict=true -Dwerror=true -Ddocs=disabled + - meson setup build -Dbuildtype=debug -Dwarning_level=3 -Dwerror=true -Ddocs=disabled - ninja -C build test - -win_rel: - tags: [windows,meson] - script: - - meson setup build -Dbuildtype=release -Dstrict=true -Dwerror=true -Ddocs=disabled + - meson configure -Dbuildtype=release build - ninja -C build test - -wasm_dbg: - image: lv2plugin/debian-wasm +mac: + tags: [macos] script: - - meson setup build --cross-file=/usr/share/meson/cross/wasm.ini -Dbuildtype=debug -Dstrict=true -Dwerror=true -Ddefault_library=static -Ddocs=disabled -Dplugins=disabled + - meson setup build -Dbuildtype=debug -Dwarning_level=everything -Dwerror=true + - ninja -C build test + - meson configure -Dbuildtype=release build - ninja -C build test -wasm_rel: - image: lv2plugin/debian-wasm +win: + tags: [windows,meson] script: - - meson setup build --cross-file=/usr/share/meson/cross/wasm.ini -Dbuildtype=release -Dstrict=true -Dwerror=true -Ddefault_library=static -Ddocs=disabled -Dplugins=disabled + - meson setup build -Dbuildtype=debug -Dwarning_level=everything -Dwerror=true -Ddocs=disabled + - ninja -C build test + - meson configure -Dbuildtype=release build - ninja -C build test +# Documentation pages: stage: deploy script: - mkdir -p public - mv build/meson-logs/coveragereport/ public/coverage - dependencies: - - x64_dbg + needs: + - dev artifacts: paths: - public only: - - master + - main diff --git a/.reuse/dep5 b/.reuse/dep5 new file mode 100644 index 0000000..78cd3aa --- /dev/null +++ b/.reuse/dep5 @@ -0,0 +1,72 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: lv2 +Upstream-Contact: David Robillard <d@drobilla.net> +Source: https://gitlab.com/lv2/lv2 + +Files: .stylelintrc.json doc/htaccess.in +Copyright: 2011-2022 David Robillard <d@drobilla.net> +Comment: Contributed to the Commons as a tool configuration +License: 0BSD OR ISC + +Files: NEWS +Copyright: 2011-2022 David Robillard <d@drobilla.net> +Comment: Contributed to the Commons as a representation of simple facts +License: 0BSD OR ISC + +Files: **/manifest.ttl +Copyright: Copyright 2015 David Robillard <d@drobilla.net> +Comment: Contributed to the Commons as a representation of simple facts +License: 0BSD OR ISC + +Files: doc/c/mainpage.md doc/*.css doc/c/layout.xml doc/c/reference.doxygen.in +Copyright: Copyright 2020-2022 David Robillard <d@drobilla.net> +License: ISC + +Files: **/README.txt doc/index.html.in doc/c/*.html lv2specgen/template.html resources/logo/* +Copyright: Copyright 2010-2022 David Robillard <d@drobilla.net> +License: ISC + +Files: plugins/eg-sampler.lv2/click.wav +Copyright: Copyright 2012 David Robillard <d@drobilla.net> +License: ISC + +Files: lv2/**/*.ttl plugins/**/*.ttl plugins/**/*.ttl.in schemas.lv2/xsd.ttl +Copyright: Copyright 2011-2022 David Robillard <d@drobilla.net> +Copyright: Copyright 2013 Robin Gareus <robin@gareus.org> +Copyright: Copyright 2006 Steve Harris <steve@plugin.org.uk> +License: ISC + +Files: lv2specgen/DTD/* +Copyright: Copyright 1994-2001 World Wide Web Consortium +Comment: DTDs from the W3C for documentation validation tests +License: W3C-19980720 + +Files: schemas.lv2/xsd.ttl +Copyright: Copyright 2015-2021 David Robillard <d@drobilla.net> +License: 0BSD OR ISC + +Files: schemas.lv2/doap.ttl +Copyright: Copyright 2004-2016 Edd Dumbill <edd@usefulinc.com> +Copyright: Copyright 2016-2017 Edd Wilder-James <edd@ewj.me> +License: Apache-2.0 + +Files: schemas.lv2/foaf.ttl +Copyright: Copyright 2000-2014 Dan Brickley <danbri@danbri.org> +Copyright: Copyright 2000-2014 Libby Miller <libby@nicecupoftea.org> +License: CC-BY-1.0 + +Files: schemas.lv2/rdf.ttl +Copyright: Copyright 1997-1999 W3C +License: W3C-20150513 + +Files: schemas.lv2/rdfs.ttl +Copyright: Copyright 2004-2014 W3C +License: W3C-20150513 + +Files: schemas.lv2/owl.ttl +Copyright: Copyright 2006 W3C +License: W3C-20150513 + +Files: schemas.lv2/dcterms.ttl +Copyright: Copyright 1995-2022 DCMI +License: CC-BY-4.0 @@ -1,16 +1,14 @@ Copyright 2006-2012 Steve Harris, David Robillard. - -Based on LADSPA, Copyright 2000-2002 Richard W.E. Furse, -Paul Barton-Davis, Stefan Westerfeld. +Copyright 2000-2002 Richard W.E. Furse, Paul Barton-Davis, Stefan Westerfeld. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. -THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. @@ -1,3 +1,6 @@ +<!-- Copyright 2011-2022 David Robillard <d@drobilla.net> --> +<!-- SPDX-License-Identifier: ISC --> + Installation Instructions ========================= @@ -41,6 +44,10 @@ Options can be set by passing C-style "define" options to `configure`: meson configure -Dc_args="-march=native" -Dprefix="/opt/mypackage/" +Note that some options, such as `strict` and `werror` are for +developer/maintainer use only. Please don't file issues about anything that +happens when they are enabled. + Building -------- diff --git a/LICENSES/0BSD.txt b/LICENSES/0BSD.txt new file mode 100644 index 0000000..b3e8cfd --- /dev/null +++ b/LICENSES/0BSD.txt @@ -0,0 +1,12 @@ +Copyright 2011-2022 David Robillard <d@drobilla.net> + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. diff --git a/LICENSES/Apache-2.0.txt b/LICENSES/Apache-2.0.txt new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSES/Apache-2.0.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/LICENSES/CC-BY-1.0.txt b/LICENSES/CC-BY-1.0.txt new file mode 100644 index 0000000..5081bc9 --- /dev/null +++ b/LICENSES/CC-BY-1.0.txt @@ -0,0 +1,221 @@ +Creative Commons Attribution 1.0 + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL + SERVICES. DISTRIBUTION OF THIS DRAFT LICENSE DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN + "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION + PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE +COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY +COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS +AUTHORIZED UNDER THIS LICENSE IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE +BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS +CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND +CONDITIONS. + +1. Definitions + + a. "Collective Work" means a work, such as a periodical issue, anthology or + encyclopedia, in which the Work in its entirety in unmodified form, along + with a number of other contributions, constituting separate and + independent works in themselves, are assembled into a collective whole. A + work that constitutes a Collective Work will not be considered a + Derivative Work (as defined below) for the purposes of this License. + + b. "Derivative Work" means a work based upon the Work or upon the Work and + other pre-existing works, such as a translation, musical arrangement, + dramatization, fictionalization, motion picture version, sound recording, + art reproduction, abridgment, condensation, or any other form in which + the Work may be recast, transformed, or adapted, except that a work that + constitutes a Collective Work will not be considered a Derivative Work + for the purpose of this License. + + c. "Licensor" means the individual or entity that offers the Work under the + terms of this License. + + d. "Original Author" means the individual or entity who created the Work. + + e. "Work" means the copyrightable work of authorship offered under the terms + of this License. + + f. "You" means an individual or entity exercising rights under this License + who has not previously violated the terms of this License with respect to + the Work, or who has received express permission from the Licensor to + exercise rights under this License despite a previous violation. + +2. Fair Use Rights + +Nothing in this license is intended to reduce, limit, or restrict any rights +arising from fair use, first sale or other limitations on the exclusive rights +of the copyright owner under copyright law or other applicable laws. + +3. License Grant + +Subject to the terms and conditions of this License, Licensor hereby grants You +a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the +applicable copyright) license to exercise the rights in the Work as stated +below: + + a. to reproduce the Work, to incorporate the Work into one or more Collective + Works, and to reproduce the Work as incorporated in the Collective Works; + + b. to create and reproduce Derivative Works; + + c. to distribute copies or phonorecords of, display publicly, perform + publicly, and perform publicly by means of a digital audio transmission + the Work including as incorporated in Collective Works; + + d. to distribute copies or phonorecords of, display publicly, perform + publicly, and perform publicly by means of a digital audio transmission + Derivative Works; + +The above rights may be exercised in all media and formats whether now known or +hereafter devised. The above rights include the right to make such +modifications as are technically necessary to exercise the rights in other +media and formats. All rights not expressly granted by Licensor are hereby +reserved. + +4. Restrictions + +The license granted in Section 3 above is expressly made subject to and limited +by the following restrictions: + + a. You may distribute, publicly display, publicly perform, or publicly + digitally perform the Work only under the terms of this License, and You + must include a copy of, or the Uniform Resource Identifier for, this + License with every copy or phonorecord of the Work You distribute, + publicly display, publicly perform, or publicly digitally perform. You may + not offer or impose any terms on the Work that alter or restrict the terms + of this License or the recipients' exercise of the rights granted + hereunder. You may not sublicense the Work. You must keep intact all + notices that refer to this License and to the disclaimer of + warranties. You may not distribute, publicly display, publicly perform, or + publicly digitally perform the Work with any technological measures that + control access or use of the Work in a manner inconsistent with the terms + of this License Agreement. The above applies to the Work as incorporated + in a Collective Work, but this does not require the Collective Work apart + from the Work itself to be made subject to the terms of this License. If + You create a Collective Work, upon notice from any Licensor You must, to + the extent practicable, remove from the Collective Work any reference to + such Licensor or the Original Author, as requested. If You create a + Derivative Work, upon notice from any Licensor You must, to the extent + practicable, remove from the Derivative Work any reference to such + Licensor or the Original Author, as requested. + + b. If you distribute, publicly display, publicly perform, or publicly + digitally perform the Work or any Derivative Works or Collective Works, + You must keep intact all copyright notices for the Work and give the + Original Author credit reasonable to the medium or means You are utilizing + by conveying the name (or pseudonym if applicable) of the Original Author + if supplied; the title of the Work if supplied; in the case of a + Derivative Work, a credit identifying the use of the Work in the + Derivative Work (e.g., "French translation of the Work by Original + Author," or "Screenplay based on original Work by Original Author"). Such + credit may be implemented in any reasonable manner; provided, however, + that in the case of a Derivative Work or Collective Work, at a minimum + such credit will appear where any other comparable authorship credit + appears and in a manner at least as prominent as such other comparable + authorship credit. + +5. Representations, Warranties and Disclaimer + + a. By offering the Work for public release under this License, Licensor + represents and warrants that, to the best of Licensor's knowledge after + reasonable inquiry: + + i. Licensor has secured all rights in the Work necessary to grant the + license rights hereunder and to permit the lawful exercise of the + rights granted hereunder without You having any obligation to pay + any royalties, compulsory license fees, residuals or any other + payments; + + ii. The Work does not infringe the copyright, trademark, publicity + rights, common law rights or any other right of any third party or + constitute defamation, invasion of privacy or other tortious injury + to any third party. + + b. EXCEPT AS EXPRESSLY STATED IN THIS LICENSE OR OTHERWISE AGREED IN WRITING + OR REQUIRED BY APPLICABLE LAW, THE WORK IS LICENSED ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, + WITHOUT LIMITATION, ANY WARRANTIES REGARDING THE CONTENTS OR ACCURACY OF + THE WORK. + +6. Limitation on Liability + +EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, AND EXCEPT FOR DAMAGES ARISING +FROM LIABILITY TO A THIRD PARTY RESULTING FROM BREACH OF THE WARRANTIES IN +SECTION 5, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR +ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING +OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED +OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate automatically + upon any breach by You of the terms of this License. Individuals or + entities who have received Derivative Works or Collective Works from You + under this License, however, will not have their licenses terminated + provided such individuals or entities remain in full compliance with those + licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of + this License. + + b. Subject to the above terms and conditions, the license granted here is + perpetual (for the duration of the applicable copyright in the + Work). Notwithstanding the above, Licensor reserves the right to release + the Work under different license terms or to stop distributing the Work at + any time; provided, however that any such election will not serve to + withdraw this License (or any other license that has been, or is required + to be, granted under the terms of this License), and this License will + continue in full force and effect unless terminated as stated above. + +8. Miscellaneous + + a. Each time You distribute or publicly digitally perform the Work or a + Collective Work, the Licensor offers to the recipient a license to the + Work on the same terms and conditions as the license granted to You under + this License. + + b. Each time You distribute or publicly digitally perform a Derivative Work, + Licensor offers to the recipient a license to the original Work on the + same terms and conditions as the license granted to You under this + License. + + c. If any provision of this License is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of the + remainder of the terms of this License, and without further action by the + parties to this agreement, such provision shall be reformed to the minimum + extent necessary to make such provision valid and enforceable. + + d. No term or provision of this License shall be deemed waived and no breach + consented to unless such waiver or consent shall be in writing and signed + by the party to be charged with such waiver or consent. + + e. This License constitutes the entire agreement between the parties with + respect to the Work licensed here. There are no understandings, agreements + or representations with respect to the Work not specified here. Licensor + shall not be bound by any additional provisions that may appear in any + communication from You. This License may not be modified without the + mutual written agreement of the Licensor and You. + +Creative Commons is not a party to this License, and makes no warranty +whatsoever in connection with the Work. Creative Commons will not be liable to +You or any party on any legal theory for any damages whatsoever, including +without limitation any general, special, incidental or consequential damages +arising in connection to this license. Notwithstanding the foregoing two (2) +sentences, if Creative Commons has expressly identified itself as the Licensor +hereunder, it shall have all rights and obligations of Licensor. + +Except for the limited purpose of indicating to the public that the Work is +licensed under the CCPL, neither party will use the trademark "Creative +Commons" or any related trademark or logo of Creative Commons without the prior +written consent of Creative Commons. Any permitted use will be in compliance +with Creative Commons' then-current trademark usage guidelines, as may be +published on its website or otherwise made available upon request from time to +time. + +Creative Commons may be contacted at http://creativecommons.org/. diff --git a/LICENSES/CC-BY-4.0.txt b/LICENSES/CC-BY-4.0.txt new file mode 100644 index 0000000..10fabd9 --- /dev/null +++ b/LICENSES/CC-BY-4.0.txt @@ -0,0 +1,395 @@ +Attribution 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution 4.0 International Public License ("Public License"). To the +extent this Public License may be interpreted as a contract, You are +granted the Licensed Rights in consideration of Your acceptance of +these terms and conditions, and the Licensor grants You such rights in +consideration of benefits the Licensor receives from making the +Licensed Material available under these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public licenses. +Notwithstanding, Creative Commons may elect to apply one of its public +licenses to material it publishes and in those instances will be +considered the “Licensor.” The text of the Creative Commons public +licenses is dedicated to the public domain under the CC0 Public Domain +Dedication. Except for the limited purpose of indicating that material +is shared under a Creative Commons public license or as otherwise +permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the public +licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/LICENSES/ISC.txt b/LICENSES/ISC.txt new file mode 120000 index 0000000..012065c --- /dev/null +++ b/LICENSES/ISC.txt @@ -0,0 +1 @@ +../COPYING
\ No newline at end of file diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt new file mode 100644 index 0000000..f85e365 --- /dev/null +++ b/LICENSES/MIT.txt @@ -0,0 +1,17 @@ +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/LICENSES/W3C-19980720.txt b/LICENSES/W3C-19980720.txt new file mode 100644 index 0000000..a1cda7e --- /dev/null +++ b/LICENSES/W3C-19980720.txt @@ -0,0 +1,45 @@ +W3C SOFTWARE NOTICE AND LICENSE + +Copyright (c) 1994-2002 World Wide Web Consortium, (Massachusetts Institute of +Technology, Institut National de Recherche en Informatique et en Automatique, +Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/ + +This W3C work (including software, documents, or other related items) is being +provided by the copyright holders under the following license. By obtaining, +using and/or copying this work, you (the licensee) agree that you have read, +understood, and will comply with the following terms and conditions: + +Permission to use, copy, modify, and distribute this software and its +documentation, with or without modification, for any purpose and without fee +or royalty is hereby granted, provided that you include the following on ALL +copies of the software and documentation or portions thereof, including +modifications, that you make: + + 1. The full text of this NOTICE in a location viewable to users of the + redistributed or derivative work. + + 2. Any pre-existing intellectual property disclaimers, notices, or terms and + conditions. If none exist, a short notice of the following form (hypertext + is preferred, text is permitted) should be used within the body of any + redistributed or derivative code: "Copyright © [$date-of-software] World + Wide Web Consortium, (Massachusetts Institute of Technology, Institut + National de Recherche en Informatique et en Automatique, Keio + University). All Rights Reserved. http://www.w3.org/Consortium/Legal/" + + 3. Notice of any changes or modifications to the W3C files, including the + date changes were made. (We recommend you provide URIs to the location + from which the code is derived.) + +THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE +NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT +THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY +PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. + +The name and trademarks of copyright holders may NOT be used in advertising or +publicity pertaining to the software without specific, written prior +permission. Title to copyright in this software and any associated +documentation will at all times remain with copyright holders. diff --git a/LICENSES/W3C-20150513.txt b/LICENSES/W3C-20150513.txt new file mode 100644 index 0000000..f58c363 --- /dev/null +++ b/LICENSES/W3C-20150513.txt @@ -0,0 +1,40 @@ +This work is being provided by the copyright holders under the following +license. + +License + +By obtaining and/or copying this work, you (the licensee) agree that you have +read, understood, and will comply with the following terms and conditions. + +Permission to copy, modify, and distribute this work, with or without +modification, for any purpose and without fee or royalty is hereby granted, +provided that you include the following on ALL copies of the work or portions +thereof, including modifications: + + * The full text of this NOTICE in a location viewable to users of the + redistributed or derivative work. + + * Any pre-existing intellectual property disclaimers, notices, or terms and + conditions. If none exist, the W3C Software and Document Short Notice + should be included. + + * Notice of any changes or modifications, through a copyright statement on + the new code or document such as "This software or document includes + material copied from or derived from [title and URI of the W3C + document]. Copyright (c) [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." + +Disclaimers + +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR +WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF +MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE +SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, +TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. + +The name and trademarks of copyright holders may NOT be used in advertising or +publicity pertaining to the work without specific, written prior +permission. Title to copyright in this work will at all times remain with +copyright holders. @@ -0,0 +1,278 @@ +lv2 (1.18.11) unstable; urgency=medium + + * Allow LV2_SYMBOL_EXPORT to be overridden + * Fix pylint warning in test script + * Override pkg-config dependency within meson + * Remove troublesome lv2_atom_assert_double_fits_in_64_bits + * ui: Add types for Gtk4UI and Qt6UI + + -- David Robillard <d@drobilla.net> Thu, 11 Jul 2024 23:58:50 +0000 + +lv2 (1.18.10) stable; urgency=medium + + * Fix includedir in pkg-config file + * Fix missing example plugin UI binaries + * Only install lv2specgen when required Python modules are found + * Replace change history data with a plain text NEWS file + + -- David Robillard <d@drobilla.net> Fri, 09 Sep 2022 17:26:51 +0000 + +lv2 (1.18.8) stable; urgency=medium + + * Fix documentation build with Python 3.7 + * Fix documentation build with meson 0.56.2 + * Fix lv2.h missing from installation + * eg-midigate: Fix output timing + * eg-sampler: Add resampling via libsamplerate + * eg-sampler: Fix potentially corrupt notification events + * lv2core: Fix inconsistent plugin class labels + * lv2specgen: Fix installed data paths + + -- David Robillard <d@drobilla.net> Fri, 12 Aug 2022 00:00:00 +0000 + +lv2 (1.18.6) stable; urgency=medium + + * Add dark mode style for documentation + * Clean up and modernize Python support code + * Fix or avoid new compiler and tool warnings + * Rearrange source tree to be directly usable by dependants + * Remove archaic properties from foaf vocabulary + * Replace canonical dcs ontology with a minimal version for LV2 + * Separate API headers from data + * Switch to Meson build system + + -- David Robillard <d@drobilla.net> Thu, 07 Jul 2022 00:00:00 +0000 + +lv2 (1.18.4) stable; urgency=medium + + * Fix build issues with newer toolchains + * Fix spelling errors + * atom: Fix spelling errors + * event: Fix spelling errors + * lv2core: Fix spelling errors + * patch: Fix spelling errors + * patch: Fix type and range of patch:value + * patch: Make the type of patch:wildcard more precise + * state: Fix spelling errors + * ui: Deprecate ui:resize + * ui: Fix spelling errors + + -- David Robillard <d@drobilla.net> Thu, 26 May 2022 00:00:00 +0000 + +lv2 (1.18.2) stable; urgency=medium + + * Various code cleanups and infrastructure improvements + * eg-sampler: Save and restore gain parameter value + * state: Fix state:StateChanged URI in metadata and documentation + + -- David Robillard <d@drobilla.net> Thu, 07 Jan 2021 00:00:00 +0000 + +lv2 (1.18.0) stable; urgency=medium + + * Improve documentation + * Separate extended documentation from primary data + * lv2core: Add lv2:Markdown datatype + * lv2core: Deprecate lv2:reportsLatency + * patch: Fix incorrect type of patch:sequenceNumber + * port-groups: Remove incorrect type of pg:letterCode + * port-groups: Replace broken links with detailed channel descriptions + * state: Add state:freePath feature + * ui: Add ui:requestValue feature + * ui: Add ui:scaleFactor, ui:foregroundColor, and ui:backgroundColor + * ui: Deprecate ui:binary + * worker: Improve documentation + + -- David Robillard <d@drobilla.net> Sun, 26 Apr 2020 00:00:00 +0000 + +lv2 (1.16.0) stable; urgency=medium + + * Add core/attributes.h utility header + * Add lv2_validate utility + * Aggressively deprecate uri-map and event extensions + * Install headers to simpler paths + * Simplify use of lv2specgen + * Upgrade build system and fix building with Python 3.7 + * atom: Add lv2_atom_object_get_typed() + * eg-midigate: Respond to "all notes off" MIDI message + * eg-sampler: Add waveform display to UI + * lv2core: Add lv2:MIDIPlugin class + * lv2core: Rework port restrictions so that presets can be validated + * midi: Fix incorrect range of midi:chunk + * options: Relax range of opts:requiredOption and opts:supportedOption + * patch: Add patch:accept property + * patch: Add patch:context property + * state: Add state:StateChanged for notification events + * time: Clarify time:beat origin + * units: Fix outdated port description in documentation + * units: Remove overly restrictive domain from units:unit + + -- David Robillard <d@drobilla.net> Sun, 03 Feb 2019 00:00:00 +0000 + +lv2 (1.14.0) stable; urgency=medium + + * buf-size: Add bufsz:coarseBlockLength feature + * buf-size: Add bufsz:nominalBlockLength option + * eg-sampler: Fix handling of state file paths + * eg-sampler: Support thread-safe state restoration + * eg-scope: Don't feed back UI state updates + * log: Add lv2_log_logger_set_map() + * lv2core: Add lv2:enabled designation + * lv2core: Add lv2_util.h with lv2_features_data() and lv2_features_query() + * state: Add LV2_STATE_ERR_NO_SPACE status flag + * state: Add state:threadSafeRestore feature + * time: Define LV2_TIME_PREFIX + * ui: Add missing property labels + * ui: Improve documentation + + -- David Robillard <d@drobilla.net> Mon, 19 Sep 2016 00:00:00 +0000 + +lv2 (1.12.0) stable; urgency=medium + + * Fix merging of version histories in specification documentation + * Improve API documentation + * Simplify property restrictions by removing redundancy + * eg-sampler: Add gain parameter + * eg-sampler: Support patch:Get, and request initial state from UI + * lv2core: Add extern C and visibility attribute to LV2_SYMBOL_EXPORT + * lv2core: Add lv2:isSideChain port property + * lv2core: Relax domain of lv2:minimum lv2:maximum and lv2:default + * parameters: Add range to parameters so hosts know how to control them + * patch: Add patch:Copy method + * patch: Define patch:Get with no subject to implicitly apply to receiver + * units: Add lv2:Parameter to domain of units:unit + * units: Fix non-existent port type in examples + + -- David Robillard <d@drobilla.net> Tue, 07 Apr 2015 00:00:00 +0000 + +lv2 (1.10.0) stable; urgency=medium + + * Fix -Wconversion warnings in headers + * Upgrade to waf 1.7.16 + * atom: Add lv2_atom_forge_is_object_type() and lv2_atom_forge_is_blank() + * atom: Add lv2_atom_forge_key() for terser object writing + * atom: Add lv2_atom_sequence_clear() and lv2_atom_sequence_append_event() + * atom: Deprecate Blank and Resource in favour of just Object + * event: Minor documentation improvements + * lv2core: Clarify lv2_descriptor() and lv2_lib_descriptor() documentation + * lv2specgen: Display deprecated warning on classes marked owl:deprecated + * patch: Add patch:sequenceNumber for associating replies with requests + * ui: Add show interface so UIs can gracefully degrade to separate windows + * ui: Fix identifier typos in documentation + + -- David Robillard <d@drobilla.net> Fri, 08 Aug 2014 00:00:00 +0000 + +lv2 (1.8.0) stable; urgency=medium + + * Add scope example plugin from Robin Gareus + * Install lv2specgen for use by other projects + * atom: Make lv2_atom_*_is_end() arguments const + * log: Add missing include string.h to logger.h for memset + * lv2core: Add lv2:prototype for property inheritance + * lv2specgen: Fix links to externally defined terms + * ui: Fix LV2_UI_INVALID_PORT_INDEX identifier in documentation + + -- David Robillard <d@drobilla.net> Sat, 04 Jan 2014 00:00:00 +0000 + +lv2 (1.6.0) stable; urgency=medium + + * Fix lv2specgen usage from command line + * Fix port indices of metronome example + * Upgrade to waf 1.7.11 + * atom: Fix crash in forge.h when pushing atoms to a full buffer + * ui: Add idle interface for native UIs and foreign toolkits + * ui: Add ui:updateRate property + + -- David Robillard <d@drobilla.net> Fri, 09 Aug 2013 00:00:00 +0000 + +lv2 (1.4.0) stable; urgency=medium + + * Add metronome example plugin to demonstrate sample accurate tempo sync + * Generate book-style HTML documentation from example plugins + * atom: Fix lv2_atom_sequence_end() + * atom: Improve atom documentation + * atom: Remove atom:stringType in favour of the more general owl:onDatatype + * buf-size: Fix typo in bufsz:sequenceSize label + * event: Fix incorrect return type in lv2_event_get() + * log: Add logger convenience API + * lv2core: Add lv2:EnvelopePlugin class + * lv2core: Add lv2:control for designating primary control ports + * lv2core: Make lv2:Parameter rdfs:subClassOf rdf:Property + * lv2core: Reserve minor version 0 for unstable development plugins + * lv2core: Set range of lv2:designation to lv2:Designation + * options: Set the range of opts:requiredOption and opts:supportedOption + * patch: Add patch:readable and patch:writable properties + * patch: Make patch:Set a compact message for setting one property + * state: Add state:loadDefaultState feature + * ui: Fix incorrect linker flag in ui:makeSONameResident documentation + + -- David Robillard <d@drobilla.net> Sun, 17 Feb 2013 00:00:00 +0000 + +lv2 (1.2.0) stable; urgency=medium + + * Move all project metadata for extensions to separate files to save memory + * Use stricter datatype definitions conformant with XSD and OWL + * atom: Add LV2_ATOM_CONTENTS_CONST and LV2_ATOM_BODY_CONST + * atom: Add lv2_atom_object_body_get() + * atom: Fix implicit conversions in forge.h that are invalid in C++11 + * atom: Fix lv2_atom_object_next() on 32-bit platforms + * atom: Fix outdated documentation in forge.h + * atom: Use consistent label style + * buf-size: Initial release + * dynmanifest: Use consistent label style + * event: Make event iterator gracefully handle optional ports + * event: Remove asserts from event-helper.h + * event: Use consistent label style + * event: Use more precise domain and range for EventPort properties + * lv2core: Use consistent label style + * midi: Add C definitions for message types and standard controllers + * midi: Add midi:HexByte datatype for status bytes and masks + * midi: Add midi:binding and midi:channel predicates + * midi: Fix definition of SystemExclusive status byte + * midi: Remove non-standard midi:Tick message type + * midi: Use consistent label style + * morph: Initial release + * options: Initial release + * parameters: Add param:sampleRate + * parameters: Add parameters.h of URI defines for convenience + * parameters: Use consistent label style + * port-groups: Use consistent label style + * port-props: Use consistent label style + * presets: Add preset banks + * presets: Use consistent label style + * state: Use consistent label style + * time: Use consistent label style + * ui: Add missing LV2_SYMBOL_EXPORT declaration for lv2ui_descriptor + * ui: Add types for WindowsUI, CocoaUI, and Gtk3UI + * ui: Use consistent label style + * units: Remove units:name in favour of rdfs:label + * units: Use consistent label style + * urid: Fix typo in urid:unmap documentation + + -- David Robillard <d@drobilla.net> Sun, 14 Oct 2012 00:00:00 +0000 + +lv2 (1.0.0) stable; urgency=medium + + * Initial release as a unified project + * atom: Initial release + * data-access: Initial unified release + * dynmanifest: Initial unified release + * event: Initial unified release + * instance-access: Initial unified release + * log: Initial release + * lv2core: Initial unified release + * midi: Initial unified release + * parameters: Initial release + * patch: Initial release + * port-groups: Initial release + * port-props: Initial release + * presets: Initial unified release + * resize-port: Initial release + * state: Initial release + * time: Initial release + * ui: Initial unified release + * units: Initial unified release + * uri-map: Initial unified release + * urid: Initial unified release + * worker: Initial release + + -- David Robillard <d@drobilla.net> Mon, 16 Apr 2012 00:00:00 +0000 @@ -1,3 +1,6 @@ +<!-- Copyright 2010-2022 David Robillard <d@drobilla.net> --> +<!-- SPDX-License-Identifier: ISC --> + LV2 === @@ -15,15 +18,11 @@ Installation See the [installation instructions](INSTALL.md) for details on how to configure, build, and install LV2 with meson. -By default, everything is installed within the `prefix` with a UNIX-style -hierarchy, and LV2 bundles are installed in the "lv2" subdirectory of the -`libdir`. The bundle installation directory can be overridden with the -`lv2dir` option. For example, standard system-wide values for various -operating systems are: - - meson configure -Dlv2dir=/Library/Audio/Plug-Ins/LV2 - meson configure -Dlv2dir=/boot/common/add-ons/lv2 - meson configure -Dlv2dir=C:/Program Files/Common/LV2 +By default, on UNIX-like systems, everything is installed within the `prefix`, +and LV2 bundles are installed in the "lv2" subdirectory of the `libdir`. On +other systems, bundles are installed by default to the standard location for +plugins on the system. The bundle installation directory can be overridden +with the `lv2dir` option. The [specification bundles](lv2) are run-time dependencies of LV2 applications. Programs expect their data to be available somewhere in `LV2_PATH`. See @@ -38,12 +37,12 @@ Other projects may extend LV2, but must place their headers elsewhere. Headers are installed to `includedir` with paths like: - #include "lv2/urid/urid.h" + #include <lv2/urid/urid.h> For backwards compatibility, if the `old_headers` option is set, then headers are also installed to the older URI-based paths: - #include "lv2/lv2plug.in/ns/ext/urid/urid.h" + #include <lv2/lv2plug.in/ns/ext/urid/urid.h> Projects still using this style are encourated to migrate to the shorter style above. diff --git a/doc/c/doxy-style.css b/doc/c/doxy-style.css index b44675e..6f15ee4 100644 --- a/doc/c/doxy-style.css +++ b/doc/c/doxy-style.css @@ -208,6 +208,10 @@ dl.el { font-family: "SF Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace, fixed; } +.ttc { + display: none; +} + pre.fragment { border: 1px solid #C4C4C4; background-color: #F9F9F9; diff --git a/doc/c/meson.build b/doc/c/meson.build index 3ce7fdc..da88b86 100644 --- a/doc/c/meson.build +++ b/doc/c/meson.build @@ -1,5 +1,5 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC lv2_source_doc = meson.current_source_dir() @@ -11,7 +11,7 @@ if doxygen.found() 'LV2_SRCDIR': lv2_source_root, 'LV2_BUILDDIR': lv2_build_root, 'LV2_VERSION': meson.project_version(), - } + }, ) reference_doxygen = configure_file( @@ -25,7 +25,7 @@ if doxygen.found() command: [doxygen, '@INPUT@'], input: reference_doxygen, install: true, - install_dir: lv2_docdir, + install_dir: lv2_docdir / 'c', output: ['html', 'tags'], ) diff --git a/doc/c/reference.doxygen.in b/doc/c/reference.doxygen.in index 0b87d49..333fe1c 100644 --- a/doc/c/reference.doxygen.in +++ b/doc/c/reference.doxygen.in @@ -805,6 +805,7 @@ INPUT = @LV2_SRCDIR@/doc/c/mainpage.md \ @LV2_SRCDIR@/include/lv2/atom/util.h \ @LV2_SRCDIR@/include/lv2/buf-size/buf-size.h \ @LV2_SRCDIR@/include/lv2/core/lv2.h \ + @LV2_SRCDIR@/include/lv2/core/lv2_util.h \ @LV2_SRCDIR@/include/lv2/data-access/data-access.h \ @LV2_SRCDIR@/include/lv2/dynmanifest/dynmanifest.h \ @LV2_SRCDIR@/include/lv2/event/event-helpers.h \ @@ -1206,15 +1207,6 @@ HTML_COLORSTYLE_SAT = 30 HTML_COLORSTYLE_GAMMA = 100 -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - # If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML # documentation will contain a main index with vertical navigation menus that # are dynamically created via JavaScript. If disabled, the navigation index will @@ -1502,17 +1494,6 @@ EXT_LINKS_IN_WINDOW = NO FORMULA_FONTSIZE = 10 -# Use the FORMULA_TRANSPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see # https://www.mathjax.org) which uses client side JavaScript for the rendering # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX @@ -1822,14 +1803,6 @@ LATEX_HIDE_INDICES = NO LATEX_BIB_STYLE = plain -# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated -# page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: NO. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_TIMESTAMP = NO - #--------------------------------------------------------------------------- # Configuration options related to the RTF output #--------------------------------------------------------------------------- @@ -2185,23 +2158,6 @@ HAVE_DOT = NO DOT_NUM_THREADS = 0 -# When you want a differently looking font in the dot files that doxygen -# generates you can specify the font name using DOT_FONTNAME. You need to make -# sure dot is able to find the font, which can be done by putting it in a -# standard location or by setting the DOTFONTPATH environment variable or by -# setting DOT_FONTPATH to the directory containing the font. -# The default value is: Helvetica. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_FONTNAME = - -# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of -# dot graphs. -# Minimum value: 4, maximum value: 24, default value: 10. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_FONTSIZE = 10 - # By default doxygen will tell dot to use the default font as specified with # DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set # the path where dot can find it using this tag. @@ -2417,18 +2373,6 @@ DOT_GRAPH_MAX_NODES = 50 MAX_DOT_GRAPH_DEPTH = 0 -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not seem -# to support this out of the box. -# -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). -# The default value is: NO. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_TRANSPARENT = NO - # Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) support diff --git a/doc/index.html.in b/doc/index.html.in index 6f3e0f9..3be99f4 100644 --- a/doc/index.html.in +++ b/doc/index.html.in @@ -19,7 +19,6 @@ <div id="metabox"> <table id="meta"> <tr><th>Version</th><td>@LV2_VERSION@</td></tr> - <tr><th>Date</th><td>@DATE@</td></tr> <tr><th>Discuss</th> <td> <a href="mailto:devel@lists.lv2plug.in">devel@lists.lv2plug.in</a> diff --git a/doc/ns/ext/meson.build b/doc/ns/ext/meson.build index f6ad06b..bf6431b 100644 --- a/doc/ns/ext/meson.build +++ b/doc/ns/ext/meson.build @@ -1,5 +1,5 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC config = configuration_data({'BASE': '/ns/ext'}) @@ -45,6 +45,7 @@ if build_docs command: lv2specgen_command_prefix + [ '--docdir=../../c/html', '--style-uri=../../style/style.css', + ] + [ '@INPUT@', '@OUTPUT@', ], diff --git a/doc/ns/extensions/meson.build b/doc/ns/extensions/meson.build index 5a25184..837f736 100644 --- a/doc/ns/extensions/meson.build +++ b/doc/ns/extensions/meson.build @@ -1,5 +1,5 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC config = configuration_data({'BASE': '/ns/extensions'}) @@ -26,6 +26,7 @@ if build_docs command: lv2specgen_command_prefix + [ '--docdir=../../c/html', '--style-uri=../../style/style.css', + ] + [ '@INPUT@', '@OUTPUT@', ], diff --git a/doc/ns/meson.build b/doc/ns/meson.build index aa41464..126a100 100644 --- a/doc/ns/meson.build +++ b/doc/ns/meson.build @@ -1,5 +1,5 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC config = configuration_data({'BASE': '/ns'}) @@ -24,6 +24,7 @@ if build_docs command: lv2specgen_command_prefix + [ '--docdir=../c/html', '--style-uri=../style/style.css', + ] + [ '@INPUT@', '@OUTPUT@', ], @@ -55,12 +56,14 @@ subdir('extensions') # Index # ######### -lv2_build_index = find_program(lv2_source_root / 'scripts' / 'lv2_build_index.py') +lv2_build_index = find_program( + lv2_source_root / 'scripts' / 'lv2_build_index.py', +) lv2_build_index_command = [ lv2_build_index, - '--lv2-version', meson.project_version(), - '--lv2-source-root', lv2_source_root, + ['--lv2-version', meson.project_version()], + ['--lv2-source-root', lv2_source_root], ] if get_option('online_docs') diff --git a/doc/style/meson.build b/doc/style/meson.build index 7ae9a04..39e9242 100644 --- a/doc/style/meson.build +++ b/doc/style/meson.build @@ -1,10 +1,7 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC -style_files = files( - 'pygments.css', - 'style.css' -) +style_files = files('pygments.css', 'style.css') foreach file : style_files configure_file( diff --git a/include/lv2/atom/atom.h b/include/lv2/atom/atom.h index b090c1e..41af21a 100644 --- a/include/lv2/atom/atom.h +++ b/include/lv2/atom/atom.h @@ -1,21 +1,8 @@ -/* - Copyright 2008-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2008-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC -#ifndef LV2_ATOM_H -#define LV2_ATOM_H +#ifndef LV2_ATOM_ATOM_H +#define LV2_ATOM_ATOM_H /** @defgroup atom Atom @@ -75,25 +62,19 @@ extern "C" { #endif -/** @cond */ -/** This expression will fail to compile if double does not fit in 64 bits. */ -typedef char lv2_atom_assert_double_fits_in_64_bits - [((sizeof(double) <= sizeof(uint64_t)) * 2) - 1]; -/** @endcond */ - /** Return a pointer to the contents of an Atom. The "contents" of an atom is the data past the complete type-specific header. @param type The type of the atom, for example LV2_Atom_String. @param atom A variable-sized atom. */ -#define LV2_ATOM_CONTENTS(type, atom) ((void*)((uint8_t*)(atom) + sizeof(type))) +#define LV2_ATOM_CONTENTS(type, atom) ((void*)((type*)(atom) + 1U)) /** Const version of LV2_ATOM_CONTENTS. */ #define LV2_ATOM_CONTENTS_CONST(type, atom) \ - ((const void*)((const uint8_t*)(atom) + sizeof(type))) + ((const void*)((const type*)(atom) + 1U)) /** Return a pointer to the body of an Atom. The "body" of an atom is the @@ -234,7 +215,7 @@ typedef struct { | Event 1 (size 6) | Event 2 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - |FRAMES |TYPE |SIZE |DATADATADATAPAD|FRAMES |... + |FRAMES |SIZE |TYPE |DATADATADATAPAD|FRAMES |... </pre> */ typedef struct { @@ -257,4 +238,4 @@ typedef struct { @} */ -#endif /* LV2_ATOM_H */ +#endif // LV2_ATOM_ATOM_H diff --git a/include/lv2/atom/forge.h b/include/lv2/atom/forge.h index 280bd53..58b7512 100644 --- a/include/lv2/atom/forge.h +++ b/include/lv2/atom/forge.h @@ -1,18 +1,5 @@ -/* - Copyright 2008-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2008-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC /** @file forge.h An API for constructing LV2 atoms. @@ -51,10 +38,10 @@ @{ */ -#include "lv2/atom/atom.h" -#include "lv2/atom/util.h" -#include "lv2/core/attributes.h" -#include "lv2/urid/urid.h" +#include <lv2/atom/atom.h> +#include <lv2/atom/util.h> +#include <lv2/core/attributes.h> +#include <lv2/urid/urid.h> #include <assert.h> #include <stdbool.h> @@ -103,24 +90,24 @@ typedef struct { LV2_Atom_Forge_Frame* stack; - LV2_URID Blank LV2_DEPRECATED; - LV2_URID Bool; - LV2_URID Chunk; - LV2_URID Double; - LV2_URID Float; - LV2_URID Int; - LV2_URID Long; - LV2_URID Literal; - LV2_URID Object; - LV2_URID Path; - LV2_URID Property; + LV2_URID Blank LV2_DEPRECATED; + LV2_URID Bool; + LV2_URID Chunk; + LV2_URID Double; + LV2_URID Float; + LV2_URID Int; + LV2_URID Long; + LV2_URID Literal; + LV2_URID Object; + LV2_URID Path; + LV2_URID Property; LV2_URID Resource LV2_DEPRECATED; - LV2_URID Sequence; - LV2_URID String; - LV2_URID Tuple; - LV2_URID URI; - LV2_URID URID; - LV2_URID Vector; + LV2_URID Sequence; + LV2_URID String; + LV2_URID Tuple; + LV2_URID URI; + LV2_URID URID; + LV2_URID Vector; } LV2_Atom_Forge; static inline void @@ -160,6 +147,7 @@ lv2_atom_forge_init(LV2_Atom_Forge* forge, LV2_URID_Map* map) static inline LV2_Atom* lv2_atom_forge_deref(LV2_Atom_Forge* forge, LV2_Atom_Forge_Ref ref) { + // NOLINTNEXTLINE(performance-no-int-to-ptr) return forge->buf ? (LV2_Atom*)ref : forge->deref(forge->handle, ref); } @@ -318,7 +306,7 @@ lv2_atom_forge_pad(LV2_Atom_Forge* forge, uint32_t written) static inline LV2_Atom_Forge_Ref lv2_atom_forge_write(LV2_Atom_Forge* forge, const void* data, uint32_t size) { - LV2_Atom_Forge_Ref out = lv2_atom_forge_raw(forge, data, size); + const LV2_Atom_Forge_Ref out = lv2_atom_forge_raw(forge, data, size); if (out) { lv2_atom_forge_pad(forge, size); } @@ -329,11 +317,18 @@ lv2_atom_forge_write(LV2_Atom_Forge* forge, const void* data, uint32_t size) static inline LV2_Atom_Forge_Ref lv2_atom_forge_string_body(LV2_Atom_Forge* forge, const char* str, uint32_t len) { - LV2_Atom_Forge_Ref out = lv2_atom_forge_raw(forge, str, len); - if (out && (out = lv2_atom_forge_raw(forge, "", 1))) { - lv2_atom_forge_pad(forge, len + 1); + const LV2_Atom_Forge_Ref s = lv2_atom_forge_raw(forge, str, len); + if (!s) { + return s; } - return out; + + const LV2_Atom_Forge_Ref t = lv2_atom_forge_raw(forge, "", 1); + if (!t) { + return t; + } + + lv2_atom_forge_pad(forge, len + 1U); + return t; } /** @@ -497,10 +492,10 @@ lv2_atom_forge_vector(LV2_Atom_Forge* forge, const void* elems) { const LV2_Atom_Vector a = { - {(uint32_t)sizeof(LV2_Atom_Vector_Body) + n_elems * child_size, + {(uint32_t)sizeof(LV2_Atom_Vector_Body) + (n_elems * child_size), forge->Vector}, {child_size, child_type}}; - LV2_Atom_Forge_Ref out = lv2_atom_forge_write(forge, &a, sizeof(a)); + const LV2_Atom_Forge_Ref out = lv2_atom_forge_write(forge, &a, sizeof(a)); if (out) { lv2_atom_forge_write(forge, elems, child_size * n_elems); } @@ -574,8 +569,7 @@ lv2_atom_forge_object(LV2_Atom_Forge* forge, This function is deprecated and should not be used in new code. Use lv2_atom_forge_object() directly instead. */ -LV2_DEPRECATED -static inline LV2_Atom_Forge_Ref +LV2_DEPRECATED static inline LV2_Atom_Forge_Ref lv2_atom_forge_resource(LV2_Atom_Forge* forge, LV2_Atom_Forge_Frame* frame, LV2_URID id, @@ -593,8 +587,7 @@ lv2_atom_forge_resource(LV2_Atom_Forge* forge, This function is deprecated and should not be used in new code. Use lv2_atom_forge_object() directly instead. */ -LV2_DEPRECATED -static inline LV2_Atom_Forge_Ref +LV2_DEPRECATED static inline LV2_Atom_Forge_Ref lv2_atom_forge_blank(LV2_Atom_Forge* forge, LV2_Atom_Forge_Frame* frame, uint32_t id, @@ -680,4 +673,4 @@ LV2_RESTORE_WARNINGS @} */ -#endif /* LV2_ATOM_FORGE_H */ +#endif // LV2_ATOM_FORGE_H diff --git a/include/lv2/atom/util.h b/include/lv2/atom/util.h index 16d2c00..9a3d8a3 100644 --- a/include/lv2/atom/util.h +++ b/include/lv2/atom/util.h @@ -1,18 +1,5 @@ -/* - Copyright 2008-2015 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2008-2024 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC #ifndef LV2_ATOM_UTIL_H #define LV2_ATOM_UTIL_H @@ -26,7 +13,7 @@ */ /** - @defgroup util Utilities + @defgroup atom_util Utilities @ingroup atom Utilities for working with atoms. @@ -34,13 +21,15 @@ @{ */ -#include "lv2/atom/atom.h" +#include <lv2/atom/atom.h> #include <stdarg.h> #include <stdbool.h> #include <stdint.h> #include <string.h> +// NOLINTBEGIN(bugprone-macro-parentheses) + #ifdef __cplusplus extern "C" { #endif @@ -49,7 +38,9 @@ extern "C" { static inline uint32_t lv2_atom_pad_size(uint32_t size) { - return (size + 7U) & (~7U); + static const uint32_t mask = 7U; + + return (size + mask) & ~mask; } /** Return the total size of `atom`, including the header. */ @@ -70,8 +61,7 @@ lv2_atom_is_null(const LV2_Atom* atom) static inline bool lv2_atom_equals(const LV2_Atom* a, const LV2_Atom* b) { - return (a == b) || ((a->type == b->type) && (a->size == b->size) && - !memcmp(a + 1, b + 1, a->size)); + return (a == b) || !memcmp(a, b, sizeof(LV2_Atom) + a->size); } /** @@ -125,14 +115,14 @@ lv2_atom_sequence_next(const LV2_Atom_Event* i) @endcode */ #define LV2_ATOM_SEQUENCE_FOREACH(seq, iter) \ - for (LV2_Atom_Event * iter = lv2_atom_sequence_begin(&(seq)->body); \ + for (LV2_Atom_Event* iter = lv2_atom_sequence_begin(&(seq)->body); \ !lv2_atom_sequence_is_end(&(seq)->body, (seq)->atom.size, (iter)); \ (iter) = lv2_atom_sequence_next(iter)) /** Like LV2_ATOM_SEQUENCE_FOREACH but for a headerless sequence body. */ -#define LV2_ATOM_SEQUENCE_BODY_FOREACH(body, size, iter) \ - for (LV2_Atom_Event * iter = lv2_atom_sequence_begin(body); \ - !lv2_atom_sequence_is_end(body, size, (iter)); \ +#define LV2_ATOM_SEQUENCE_BODY_FOREACH(body, size, iter) \ + for (LV2_Atom_Event* iter = lv2_atom_sequence_begin(body); \ + !lv2_atom_sequence_is_end(body, size, (iter)); \ (iter) = lv2_atom_sequence_next(iter)) /** @@ -191,7 +181,7 @@ lv2_atom_sequence_append_event(LV2_Atom_Sequence* seq, static inline LV2_Atom* lv2_atom_tuple_begin(const LV2_Atom_Tuple* tup) { - return (LV2_Atom*)(LV2_ATOM_BODY(tup)); + return (LV2_Atom*)tup + 1U; } /** Return true iff `i` has reached the end of `body`. */ @@ -223,15 +213,14 @@ lv2_atom_tuple_next(const LV2_Atom* i) } @endcode */ -#define LV2_ATOM_TUPLE_FOREACH(tuple, iter) \ - for (LV2_Atom * iter = lv2_atom_tuple_begin(tuple); \ - !lv2_atom_tuple_is_end( \ - LV2_ATOM_BODY(tuple), (tuple)->atom.size, (iter)); \ +#define LV2_ATOM_TUPLE_FOREACH(tuple, iter) \ + for (LV2_Atom* iter = lv2_atom_tuple_begin(tuple); !lv2_atom_tuple_is_end( \ + LV2_ATOM_BODY(tuple), (tuple)->atom.size, (iter)); \ (iter) = lv2_atom_tuple_next(iter)) /** Like LV2_ATOM_TUPLE_FOREACH but for a headerless tuple body. */ #define LV2_ATOM_TUPLE_BODY_FOREACH(body, size, iter) \ - for (LV2_Atom * iter = (LV2_Atom*)(body); \ + for (LV2_Atom* iter = (LV2_Atom*)(body); \ !lv2_atom_tuple_is_end(body, size, (iter)); \ (iter) = lv2_atom_tuple_next(iter)) @@ -262,7 +251,7 @@ static inline LV2_Atom_Property_Body* lv2_atom_object_next(const LV2_Atom_Property_Body* i) { const LV2_Atom* const value = - (const LV2_Atom*)((const uint8_t*)i + 2 * sizeof(uint32_t)); + (const LV2_Atom*)((const uint8_t*)i + (2 * sizeof(uint32_t))); return (LV2_Atom_Property_Body*)((const uint8_t*)i + lv2_atom_pad_size( (uint32_t)sizeof(LV2_Atom_Property_Body) + @@ -283,15 +272,15 @@ lv2_atom_object_next(const LV2_Atom_Property_Body* i) } @endcode */ -#define LV2_ATOM_OBJECT_FOREACH(obj, iter) \ - for (LV2_Atom_Property_Body * iter = lv2_atom_object_begin(&(obj)->body); \ - !lv2_atom_object_is_end(&(obj)->body, (obj)->atom.size, (iter)); \ +#define LV2_ATOM_OBJECT_FOREACH(obj, iter) \ + for (LV2_Atom_Property_Body* iter = lv2_atom_object_begin(&(obj)->body); \ + !lv2_atom_object_is_end(&(obj)->body, (obj)->atom.size, (iter)); \ (iter) = lv2_atom_object_next(iter)) /** Like LV2_ATOM_OBJECT_FOREACH but for a headerless object body. */ -#define LV2_ATOM_OBJECT_BODY_FOREACH(body, size, iter) \ - for (LV2_Atom_Property_Body * iter = lv2_atom_object_begin(body); \ - !lv2_atom_object_is_end(body, size, (iter)); \ +#define LV2_ATOM_OBJECT_BODY_FOREACH(body, size, iter) \ + for (LV2_Atom_Property_Body* iter = lv2_atom_object_begin(body); \ + !lv2_atom_object_is_end(body, size, (iter)); \ (iter) = lv2_atom_object_next(iter)) /** @@ -370,7 +359,7 @@ lv2_atom_object_body_get(uint32_t size, const LV2_Atom_Object_Body* body, ...) int n_queries = 0; /* Count number of keys so we can short-circuit when done */ - va_list args; + va_list args; // NOLINT(cppcoreguidelines-init-variables) va_start(args, body); for (n_queries = 0; va_arg(args, uint32_t); ++n_queries) { if (!va_arg(args, const LV2_Atom**)) { @@ -383,7 +372,7 @@ lv2_atom_object_body_get(uint32_t size, const LV2_Atom_Object_Body* body, ...) LV2_ATOM_OBJECT_BODY_FOREACH (body, size, prop) { va_start(args, body); for (int i = 0; i < n_queries; ++i) { - uint32_t qkey = va_arg(args, uint32_t); + const uint32_t qkey = va_arg(args, uint32_t); const LV2_Atom** qval = va_arg(args, const LV2_Atom**); if (qkey == prop->key && !*qval) { *qval = &prop->value; @@ -425,7 +414,7 @@ lv2_atom_object_get(const LV2_Atom_Object* object, ...) int n_queries = 0; /* Count number of keys so we can short-circuit when done */ - va_list args; + va_list args; // NOLINT(cppcoreguidelines-init-variables) va_start(args, object); for (n_queries = 0; va_arg(args, uint32_t); ++n_queries) { if (!va_arg(args, const LV2_Atom**)) { @@ -438,7 +427,7 @@ lv2_atom_object_get(const LV2_Atom_Object* object, ...) LV2_ATOM_OBJECT_FOREACH (object, prop) { va_start(args, object); for (int i = 0; i < n_queries; ++i) { - uint32_t qkey = va_arg(args, uint32_t); + const uint32_t qkey = va_arg(args, uint32_t); const LV2_Atom** qval = va_arg(args, const LV2_Atom**); if (qkey == prop->key && !*qval) { *qval = &prop->value; @@ -481,7 +470,7 @@ lv2_atom_object_get_typed(const LV2_Atom_Object* object, ...) int n_queries = 0; /* Count number of keys so we can short-circuit when done */ - va_list args; + va_list args; // NOLINT(cppcoreguidelines-init-variables) va_start(args, object); for (n_queries = 0; va_arg(args, uint32_t); ++n_queries) { if (!va_arg(args, const LV2_Atom**) || !va_arg(args, uint32_t)) { @@ -515,9 +504,11 @@ lv2_atom_object_get_typed(const LV2_Atom_Object* object, ...) } /* extern "C" */ #endif +// NOLINTEND(bugprone-macro-parentheses) + /** @} @} */ -#endif /* LV2_ATOM_UTIL_H */ +#endif // LV2_ATOM_UTIL_H diff --git a/include/lv2/buf-size/buf-size.h b/include/lv2/buf-size/buf-size.h index d96e17d..c1a00e1 100644 --- a/include/lv2/buf-size/buf-size.h +++ b/include/lv2/buf-size/buf-size.h @@ -1,21 +1,8 @@ -/* - Copyright 2007-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2007-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC -#ifndef LV2_BUF_SIZE_H -#define LV2_BUF_SIZE_H +#ifndef LV2_BUF_SIZE_BUF_SIZE_H +#define LV2_BUF_SIZE_BUF_SIZE_H /** @defgroup buf-size Buffer Size @@ -48,4 +35,4 @@ @} */ -#endif /* LV2_BUF_SIZE_H */ +#endif // LV2_BUF_SIZE_BUF_SIZE_H diff --git a/include/lv2/core/attributes.h b/include/lv2/core/attributes.h index 81791a2..2db876f 100644 --- a/include/lv2/core/attributes.h +++ b/include/lv2/core/attributes.h @@ -1,18 +1,5 @@ -/* - Copyright 2018 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2018 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC #ifndef LV2_CORE_ATTRIBUTES_H #define LV2_CORE_ATTRIBUTES_H @@ -56,4 +43,4 @@ @} */ -#endif /* LV2_CORE_ATTRIBUTES_H */ +#endif // LV2_CORE_ATTRIBUTES_H diff --git a/include/lv2/core/lv2.h b/include/lv2/core/lv2.h index 84c40a5..e4b90fd 100644 --- a/include/lv2/core/lv2.h +++ b/include/lv2/core/lv2.h @@ -1,25 +1,10 @@ -/* - LV2 - An audio plugin interface specification. - Copyright 2006-2012 Steve Harris, David Robillard. - - Based on LADSPA, Copyright 2000-2002 Richard W.E. Furse, - Paul Barton-Davis, Stefan Westerfeld. - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2006-2020 David Robillard <d@drobilla.net> +// Copyright 2006-2012 Steve Harris <steve@plugin.org.uk> +// Copyright 2000-2002 Richard W.E. Furse, Paul Barton-Davis, Stefan Westerfeld. +// SPDX-License-Identifier: ISC -#ifndef LV2_H_INCLUDED -#define LV2_H_INCLUDED +#ifndef LV2_CORE_LV2_H +#define LV2_CORE_LV2_H /** @defgroup lv2 LV2 @@ -51,6 +36,7 @@ #define LV2_CORE__AnalyserPlugin LV2_CORE_PREFIX "AnalyserPlugin" ///< http://lv2plug.in/ns/lv2core#AnalyserPlugin #define LV2_CORE__AudioPort LV2_CORE_PREFIX "AudioPort" ///< http://lv2plug.in/ns/lv2core#AudioPort #define LV2_CORE__BandpassPlugin LV2_CORE_PREFIX "BandpassPlugin" ///< http://lv2plug.in/ns/lv2core#BandpassPlugin +#define LV2_CORE__BandstopPlugin LV2_CORE_PREFIX "BandstopPlugin" ///< http://lv2plug.in/ns/lv2core#BandstopPlugin #define LV2_CORE__CVPort LV2_CORE_PREFIX "CVPort" ///< http://lv2plug.in/ns/lv2core#CVPort #define LV2_CORE__ChorusPlugin LV2_CORE_PREFIX "ChorusPlugin" ///< http://lv2plug.in/ns/lv2core#ChorusPlugin #define LV2_CORE__CombPlugin LV2_CORE_PREFIX "CombPlugin" ///< http://lv2plug.in/ns/lv2core#CombPlugin @@ -114,6 +100,7 @@ #define LV2_CORE__index LV2_CORE_PREFIX "index" ///< http://lv2plug.in/ns/lv2core#index #define LV2_CORE__integer LV2_CORE_PREFIX "integer" ///< http://lv2plug.in/ns/lv2core#integer #define LV2_CORE__isLive LV2_CORE_PREFIX "isLive" ///< http://lv2plug.in/ns/lv2core#isLive +#define LV2_CORE__isSideChain LV2_CORE_PREFIX "isSideChain" ///< http://lv2plug.in/ns/lv2core#isSideChain #define LV2_CORE__latency LV2_CORE_PREFIX "latency" ///< http://lv2plug.in/ns/lv2core#latency #define LV2_CORE__maximum LV2_CORE_PREFIX "maximum" ///< http://lv2plug.in/ns/lv2core#maximum #define LV2_CORE__microVersion LV2_CORE_PREFIX "microVersion" ///< http://lv2plug.in/ns/lv2core#microVersion @@ -366,11 +353,13 @@ typedef struct LV2_Descriptor { Put this (LV2_SYMBOL_EXPORT) before any functions that are to be loaded by the host as a symbol from the dynamic library. */ -#ifdef _WIN32 -# define LV2_SYMBOL_EXPORT LV2_SYMBOL_EXTERN __declspec(dllexport) -#else -# define LV2_SYMBOL_EXPORT \ - LV2_SYMBOL_EXTERN __attribute__((visibility("default"))) +#ifndef LV2_SYMBOL_EXPORT +# ifdef _WIN32 +# define LV2_SYMBOL_EXPORT LV2_SYMBOL_EXTERN __declspec(dllexport) +# else +# define LV2_SYMBOL_EXPORT \ + LV2_SYMBOL_EXTERN __attribute__((visibility("default"))) +# endif #endif /** @@ -396,8 +385,7 @@ typedef struct LV2_Descriptor { Note that `index` has no meaning, hosts MUST NOT depend on it remaining consistent between loads of the plugin library. */ -LV2_SYMBOL_EXPORT -const LV2_Descriptor* +LV2_SYMBOL_EXPORT const LV2_Descriptor* lv2_descriptor(uint32_t index); /** @@ -462,8 +450,7 @@ typedef struct { be destroyed (using LV2_Lib_Descriptor::cleanup()) until all plugins loaded from that library have been destroyed. */ -LV2_SYMBOL_EXPORT -const LV2_Lib_Descriptor* +LV2_SYMBOL_EXPORT const LV2_Lib_Descriptor* lv2_lib_descriptor(const char* bundle_path, const LV2_Feature* const* features); /** @@ -482,4 +469,4 @@ typedef const LV2_Lib_Descriptor* (*LV2_Lib_Descriptor_Function)( @} */ -#endif /* LV2_H_INCLUDED */ +#endif // LV2_CORE_LV2_H diff --git a/include/lv2/core/lv2_util.h b/include/lv2/core/lv2_util.h index f3766aa..82c5e1e 100644 --- a/include/lv2/core/lv2_util.h +++ b/include/lv2/core/lv2_util.h @@ -1,26 +1,16 @@ -/* - Copyright 2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC + +#ifndef LV2_CORE_LV2_UTIL_H +#define LV2_CORE_LV2_UTIL_H /** - @defgroup util Utilities + @defgroup lv2_util Utilities @ingroup lv2core @{ */ -#include "lv2/core/lv2.h" +#include <lv2/core/lv2.h> #include <stdarg.h> #include <stdbool.h> @@ -75,13 +65,13 @@ lv2_features_data(const LV2_Feature* const* features, const char* const uri) static inline const char* lv2_features_query(const LV2_Feature* const* features, ...) { - va_list args; + va_list args; // NOLINT(cppcoreguidelines-init-variables) va_start(args, features); const char* uri = NULL; while ((uri = va_arg(args, const char*))) { - void** data = va_arg(args, void**); - bool required = (bool)va_arg(args, int); + void** data = va_arg(args, void**); + const bool required = (bool)va_arg(args, int); *data = lv2_features_data(features, uri); if (required && !*data) { @@ -101,3 +91,5 @@ lv2_features_query(const LV2_Feature* const* features, ...) /** @} */ + +#endif // LV2_CORE_LV2_UTIL_H diff --git a/include/lv2/data-access/data-access.h b/include/lv2/data-access/data-access.h index de3b6b6..4586273 100644 --- a/include/lv2/data-access/data-access.h +++ b/include/lv2/data-access/data-access.h @@ -1,21 +1,8 @@ -/* - Copyright 2008-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2008-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC -#ifndef LV2_DATA_ACCESS_H -#define LV2_DATA_ACCESS_H +#ifndef LV2_DATA_ACCESS_DATA_ACCESS_H +#define LV2_DATA_ACCESS_DATA_ACCESS_H /** @defgroup data-access Data Access @@ -70,4 +57,4 @@ typedef struct { @} */ -#endif /* LV2_DATA_ACCESS_H */ +#endif // LV2_DATA_ACCESS_DATA_ACCESS_H diff --git a/include/lv2/dynmanifest/dynmanifest.h b/include/lv2/dynmanifest/dynmanifest.h index 674577b..7a6854d 100644 --- a/include/lv2/dynmanifest/dynmanifest.h +++ b/include/lv2/dynmanifest/dynmanifest.h @@ -1,22 +1,8 @@ -/* - Dynamic manifest specification for LV2 - Copyright 2008-2011 Stefano D'Angelo <zanga.mail@gmail.com> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2008-2011 Stefano D'Angelo <zanga.mail@gmail.com> +// SPDX-License-Identifier: ISC -#ifndef LV2_DYN_MANIFEST_H_INCLUDED -#define LV2_DYN_MANIFEST_H_INCLUDED +#ifndef LV2_DYNMANIFEST_DYNMANIFEST_H +#define LV2_DYNMANIFEST_DYNMANIFEST_H /** @defgroup dynmanifest Dynamic Manifest @@ -29,7 +15,7 @@ @{ */ -#include "lv2/core/lv2.h" +#include <lv2/core/lv2.h> #include <stdio.h> @@ -70,7 +56,7 @@ typedef void* LV2_Dyn_Manifest_Handle; evaluate the result of the operation by examining the returned value and MUST NOT try to interpret the value of handle. */ -int +LV2_SYMBOL_EXPORT int lv2_dyn_manifest_open(LV2_Dyn_Manifest_Handle* handle, const LV2_Feature* const* features); @@ -97,7 +83,7 @@ lv2_dyn_manifest_open(LV2_Dyn_Manifest_Handle* handle, @return 0 on success, otherwise a non-zero error code. */ -int +LV2_SYMBOL_EXPORT int lv2_dyn_manifest_get_subjects(LV2_Dyn_Manifest_Handle handle, FILE* fp); /** @@ -130,7 +116,7 @@ lv2_dyn_manifest_get_subjects(LV2_Dyn_Manifest_Handle handle, FILE* fp); @return 0 on success, otherwise a non-zero error code. */ -int +LV2_SYMBOL_EXPORT int lv2_dyn_manifest_get_data(LV2_Dyn_Manifest_Handle handle, FILE* fp, const char* uri); @@ -146,7 +132,7 @@ lv2_dyn_manifest_get_data(LV2_Dyn_Manifest_Handle handle, @param handle Dynamic manifest generator handle. */ -void +LV2_SYMBOL_EXPORT void lv2_dyn_manifest_close(LV2_Dyn_Manifest_Handle handle); #ifdef __cplusplus @@ -157,4 +143,4 @@ lv2_dyn_manifest_close(LV2_Dyn_Manifest_Handle handle); @} */ -#endif /* LV2_DYN_MANIFEST_H_INCLUDED */ +#endif // LV2_DYNMANIFEST_DYNMANIFEST_H diff --git a/include/lv2/event/event-helpers.h b/include/lv2/event/event-helpers.h index bf1b885..de386ca 100644 --- a/include/lv2/event/event-helpers.h +++ b/include/lv2/event/event-helpers.h @@ -1,29 +1,16 @@ -/* - Copyright 2008-2015 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2008-2015 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC -#ifndef LV2_EVENT_HELPERS_H -#define LV2_EVENT_HELPERS_H +#ifndef LV2_EVENT_EVENT_HELPERS_H +#define LV2_EVENT_EVENT_HELPERS_H /** @file event-helpers.h Helper functions for the LV2 Event extension <http://lv2plug.in/ns/ext/event>. */ -#include "lv2/core/attributes.h" -#include "lv2/event/event.h" +#include <lv2/core/attributes.h> +#include <lv2/event/event.h> #include <stdbool.h> #include <stdint.h> @@ -120,7 +107,8 @@ lv2_event_increment(LV2_Event_Iterator* iter) return false; } - LV2_Event* const ev = (LV2_Event*)(iter->buf->data + iter->offset); + const LV2_Event* const ev = + (const LV2_Event*)(iter->buf->data + iter->offset); iter->offset += lv2_event_pad_size((uint16_t)((uint16_t)sizeof(LV2_Event) + ev->size)); @@ -252,4 +240,4 @@ LV2_RESTORE_WARNINGS } /* extern "C" */ #endif -#endif /* LV2_EVENT_HELPERS_H */ +#endif // LV2_EVENT_EVENT_HELPERS_H diff --git a/include/lv2/event/event.h b/include/lv2/event/event.h index ed5adde..42ba54f 100644 --- a/include/lv2/event/event.h +++ b/include/lv2/event/event.h @@ -1,22 +1,9 @@ -/* - Copyright 2008-2016 David Robillard <d@drobilla.net> - Copyright 2006-2007 Lars Luthman <lars.luthman@gmail.com> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2008-2016 David Robillard <d@drobilla.net> +// Copyright 2006-2007 Lars Luthman <lars.luthman@gmail.com> +// SPDX-License-Identifier: ISC -#ifndef LV2_EVENT_H -#define LV2_EVENT_H +#ifndef LV2_EVENT_EVENT_H +#define LV2_EVENT_EVENT_H /** @defgroup event Event @@ -49,7 +36,7 @@ #define LV2_EVENT_AUDIO_STAMP 0 ///< Special timestamp type for audio frames -#include "lv2/core/attributes.h" +#include <lv2/core/attributes.h> #include <stdint.h> @@ -64,8 +51,7 @@ LV2_DISABLE_DEPRECATION_WARNINGS Equal to 2^12 * 5 * 7 * 9 * 11 * 13 * 17, which is evenly divisible by all integers from 1 through 18 inclusive, and powers of 2 up to 2^12. */ -LV2_DEPRECATED -static const uint32_t LV2_EVENT_PPQN = 3136573440U; +LV2_DEPRECATED static const uint32_t LV2_EVENT_PPQN = 3136573440U; /** An LV2 event (header only). @@ -80,8 +66,7 @@ static const uint32_t LV2_EVENT_PPQN = 3136573440U; memcpy(ev_copy, ev, sizeof(LV2_Event) + ev->size); (or equivalent) */ -LV2_DEPRECATED -typedef struct { +LV2_DEPRECATED typedef struct { /** The frames portion of timestamp. The units used here can optionally be set for a port (with the lv2ev:timeUnits property), otherwise this is @@ -140,8 +125,7 @@ typedef struct { | | | | | | | | | | | | | | | | | | | | | | | | | |FRAMES |SUBFRMS|TYP|LEN|DATA..DATA..PAD|FRAMES | ... */ -LV2_DEPRECATED -typedef struct { +LV2_DEPRECATED typedef struct { /** The contents of the event buffer. This may or may not reside in the same block of memory as this header, plugins must not assume either. @@ -223,8 +207,7 @@ typedef struct { /** Opaque pointer to host data. */ -LV2_DEPRECATED -typedef void* LV2_Event_Callback_Data; +LV2_DEPRECATED typedef void* LV2_Event_Callback_Data; /** Non-POD events feature. @@ -234,8 +217,7 @@ typedef void* LV2_Event_Callback_Data; and data pointed to an instance of this struct. Note this feature is not mandatory to support the event extension. */ -LV2_DEPRECATED -typedef struct { +LV2_DEPRECATED typedef struct { /** Opaque pointer to host data. @@ -295,4 +277,4 @@ LV2_RESTORE_WARNINGS @} */ -#endif /* LV2_EVENT_H */ +#endif // LV2_EVENT_EVENT_H diff --git a/include/lv2/instance-access/instance-access.h b/include/lv2/instance-access/instance-access.h index 2986f69..70c2789 100644 --- a/include/lv2/instance-access/instance-access.h +++ b/include/lv2/instance-access/instance-access.h @@ -1,21 +1,8 @@ -/* - Copyright 2008-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2008-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC -#ifndef LV2_INSTANCE_ACCESS_H -#define LV2_INSTANCE_ACCESS_H +#ifndef LV2_INSTANCE_ACCESS_INSTANCE_ACCESS_H +#define LV2_INSTANCE_ACCESS_INSTANCE_ACCESS_H /** @defgroup instance-access Instance Access @@ -38,4 +25,4 @@ @} */ -#endif /* LV2_INSTANCE_ACCESS_H */ +#endif // LV2_INSTANCE_ACCESS_INSTANCE_ACCESS_H diff --git a/include/lv2/log/log.h b/include/lv2/log/log.h index cc62bef..2616ffe 100644 --- a/include/lv2/log/log.h +++ b/include/lv2/log/log.h @@ -1,21 +1,8 @@ -/* - Copyright 2012-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2012-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC -#ifndef LV2_LOG_H -#define LV2_LOG_H +#ifndef LV2_LOG_LOG_H +#define LV2_LOG_LOG_H /** @defgroup log Log @@ -42,7 +29,7 @@ // clang-format on -#include "lv2/urid/urid.h" +#include <lv2/urid/urid.h> #include <stdarg.h> @@ -110,4 +97,4 @@ typedef struct { @} */ -#endif /* LV2_LOG_H */ +#endif // LV2_LOG_LOG_H diff --git a/include/lv2/log/logger.h b/include/lv2/log/logger.h index d6919a2..83e2132 100644 --- a/include/lv2/log/logger.h +++ b/include/lv2/log/logger.h @@ -1,21 +1,8 @@ -/* - Copyright 2012-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2012-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC -#ifndef LV2_ATOM_LOGGER_H -#define LV2_ATOM_LOGGER_H +#ifndef LV2_LOG_LOGGER_H +#define LV2_LOG_LOGGER_H /** @defgroup logger Logger @@ -28,8 +15,8 @@ @{ */ -#include "lv2/log/log.h" -#include "lv2/urid/urid.h" +#include <lv2/log/log.h> +#include <lv2/urid/urid.h> #include <stdarg.h> #include <stdio.h> @@ -103,7 +90,7 @@ LV2_LOG_FUNC(2, 3) static inline int lv2_log_error(LV2_Log_Logger* logger, const char* fmt, ...) { - va_list args; + va_list args; // NOLINT(cppcoreguidelines-init-variables) va_start(args, fmt); const int ret = lv2_log_vprintf(logger, logger->Error, fmt, args); va_end(args); @@ -115,7 +102,7 @@ LV2_LOG_FUNC(2, 3) static inline int lv2_log_note(LV2_Log_Logger* logger, const char* fmt, ...) { - va_list args; + va_list args; // NOLINT(cppcoreguidelines-init-variables) va_start(args, fmt); const int ret = lv2_log_vprintf(logger, logger->Note, fmt, args); va_end(args); @@ -127,7 +114,7 @@ LV2_LOG_FUNC(2, 3) static inline int lv2_log_trace(LV2_Log_Logger* logger, const char* fmt, ...) { - va_list args; + va_list args; // NOLINT(cppcoreguidelines-init-variables) va_start(args, fmt); const int ret = lv2_log_vprintf(logger, logger->Trace, fmt, args); va_end(args); @@ -139,7 +126,7 @@ LV2_LOG_FUNC(2, 3) static inline int lv2_log_warning(LV2_Log_Logger* logger, const char* fmt, ...) { - va_list args; + va_list args; // NOLINT(cppcoreguidelines-init-variables) va_start(args, fmt); const int ret = lv2_log_vprintf(logger, logger->Warning, fmt, args); va_end(args); @@ -154,4 +141,4 @@ lv2_log_warning(LV2_Log_Logger* logger, const char* fmt, ...) @} */ -#endif /* LV2_LOG_LOGGER_H */ +#endif // LV2_LOG_LOGGER_H diff --git a/include/lv2/midi/midi.h b/include/lv2/midi/midi.h index f7e0500..2a687fb 100644 --- a/include/lv2/midi/midi.h +++ b/include/lv2/midi/midi.h @@ -1,21 +1,8 @@ -/* - Copyright 2012-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2012-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC -#ifndef LV2_MIDI_H -#define LV2_MIDI_H +#ifndef LV2_MIDI_MIDI_H +#define LV2_MIDI_MIDI_H /** @defgroup midi MIDI @@ -215,7 +202,7 @@ lv2_midi_is_system_message(const uint8_t* msg) case 0xFD: return false; default: - return (msg[0] & 0xF0u) == 0xF0u; + return (msg[0] & 0xF0U) == 0xF0U; } } @@ -227,7 +214,7 @@ static inline LV2_Midi_Message_Type lv2_midi_message_type(const uint8_t* msg) { if (lv2_midi_is_voice_message(msg)) { - return (LV2_Midi_Message_Type)(msg[0] & 0xF0u); + return (LV2_Midi_Message_Type)(msg[0] & 0xF0U); } if (lv2_midi_is_system_message(msg)) { @@ -245,4 +232,4 @@ lv2_midi_message_type(const uint8_t* msg) @} */ -#endif /* LV2_MIDI_H */ +#endif // LV2_MIDI_MIDI_H diff --git a/include/lv2/morph/morph.h b/include/lv2/morph/morph.h index 370937a..88bfe81 100644 --- a/include/lv2/morph/morph.h +++ b/include/lv2/morph/morph.h @@ -1,21 +1,8 @@ -/* - Copyright 2012-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2012-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC -#ifndef LV2_MORPH_H -#define LV2_MORPH_H +#ifndef LV2_MORPH_MORPH_H +#define LV2_MORPH_MORPH_H /** @defgroup morph Morph @@ -45,4 +32,4 @@ @} */ -#endif /* LV2_MORPH_H */ +#endif // LV2_MORPH_MORPH_H diff --git a/include/lv2/options/options.h b/include/lv2/options/options.h index 06e5db4..5dea9f3 100644 --- a/include/lv2/options/options.h +++ b/include/lv2/options/options.h @@ -1,21 +1,8 @@ -/* - Copyright 2012-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2012-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC -#ifndef LV2_OPTIONS_H -#define LV2_OPTIONS_H +#ifndef LV2_OPTIONS_OPTIONS_H +#define LV2_OPTIONS_OPTIONS_H /** @defgroup options Options @@ -28,8 +15,8 @@ @{ */ -#include "lv2/core/lv2.h" -#include "lv2/urid/urid.h" +#include <lv2/core/lv2.h> +#include <lv2/urid/urid.h> #include <stdint.h> @@ -102,11 +89,11 @@ typedef struct { /** A status code for option functions. */ typedef enum { - LV2_OPTIONS_SUCCESS = 0u, /**< Completed successfully. */ - LV2_OPTIONS_ERR_UNKNOWN = 1u, /**< Unknown error. */ - LV2_OPTIONS_ERR_BAD_SUBJECT = 1u << 1u, /**< Invalid/unsupported subject. */ - LV2_OPTIONS_ERR_BAD_KEY = 1u << 2u, /**< Invalid/unsupported key. */ - LV2_OPTIONS_ERR_BAD_VALUE = 1u << 3u /**< Invalid/unsupported value. */ + LV2_OPTIONS_SUCCESS = 0U, /**< Completed successfully. */ + LV2_OPTIONS_ERR_UNKNOWN = 1U, /**< Unknown error. */ + LV2_OPTIONS_ERR_BAD_SUBJECT = 1U << 1U, /**< Invalid/unsupported subject. */ + LV2_OPTIONS_ERR_BAD_KEY = 1U << 2U, /**< Invalid/unsupported key. */ + LV2_OPTIONS_ERR_BAD_VALUE = 1U << 3U /**< Invalid/unsupported value. */ } LV2_Options_Status; /** @@ -146,4 +133,4 @@ typedef struct { @} */ -#endif /* LV2_OPTIONS_H */ +#endif // LV2_OPTIONS_OPTIONS_H diff --git a/include/lv2/parameters/parameters.h b/include/lv2/parameters/parameters.h index 66a7561..b20c83e 100644 --- a/include/lv2/parameters/parameters.h +++ b/include/lv2/parameters/parameters.h @@ -1,21 +1,8 @@ -/* - Copyright 2012-2016 David Robillard <d@drobilla.net> +// Copyright 2012-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#ifndef LV2_PARAMETERS_H -#define LV2_PARAMETERS_H +#ifndef LV2_PARAMETERS_PARAMETERS_H +#define LV2_PARAMETERS_PARAMETERS_H /** @defgroup parameters Parameters @@ -65,4 +52,4 @@ @} */ -#endif /* LV2_PARAMETERS_H */ +#endif // LV2_PARAMETERS_PARAMETERS_H diff --git a/include/lv2/patch/patch.h b/include/lv2/patch/patch.h index 4db2abb..99fd8e9 100644 --- a/include/lv2/patch/patch.h +++ b/include/lv2/patch/patch.h @@ -1,21 +1,8 @@ -/* - Copyright 2012-2016 David Robillard <d@drobilla.net> +// Copyright 2012-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#ifndef LV2_PATCH_H -#define LV2_PATCH_H +#ifndef LV2_PATCH_PATCH_H +#define LV2_PATCH_PATCH_H /** @defgroup patch Patch @@ -70,4 +57,4 @@ @} */ -#endif /* LV2_PATCH_H */ +#endif // LV2_PATCH_PATCH_H diff --git a/include/lv2/port-groups/port-groups.h b/include/lv2/port-groups/port-groups.h index 0ff25c7..ff00533 100644 --- a/include/lv2/port-groups/port-groups.h +++ b/include/lv2/port-groups/port-groups.h @@ -1,21 +1,8 @@ -/* - Copyright 2012-2016 David Robillard <d@drobilla.net> +// Copyright 2012-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#ifndef LV2_PORT_GROUPS_H -#define LV2_PORT_GROUPS_H +#ifndef LV2_PORT_GROUPS_PORT_GROUPS_H +#define LV2_PORT_GROUPS_PORT_GROUPS_H /** @defgroup port-groups Port Groups @@ -74,4 +61,4 @@ @} */ -#endif /* LV2_PORT_GROUPS_H */ +#endif // LV2_PORT_GROUPS_PORT_GROUPS_H diff --git a/include/lv2/port-props/port-props.h b/include/lv2/port-props/port-props.h index ff4adcd..6007f4b 100644 --- a/include/lv2/port-props/port-props.h +++ b/include/lv2/port-props/port-props.h @@ -1,21 +1,8 @@ -/* - Copyright 2012-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2012-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC -#ifndef LV2_PORT_PROPS_H -#define LV2_PORT_PROPS_H +#ifndef LV2_PORT_PROPS_PORT_PROPS_H +#define LV2_PORT_PROPS_PORT_PROPS_H /** @defgroup port-props Port Properties @@ -50,4 +37,4 @@ @} */ -#endif /* LV2_PORT_PROPS_H */ +#endif // LV2_PORT_PROPS_PORT_PROPS_H diff --git a/include/lv2/presets/presets.h b/include/lv2/presets/presets.h index 716ab32..ecd23a2 100644 --- a/include/lv2/presets/presets.h +++ b/include/lv2/presets/presets.h @@ -1,21 +1,8 @@ -/* - Copyright 2012-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2012-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC -#ifndef LV2_PRESETS_H -#define LV2_PRESETS_H +#ifndef LV2_PRESETS_PRESETS_H +#define LV2_PRESETS_PRESETS_H /** @defgroup presets Presets @@ -45,4 +32,4 @@ @} */ -#endif /* LV2_PRESETS_H */ +#endif // LV2_PRESETS_PRESETS_H diff --git a/include/lv2/resize-port/resize-port.h b/include/lv2/resize-port/resize-port.h index a3a11c4..7593a6d 100644 --- a/include/lv2/resize-port/resize-port.h +++ b/include/lv2/resize-port/resize-port.h @@ -1,21 +1,8 @@ -/* - Copyright 2007-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2007-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC -#ifndef LV2_RESIZE_PORT_H -#define LV2_RESIZE_PORT_H +#ifndef LV2_RESIZE_PORT_RESIZE_PORT_H +#define LV2_RESIZE_PORT_RESIZE_PORT_H /** @defgroup resize-port Resize Port @@ -86,4 +73,4 @@ typedef struct { @} */ -#endif /* LV2_RESIZE_PORT_H */ +#endif // LV2_RESIZE_PORT_RESIZE_PORT_H diff --git a/include/lv2/state/state.h b/include/lv2/state/state.h index 01ec598..c1a357a 100644 --- a/include/lv2/state/state.h +++ b/include/lv2/state/state.h @@ -1,22 +1,9 @@ -/* - Copyright 2010-2016 David Robillard <d@drobilla.net> - Copyright 2010 Leonard Ritter <paniq@paniq.org> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2010-2016 David Robillard <d@drobilla.net> +// Copyright 2010 Leonard Ritter <paniq@paniq.org> +// SPDX-License-Identifier: ISC -#ifndef LV2_STATE_H -#define LV2_STATE_H +#ifndef LV2_STATE_STATE_H +#define LV2_STATE_STATE_H /** @defgroup state State @@ -29,7 +16,7 @@ @{ */ -#include "lv2/core/lv2.h" +#include <lv2/core/lv2.h> #include <stddef.h> #include <stdint.h> @@ -82,7 +69,7 @@ typedef enum { Implementations MUST NOT attempt to copy or serialise a non-POD value if they do not understand its type (and thus know how to correctly do so). */ - LV2_STATE_IS_POD = 1u << 0u, + LV2_STATE_IS_POD = 1U << 0U, /** Portable (architecture independent) data. @@ -93,7 +80,7 @@ typedef enum { values MUST NOT depend on architecture-specific properties like endianness or alignment. Portable values MUST NOT contain filenames. */ - LV2_STATE_IS_PORTABLE = 1u << 1u, + LV2_STATE_IS_PORTABLE = 1U << 1U, /** Native data. @@ -104,7 +91,7 @@ typedef enum { most efficient representation possible and not worry about serialisation and portability. */ - LV2_STATE_IS_NATIVE = 1u << 2u + LV2_STATE_IS_NATIVE = 1U << 2U } LV2_State_Flags; /** A status code for state functions. */ @@ -389,4 +376,4 @@ typedef struct { @} */ -#endif /* LV2_STATE_H */ +#endif // LV2_STATE_STATE_H diff --git a/include/lv2/time/time.h b/include/lv2/time/time.h index 1dce219..2d81dc7 100644 --- a/include/lv2/time/time.h +++ b/include/lv2/time/time.h @@ -1,21 +1,8 @@ -/* - Copyright 2011-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2011-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC -#ifndef LV2_TIME_H -#define LV2_TIME_H +#ifndef LV2_TIME_TIME_H +#define LV2_TIME_TIME_H /** @defgroup time Time @@ -56,4 +43,4 @@ @} */ -#endif /* LV2_TIME_H */ +#endif // LV2_TIME_TIME_H diff --git a/include/lv2/ui/ui.h b/include/lv2/ui/ui.h index fb41d90..408b570 100644 --- a/include/lv2/ui/ui.h +++ b/include/lv2/ui/ui.h @@ -1,23 +1,9 @@ -/* - LV2 UI Extension - Copyright 2009-2016 David Robillard <d@drobilla.net> - Copyright 2006-2011 Lars Luthman <lars.luthman@gmail.com> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2009-2016 David Robillard <d@drobilla.net> +// Copyright 2006-2011 Lars Luthman <lars.luthman@gmail.com> +// SPDX-License-Identifier: ISC -#ifndef LV2_UI_H -#define LV2_UI_H +#ifndef LV2_UI_UI_H +#define LV2_UI_UI_H /** @defgroup ui User Interfaces @@ -30,8 +16,8 @@ @{ */ -#include "lv2/core/lv2.h" -#include "lv2/urid/urid.h" +#include <lv2/core/lv2.h> +#include <lv2/urid/urid.h> #include <stdbool.h> #include <stdint.h> @@ -43,11 +29,13 @@ #define LV2_UI__CocoaUI LV2_UI_PREFIX "CocoaUI" ///< http://lv2plug.in/ns/extensions/ui#CocoaUI #define LV2_UI__Gtk3UI LV2_UI_PREFIX "Gtk3UI" ///< http://lv2plug.in/ns/extensions/ui#Gtk3UI +#define LV2_UI__Gtk4UI LV2_UI_PREFIX "Gtk4UI" ///< http://lv2plug.in/ns/extensions/ui#Gtk4UI #define LV2_UI__GtkUI LV2_UI_PREFIX "GtkUI" ///< http://lv2plug.in/ns/extensions/ui#GtkUI #define LV2_UI__PortNotification LV2_UI_PREFIX "PortNotification" ///< http://lv2plug.in/ns/extensions/ui#PortNotification #define LV2_UI__PortProtocol LV2_UI_PREFIX "PortProtocol" ///< http://lv2plug.in/ns/extensions/ui#PortProtocol #define LV2_UI__Qt4UI LV2_UI_PREFIX "Qt4UI" ///< http://lv2plug.in/ns/extensions/ui#Qt4UI #define LV2_UI__Qt5UI LV2_UI_PREFIX "Qt5UI" ///< http://lv2plug.in/ns/extensions/ui#Qt5UI +#define LV2_UI__Qt6UI LV2_UI_PREFIX "Qt6UI" ///< http://lv2plug.in/ns/extensions/ui#Qt6UI #define LV2_UI__UI LV2_UI_PREFIX "UI" ///< http://lv2plug.in/ns/extensions/ui#UI #define LV2_UI__WindowsUI LV2_UI_PREFIX "WindowsUI" ///< http://lv2plug.in/ns/extensions/ui#WindowsUI #define LV2_UI__X11UI LV2_UI_PREFIX "X11UI" ///< http://lv2plug.in/ns/extensions/ui#X11UI @@ -81,7 +69,7 @@ /** The index returned by LV2UI_Port_Map::port_index() for unknown ports. */ -#define LV2UI_INVALID_PORT_INDEX ((uint32_t)-1) +#define LV2UI_INVALID_PORT_INDEX ((uint32_t)(-1)) #ifdef __cplusplus extern "C" { @@ -523,8 +511,7 @@ typedef struct { This is the entry point to a UI library, which works in the same way as lv2_descriptor() but for UIs rather than plugins. */ -LV2_SYMBOL_EXPORT -const LV2UI_Descriptor* +LV2_SYMBOL_EXPORT const LV2UI_Descriptor* lv2ui_descriptor(uint32_t index); /** @@ -540,4 +527,4 @@ typedef const LV2UI_Descriptor* (*LV2UI_DescriptorFunction)(uint32_t index); @} */ -#endif /* LV2_UI_H */ +#endif // LV2_UI_UI_H diff --git a/include/lv2/units/units.h b/include/lv2/units/units.h index 09ae16b..a6ac4c5 100644 --- a/include/lv2/units/units.h +++ b/include/lv2/units/units.h @@ -1,21 +1,8 @@ -/* - Copyright 2012-2016 David Robillard <d@drobilla.net> +// Copyright 2012-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#ifndef LV2_UNITS_H -#define LV2_UNITS_H +#ifndef LV2_UNITS_UNITS_H +#define LV2_UNITS_UNITS_H /** @defgroup units Units @@ -72,4 +59,4 @@ @} */ -#endif /* LV2_UNITS_H */ +#endif // LV2_UNITS_UNITS_H diff --git a/include/lv2/uri-map/uri-map.h b/include/lv2/uri-map/uri-map.h index 47cde1c..90bc9bd 100644 --- a/include/lv2/uri-map/uri-map.h +++ b/include/lv2/uri-map/uri-map.h @@ -1,21 +1,8 @@ -/* - Copyright 2008-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2008-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC -#ifndef LV2_URI_MAP_H -#define LV2_URI_MAP_H +#ifndef LV2_URI_MAP_URI_MAP_H +#define LV2_URI_MAP_URI_MAP_H /** @defgroup uri-map URI Map @@ -43,7 +30,7 @@ // clang-format on -#include "lv2/core/attributes.h" +#include <lv2/core/attributes.h> #include <stdint.h> @@ -56,8 +43,7 @@ LV2_DISABLE_DEPRECATION_WARNINGS /** Opaque pointer to host data. */ -LV2_DEPRECATED -typedef void* LV2_URI_Map_Callback_Data; +LV2_DEPRECATED typedef void* LV2_URI_Map_Callback_Data; /** URI Map Feature. @@ -66,8 +52,7 @@ typedef void* LV2_URI_Map_Callback_Data; plugin's instantiate method with URI "http://lv2plug.in/ns/ext/uri-map" and data pointed to an instance of this struct. */ -LV2_DEPRECATED -typedef struct { +LV2_DEPRECATED typedef struct { /** Opaque pointer to host data. @@ -118,4 +103,4 @@ LV2_RESTORE_WARNINGS @} */ -#endif /* LV2_URI_MAP_H */ +#endif // LV2_URI_MAP_URI_MAP_H diff --git a/include/lv2/urid/urid.h b/include/lv2/urid/urid.h index b537d14..8dc4332 100644 --- a/include/lv2/urid/urid.h +++ b/include/lv2/urid/urid.h @@ -1,22 +1,9 @@ -/* - Copyright 2008-2016 David Robillard <d@drobilla.net> - Copyright 2011 Gabriel M. Beddingfield <gabrbedd@gmail.com> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2008-2016 David Robillard <d@drobilla.net> +// Copyright 2011 Gabriel M. Beddingfield <gabrbedd@gmail.com> +// SPDX-License-Identifier: ISC -#ifndef LV2_URID_H -#define LV2_URID_H +#ifndef LV2_URID_URID_H +#define LV2_URID_URID_H /** @defgroup urid URID @@ -137,4 +124,4 @@ typedef struct { @} */ -#endif /* LV2_URID_H */ +#endif // LV2_URID_URID_H diff --git a/include/lv2/worker/worker.h b/include/lv2/worker/worker.h index 4fd89f9..2cfd052 100644 --- a/include/lv2/worker/worker.h +++ b/include/lv2/worker/worker.h @@ -1,21 +1,8 @@ -/* - Copyright 2012-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2012-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC -#ifndef LV2_WORKER_H -#define LV2_WORKER_H +#ifndef LV2_WORKER_WORKER_H +#define LV2_WORKER_WORKER_H /** @defgroup worker Worker @@ -28,7 +15,7 @@ @{ */ -#include "lv2/core/lv2.h" +#include <lv2/core/lv2.h> #include <stdint.h> @@ -180,4 +167,4 @@ typedef struct { @} */ -#endif /* LV2_WORKER_H */ +#endif // LV2_WORKER_WORKER_H diff --git a/lv2/atom.lv2/atom.meta.ttl b/lv2/atom.lv2/atom.meta.ttl index adab5f4..e2902c5 100644 --- a/lv2/atom.lv2/atom.meta.ttl +++ b/lv2/atom.lv2/atom.meta.ttl @@ -1,5 +1,4 @@ @prefix atom: <http://lv2plug.in/ns/ext/atom#> . -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -12,107 +11,6 @@ doap:license <http://opensource.org/licenses/isc> ; doap:created "2007-00-00" ; doap:developer <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "2.4" ; - doap:created "2022-05-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.4.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix spelling errors." - ] - ] - ] , [ - doap:revision "2.2" ; - doap:created "2019-02-03" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add lv2_atom_object_get_typed() for easy type-safe access to object properties." - ] - ] - ] , [ - doap:revision "2.0" ; - doap:created "2014-08-08" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.10.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Deprecate Blank and Resource in favour of just Object." - ] , [ - rdfs:label "Add lv2_atom_forge_is_object_type() and lv2_atom_forge_is_blank() to ease backwards compatibility." - ] , [ - rdfs:label "Add lv2_atom_forge_key() for terser object writing." - ] , [ - rdfs:label "Add lv2_atom_sequence_clear() and lv2_atom_sequence_append_event() helper functions." - ] - ] - ] , [ - doap:revision "1.8" ; - doap:created "2014-01-04" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.8.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Make lv2_atom_*_is_end() arguments const." - ] - ] - ] , [ - doap:revision "1.6" ; - doap:created "2013-05-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.6.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix crash in forge.h when pushing atoms to a full buffer." - ] - ] - ] , [ - doap:revision "1.4" ; - doap:created "2013-01-27" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix lv2_atom_sequence_end()." - ] , [ - rdfs:label "Remove atom:stringType in favour of owl:onDatatype so generic tools can understand and validate atom literals." - ] , [ - rdfs:label "Improve atom documentation." - ] - ] - ] , [ - doap:revision "1.2" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix implicit conversions in forge.h that are invalid in C++11." - ] , [ - rdfs:label "Fix lv2_atom_object_next() on 32-bit platforms." - ] , [ - rdfs:label "Add lv2_atom_object_body_get()." - ] , [ - rdfs:label "Fix outdated documentation in forge.h." - ] , [ - rdfs:label "Use consistent label style." - ] , [ - rdfs:label "Add LV2_ATOM_CONTENTS_CONST and LV2_ATOM_BODY_CONST." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; lv2:documentation """ An atom:Atom is a simple generic data container for holding any type of Plain @@ -549,4 +447,3 @@ This protocol applies to atom ports. The host must transfer the complete atom contained in the port, including header. """^^lv2:Markdown . - diff --git a/lv2/atom.lv2/atom.ttl b/lv2/atom.lv2/atom.ttl index bdeaebf..064d274 100644 --- a/lv2/atom.lv2/atom.ttl +++ b/lv2/atom.lv2/atom.ttl @@ -161,7 +161,7 @@ atom:Resource rdfs:subClassOf atom:Object ; rdfs:label "Resource" ; rdfs:comment "A named collection of properties with a URI." ; - owl:deprecated "true"^^xsd:boolean ; + owl:deprecated true ; atom:cType "LV2_Atom_Object" . atom:Blank @@ -169,7 +169,7 @@ atom:Blank rdfs:subClassOf atom:Object ; rdfs:label "Blank" ; rdfs:comment "An anonymous collection of properties without a URI." ; - owl:deprecated "true"^^xsd:boolean ; + owl:deprecated true ; atom:cType "LV2_Atom_Object" . atom:Sound @@ -244,4 +244,3 @@ atom:atomTransfer a ui:PortProtocol ; rdfs:label "atom transfer" ; rdfs:comment "A port protocol for transferring atoms." . - diff --git a/lv2/atom.lv2/manifest.ttl b/lv2/atom.lv2/manifest.ttl index 3cb5134..8875a20 100644 --- a/lv2/atom.lv2/manifest.ttl +++ b/lv2/atom.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 2 ; lv2:microVersion 4 ; rdfs:seeAlso <atom.ttl> . - diff --git a/lv2/buf-size.lv2/buf-size.meta.ttl b/lv2/buf-size.lv2/buf-size.meta.ttl index b1d8011..dbce35b 100644 --- a/lv2/buf-size.lv2/buf-size.meta.ttl +++ b/lv2/buf-size.lv2/buf-size.meta.ttl @@ -1,5 +1,4 @@ @prefix bufsz: <http://lv2plug.in/ns/ext/buf-size#> . -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -11,39 +10,6 @@ doap:shortdesc "Access to, and restrictions on, buffer sizes." ; doap:created "2012-08-07" ; doap:developer <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "1.4" ; - doap:created "2015-09-18" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add bufsz:nominalBlockLength option." - ] , [ - rdfs:label "Add bufsz:coarseBlockLength feature." - ] - ] - ] , [ - doap:revision "1.2" ; - doap:created "2012-12-21" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix typo in bufsz:sequenceSize label." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; lv2:documentation """ This extension defines a facility for plugins to get information about the @@ -154,4 +120,3 @@ This should be provided as an option by hosts that support event ports auxiliary buffers large enough to copy the input. """^^lv2:Markdown . - diff --git a/lv2/buf-size.lv2/buf-size.ttl b/lv2/buf-size.lv2/buf-size.ttl index 4f6bd52..be18fbe 100644 --- a/lv2/buf-size.lv2/buf-size.ttl +++ b/lv2/buf-size.lv2/buf-size.ttl @@ -65,4 +65,3 @@ bufsz:sequenceSize rdfs:label "sequence size" ; rdfs:comment "The maximum size of a sequence, in bytes." ; rdfs:range xsd:nonNegativeInteger . - diff --git a/lv2/buf-size.lv2/manifest.ttl b/lv2/buf-size.lv2/manifest.ttl index d242f97..b9cd1ec 100644 --- a/lv2/buf-size.lv2/manifest.ttl +++ b/lv2/buf-size.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 1 ; lv2:microVersion 4 ; rdfs:seeAlso <buf-size.ttl> . - diff --git a/lv2/core.lv2/lv2core.meta.ttl b/lv2/core.lv2/lv2core.meta.ttl index bb7b185..77f2c67 100644 --- a/lv2/core.lv2/lv2core.meta.ttl +++ b/lv2/core.lv2/lv2core.meta.ttl @@ -1,5 +1,4 @@ @prefix lv2: <http://lv2plug.in/ns/lv2core#> . -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @@ -15,135 +14,6 @@ doap:developer <http://plugin.org.uk/swh.xrdf#me> , <http://drobilla.net/drobilla#me> ; doap:maintainer <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "18.6" ; - doap:created "2022-08-12" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.8.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix inconsistent plugin class labels." - ] - ] - ] , [ - doap:revision "18.4" ; - doap:created "2022-05-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.4.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix spelling errors." - ] - ] - ] , [ - doap:revision "18.0" ; - doap:created "2020-04-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add lv2:Markdown datatype." - ] , [ - rdfs:label "Deprecate lv2:reportsLatency." - ] - ] - ] , [ - doap:revision "16.0" ; - doap:created "2019-02-03" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add lv2:MIDIPlugin class." - ] , [ - rdfs:label "Rework port restrictions so that presets can be validated." - ] - ] - ] , [ - doap:revision "14.0" ; - doap:created "2016-09-18" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add lv2_util.h with lv2_features_data() and lv2_features_query()." - ] , [ - rdfs:label "Add lv2:enabled designation." - ] - ] - ] , [ - doap:revision "12.4" ; - doap:created "2015-04-07" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.12.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Relax domain of lv2:minimum lv2:maximum and lv2:default so they can be used to describe properties/parameters as well." - ] , [ - rdfs:label "Add extern C and visibility attribute to LV2_SYMBOL_EXPORT." - ] , [ - rdfs:label "Add lv2:isSideChain port property." - ] - ] - ] , [ - doap:revision "12.2" ; - doap:created "2014-08-08" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.10.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Clarify lv2_descriptor() and lv2_lib_descriptor() documentation." - ] - ] - ] , [ - doap:revision "12.0" ; - doap:created "2014-01-04" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.8.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add lv2:prototype for property inheritance." - ] - ] - ] , [ - doap:revision "10.0" ; - doap:created "2013-02-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add lv2:EnvelopePlugin class." - ] , [ - rdfs:label "Add lv2:control for designating primary event-based control ports." - ] , [ - rdfs:label "Set range of lv2:designation to lv2:Designation." - ] , [ - rdfs:label "Make lv2:Parameter rdfs:subClassOf rdf:Property." - ] , [ - rdfs:label "Reserve minor version 0 for unstable development plugins." - ] - ] - ] , [ - doap:revision "8.2" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Use consistent label style." - ] - ] - ] , [ - doap:revision "8.0" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial unified release." - ] - ] - ] ; lv2:documentation """ LV2 is an interface for writing audio plugins in C or compatible languages, @@ -256,7 +126,7 @@ If the value has no explicit datatype, it is assumed to be a valid XHTML Basic 1.1 fragment suitable for use as the content of the `body` element of a page. XHTML Basic is a W3C Recommendation which defines a simplified subset of XHTML -intended to be reasonable to implement with limited resources, for exampe on +intended to be reasonable to implement with limited resources, for example on embedded devices. See [XHTML Basic, Section 3](http://www.w3.org/TR/xhtml-basic/#s_xhtmlmodules) for a list of valid tags. @@ -832,4 +702,3 @@ but should not be considered a part of the main signal chain. Sidechain ports SHOULD be lv2:connectionOptional, and may be ignored by hosts. """^^lv2:Markdown . - diff --git a/lv2/core.lv2/lv2core.ttl b/lv2/core.lv2/lv2core.ttl index 7722cac..c7dcf50 100644 --- a/lv2/core.lv2/lv2core.ttl +++ b/lv2/core.lv2/lv2core.ttl @@ -17,7 +17,7 @@ lv2:Specification owl:Class ; rdfs:subClassOf doap:Project ; rdfs:label "Specification" ; - rdfs:comment "An LV2 specifiation." . + rdfs:comment "An LV2 specification." . lv2:Markdown a rdfs:Datatype ; @@ -374,7 +374,7 @@ lv2:connectionOptional lv2:reportsLatency a lv2:PortProperty ; - owl:deprecated "true"^^xsd:boolean ; + owl:deprecated true ; rdfs:label "reports latency" ; rdfs:comment "Control port value is the plugin latency in frames." . @@ -524,6 +524,13 @@ lv2:BandpassPlugin rdfs:label "Bandpass Filter Plugin" ; rdfs:comment "A filter that attenuates frequencies outside of some band." . +lv2:BandstopPlugin + a rdfs:Class , + owl:Class ; + rdfs:subClassOf lv2:FilterPlugin ; + rdfs:label "Bandstop Filter Plugin" ; + rdfs:comment "A filter that attenuates frequencies inside of some band." . + lv2:HighpassPlugin a rdfs:Class , owl:Class ; @@ -670,4 +677,3 @@ lv2:MIDIPlugin rdfs:subClassOf lv2:Plugin ; rdfs:label "MIDI Plugin" ; rdfs:comment "A plugin that primarily processes MIDI messages." . - diff --git a/lv2/core.lv2/manifest.ttl b/lv2/core.lv2/manifest.ttl index 7f5e37e..0072346 100644 --- a/lv2/core.lv2/manifest.ttl +++ b/lv2/core.lv2/manifest.ttl @@ -4,12 +4,11 @@ <http://lv2plug.in/ns/lv2core> a lv2:Specification ; - lv2:minorVersion 18 ; - lv2:microVersion 6 ; + lv2:minorVersion 19 ; + lv2:microVersion 0 ; rdfs:seeAlso <lv2core.ttl> . <http://lv2plug.in/ns/lv2> a doap:Project ; rdfs:seeAlso <meta.ttl> , <people.ttl> . - diff --git a/lv2/core.lv2/meta.ttl b/lv2/core.lv2/meta.ttl index d3a736f..014285c 100644 --- a/lv2/core.lv2/meta.ttl +++ b/lv2/core.lv2/meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @prefix meta: <http://lv2plug.in/ns/meta#> . @@ -32,231 +31,4 @@ THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH R meta:gabrbedd , meta:daste , meta:kfoltman , - meta:paniq ; - doap:release [ - doap:revision "1.18.9" ; - doap:created "2022-08-14" ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix includedir in pkg-config file." - ] - ] - ] , [ - doap:revision "1.18.8" ; - doap:created "2022-08-12" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.8.tar.xz> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "lv2specgen: Fix installed data paths." - ] , [ - rdfs:label "Fix documentation build with meson 0.56.2." - ] , [ - rdfs:label "Fix lv2.h missing from installation." - ] , [ - rdfs:label "Fix documentation build with Python 3.7." - ] , [ - rdfs:label "eg-midigate: Fix output timing." - ] , [ - rdfs:label "eg-sampler: Add resampling via libsamplerate." - ] , [ - rdfs:label "eg-sampler: Fix potentially corrupt notification events." - ] - ] - ] , [ - doap:revision "1.18.6" ; - doap:created "2022-07-07" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.6.tar.xz> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix or avoid new compiler and tool warnings." - ] , [ - rdfs:label "Add dark mode style for documentation." - ] , [ - rdfs:label "Clean up and modernize Python support code." - ] , [ - rdfs:label "Remove archaic properties from foaf vocabulary." - ] , [ - rdfs:label "Replace canonical dcs ontology with a minimal version for LV2." - ] , [ - rdfs:label "Switch to Meson build system." - ] , [ - rdfs:label "Separate API headers from data." - ] , [ - rdfs:label "Rearrange source tree to be directly usable by dependants." - ] - ] - ] , [ - doap:revision "1.18.4" ; - doap:created "2022-05-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.4.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix spelling errors." - ] , [ - rdfs:label "Fix build issues with newer toolchains." - ] - ] - ] , [ - doap:revision "1.18.2" ; - doap:created "2021-01-07" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.2.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "eg-sampler: Save and restore gain parameter value." - ] , [ - rdfs:label "Various code cleanups and infrastructure improvements." - ] - ] - ] , [ - doap:revision "1.18.0" ; - doap:created "2020-04-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Improve documentation." - ] , [ - rdfs:label "Separate extended documentation from primary data." - ] - ] - ] , [ - doap:revision "1.16.0" ; - doap:created "2019-02-03" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add core/attributes.h utility header." - ] , [ - rdfs:label "eg-sampler: Add waveform display to UI." - ] , [ - rdfs:label "eg-midigate: Respond to \"all notes off\" MIDI message." - ] , [ - rdfs:label "Simplify use of lv2specgen." - ] , [ - rdfs:label "Add lv2_validate utility." - ] , [ - rdfs:label "Install headers to simpler paths." - ] , [ - rdfs:label "Aggressively deprecate uri-map and event extensions." - ] , [ - rdfs:label "Upgrade build system and fix building with Python 3.7." - ] - ] - ] , [ - doap:revision "1.14.0" ; - doap:created "2016-09-19" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label """eg-scope: Don't feed back UI state updates.""" - ] , [ - rdfs:label "eg-sampler: Fix handling of state file paths." - ] , [ - rdfs:label "eg-sampler: Support thread-safe state restoration." - ] - ] - ] , [ - doap:revision "1.12.0" ; - doap:created "2015-04-07" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.12.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "eg-sampler: Support patch:Get, and request initial state from UI." - ] , [ - rdfs:label "eg-sampler: Add gain parameter." - ] , [ - rdfs:label "Fix merging of version histories in specification documentation." - ] , [ - rdfs:label "Improve API documentation." - ] , [ - rdfs:label "Simplify property restrictions by removing redundancy." - ] - ] - ] , [ - doap:revision "1.10.0" ; - doap:created "2014-08-08" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.10.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "lv2specgen: Display deprecated warning on classes marked owl:deprecated." - ] , [ - rdfs:label "Fix -Wconversion warnings in headers." - ] , [ - rdfs:label "Upgrade to waf 1.7.16." - ] - ] - ] , [ - doap:revision "1.8.0" ; - doap:created "2014-01-04" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.8.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add scope example plugin from Robin Gareus." - ] , [ - rdfs:label "lv2specgen: Fix links to externally defined terms." - ] , [ - rdfs:label "Install lv2specgen for use by other projects." - ] - ] - ] , [ - doap:revision "1.6.0" ; - doap:created "2013-08-09" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.6.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix port indices of metronome example." - ] , [ - rdfs:label "Fix lv2specgen usage from command line." - ] , [ - rdfs:label "Upgrade to waf 1.7.11." - ] - ] - ] , [ - doap:revision "1.4.0" ; - doap:created "2013-02-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add metronome example plugin to demonstrate sample accurate tempo sync." - ] , [ - rdfs:label "Generate book-style HTML documentation from example plugins." - ] - ] - ] , [ - doap:revision "1.2.0" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Move all project metadata for extensions (e.g. change log) to separate files to spare hosts from loading them during discovery." - ] , [ - rdfs:label "Use stricter datatype definitions conformant with the XSD and OWL specifications for better validation." - ] - ] - ] , [ - doap:revision "1.0.0" ; - doap:created "2012-04-16" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label """Initial release as a unified project. Projects can now simply depend on the pkg-config package 'lv2' for all official LV2 APIs.""" - ] , [ - rdfs:label "New extensions: atom, log, parameters, patch, port-groups, port-props, resize-port, state, time, worker." - ] - ] - ] . - + meta:paniq . diff --git a/lv2/core.lv2/people.ttl b/lv2/core.lv2/people.ttl index 52d0384..c735af6 100644 --- a/lv2/core.lv2/people.ttl +++ b/lv2/core.lv2/people.ttl @@ -48,4 +48,3 @@ meta:bmwiedemann a foaf:Person ; foaf:name "Bernhard M. Wiedemann" ; foaf:mbox <bwiedemann@suse.de> . - diff --git a/lv2/data-access.lv2/data-access.meta.ttl b/lv2/data-access.lv2/data-access.meta.ttl index f3a3d19..735bf0b 100644 --- a/lv2/data-access.lv2/data-access.meta.ttl +++ b/lv2/data-access.lv2/data-access.meta.ttl @@ -1,5 +1,4 @@ @prefix da: <http://lv2plug.in/ns/ext/data-access#> . -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -12,17 +11,6 @@ doap:shortdesc "Provides access to plugin extension data." ; doap:created "2008-00-00" ; doap:developer <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "1.6" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial unified release." - ] - ] - ] ; lv2:documentation """ This extension defines a feature, LV2_Extension_Data_Feature, which provides @@ -39,4 +27,3 @@ LV2_Descriptor::extension_data() with URI LV2_DATA_ACCESS_URI and data pointed to an instance of LV2_Extension_Data_Feature. """^^lv2:Markdown . - diff --git a/lv2/data-access.lv2/data-access.ttl b/lv2/data-access.lv2/data-access.ttl index b0dc6f4..b75cc81 100644 --- a/lv2/data-access.lv2/data-access.ttl +++ b/lv2/data-access.lv2/data-access.ttl @@ -7,4 +7,3 @@ rdfs:label "data access" ; rdfs:comment "A feature that provides access to plugin extension data." ; rdfs:seeAlso <data-access.meta.ttl> . - diff --git a/lv2/data-access.lv2/manifest.ttl b/lv2/data-access.lv2/manifest.ttl index 9585a5e..54fcace 100644 --- a/lv2/data-access.lv2/manifest.ttl +++ b/lv2/data-access.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 1 ; lv2:microVersion 6 ; rdfs:seeAlso <data-access.ttl> . - diff --git a/lv2/dynmanifest.lv2/dynmanifest.meta.ttl b/lv2/dynmanifest.lv2/dynmanifest.meta.ttl index 2391678..9c2919d 100644 --- a/lv2/dynmanifest.lv2/dynmanifest.meta.ttl +++ b/lv2/dynmanifest.lv2/dynmanifest.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix dman: <http://lv2plug.in/ns/ext/dynmanifest#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @@ -14,27 +13,6 @@ doap:shortdesc "Support for dynamic manifest data generation." ; doap:programming-language "C" ; doap:developer <http://lv2plug.in/ns/meta#daste> ; - doap:release [ - doap:revision "1.6" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Use consistent label style." - ] - ] - ] , [ - doap:revision "1.4" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial unified release." - ] - ] - ] ; lv2:documentation """ The LV2 API, on its own, cannot be used to write plugin libraries where data is @@ -108,4 +86,3 @@ All relative URIs in the generated data MUST be relative to the base path that would be used to parse a normal LV2 manifest (the bundle path). """^^lv2:Markdown . - diff --git a/lv2/dynmanifest.lv2/dynmanifest.ttl b/lv2/dynmanifest.lv2/dynmanifest.ttl index b46d694..12be4dc 100644 --- a/lv2/dynmanifest.lv2/dynmanifest.ttl +++ b/lv2/dynmanifest.lv2/dynmanifest.ttl @@ -21,4 +21,3 @@ dman:DynManifest rdfs:comment "A DynManifest MUST have at least one lv2:binary." ] ; rdfs:comment "Dynamic manifest for an LV2 binary." . - diff --git a/lv2/dynmanifest.lv2/manifest.ttl b/lv2/dynmanifest.lv2/manifest.ttl index db27a73..2c072a3 100644 --- a/lv2/dynmanifest.lv2/manifest.ttl +++ b/lv2/dynmanifest.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 1 ; lv2:microVersion 6 ; rdfs:seeAlso <dynmanifest.ttl> . - diff --git a/lv2/event.lv2/event.meta.ttl b/lv2/event.lv2/event.meta.ttl index d8b734a..4492d2b 100644 --- a/lv2/event.lv2/event.meta.ttl +++ b/lv2/event.lv2/event.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix ev: <http://lv2plug.in/ns/ext/event#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @@ -13,63 +12,6 @@ doap:created "2008-00-00" ; doap:developer <http://drobilla.net/drobilla#me> , <http://lv2plug.in/ns/meta#larsl> ; - doap:release [ - doap:revision "1.14" ; - doap:created "2022-05-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.4.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix spelling errors." - ] - ] - ] , [ - doap:revision "1.12" ; - doap:created "2014-08-08" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.10.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Minor documentation improvements." - ] - ] - ] , [ - doap:revision "1.10" ; - doap:created "2013-01-13" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix incorrect return type in lv2_event_get()." - ] - ] - ] , [ - doap:revision "1.8" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Make event iterator gracefully handle optional ports." - ] , [ - rdfs:label "Remove asserts from event-helper.h." - ] , [ - rdfs:label "Use more precise domain and range for EventPort properties." - ] , [ - rdfs:label "Use consistent label style." - ] - ] - ] , [ - doap:revision "1.6" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial unified release." - ] - ] - ] ; lv2:documentation """ <span class="warning">This extension is deprecated.</span> New implementations @@ -215,4 +157,3 @@ their output type on an input port so the host can make more sense of the plugin and provide a more sensible interface. """^^lv2:Markdown . - diff --git a/lv2/event.lv2/event.ttl b/lv2/event.lv2/event.ttl index 2d871f6..ebcbd3a 100644 --- a/lv2/event.lv2/event.ttl +++ b/lv2/event.lv2/event.ttl @@ -82,4 +82,3 @@ ev:inheritsTimeStamp rdfs:range lv2:Port ; rdfs:label "inherits time stamp type" ; rdfs:comment "Output port inherits time stamp types from an input port." . - diff --git a/lv2/event.lv2/manifest.ttl b/lv2/event.lv2/manifest.ttl index 230fe73..15b095b 100644 --- a/lv2/event.lv2/manifest.ttl +++ b/lv2/event.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 1 ; lv2:microVersion 14 ; rdfs:seeAlso <event.ttl> . - diff --git a/lv2/instance-access.lv2/instance-access.meta.ttl b/lv2/instance-access.lv2/instance-access.meta.ttl index 1106334..b9cdfc4 100644 --- a/lv2/instance-access.lv2/instance-access.meta.ttl +++ b/lv2/instance-access.lv2/instance-access.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix ia: <http://lv2plug.in/ns/ext/instance-access#> . @@ -12,17 +11,6 @@ doap:shortdesc "Provides access to the LV2_Handle of a plugin." ; doap:created "2010-10-04" ; doap:developer <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "1.6" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial unified release." - ] - ] - ] ; lv2:documentation """ This extension defines a feature which allows plugin UIs to get a direct handle @@ -38,4 +26,3 @@ instantiate method with URI LV2_INSTANCE_ACCESS_URI and data pointed directly to the LV2_Handle of the plugin instance. """^^lv2:Markdown . - diff --git a/lv2/instance-access.lv2/instance-access.ttl b/lv2/instance-access.lv2/instance-access.ttl index 637f4e0..068ef4f 100644 --- a/lv2/instance-access.lv2/instance-access.ttl +++ b/lv2/instance-access.lv2/instance-access.ttl @@ -7,4 +7,3 @@ rdfs:label "instance access" ; rdfs:comment "A feature that provides access to a plugin instance." ; rdfs:seeAlso <instance-access.meta.ttl> . - diff --git a/lv2/instance-access.lv2/manifest.ttl b/lv2/instance-access.lv2/manifest.ttl index e6c8810..3da863d 100644 --- a/lv2/instance-access.lv2/manifest.ttl +++ b/lv2/instance-access.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 1 ; lv2:microVersion 6 ; rdfs:seeAlso <instance-access.ttl> . - diff --git a/lv2/log.lv2/log.meta.ttl b/lv2/log.lv2/log.meta.ttl index 87cff43..0c74e6c 100644 --- a/lv2/log.lv2/log.meta.ttl +++ b/lv2/log.lv2/log.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix log: <http://lv2plug.in/ns/ext/log#> . @@ -11,47 +10,6 @@ doap:shortdesc "A feature for writing log messages." ; doap:created "2012-01-12" ; doap:developer <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "2.4" ; - doap:created "2016-07-30" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add lv2_log_logger_set_map() for changing the URI map of an existing logger." - ] - ] - ] , [ - doap:revision "2.2" ; - doap:created "2014-01-04" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.8.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add missing include string.h to logger.h for memset." - ] - ] - ] , [ - doap:revision "2.0" ; - doap:created "2013-01-08" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add logger convenience API." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; lv2:documentation """ This extension defines a feature, log:log, which allows plugins to print log @@ -123,4 +81,3 @@ the host must pass an LV2_Feature to LV2_Descriptor::instantiate() with URI LV2_LOG__log and data pointed to an instance of LV2_Log_Log. """^^lv2:Markdown . - diff --git a/lv2/log.lv2/log.ttl b/lv2/log.lv2/log.ttl index 0b334ed..10f0acc 100644 --- a/lv2/log.lv2/log.ttl +++ b/lv2/log.lv2/log.ttl @@ -45,4 +45,3 @@ log:log a lv2:Feature ; rdfs:label "log" ; rdfs:comment "Logging feature." . - diff --git a/lv2/log.lv2/manifest.ttl b/lv2/log.lv2/manifest.ttl index bcaeff3..f448ffe 100644 --- a/lv2/log.lv2/manifest.ttl +++ b/lv2/log.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 2 ; lv2:microVersion 4 ; rdfs:seeAlso <log.ttl> . - diff --git a/lv2/midi.lv2/manifest.ttl b/lv2/midi.lv2/manifest.ttl index f141936..7c9efcd 100644 --- a/lv2/midi.lv2/manifest.ttl +++ b/lv2/midi.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 1 ; lv2:microVersion 10 ; rdfs:seeAlso <midi.ttl> . - diff --git a/lv2/midi.lv2/midi.meta.ttl b/lv2/midi.lv2/midi.meta.ttl index 6dc80d6..8afb944 100644 --- a/lv2/midi.lv2/midi.meta.ttl +++ b/lv2/midi.lv2/midi.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -14,47 +13,6 @@ doap:created "2006-00-00" ; doap:developer <http://lv2plug.in/ns/meta#larsl> , <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "1.10" ; - doap:created "2019-02-03" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix incorrect range of midi:chunk." - ] - ] - ] , [ - doap:revision "1.8" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Use consistent label style." - ] , [ - rdfs:label "Add midi:binding and midi:channel predicates." - ] , [ - rdfs:label "Add midi:HexByte datatype for status bytes and masks." - ] , [ - rdfs:label "Remove non-standard midi:Tick message type." - ] , [ - rdfs:label "Add C definitions for message types and standard controllers." - ] , [ - rdfs:label "Fix definition of SystemExclusive status byte." - ] - ] - ] , [ - doap:revision "1.6" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial unified release." - ] - ] - ] ; lv2:documentation """ This specification defines a data type for a MIDI message, midi:MidiEvent, @@ -112,4 +70,3 @@ midi:statusMask This is a status byte with the lower nibble set to zero. """^^lv2:Markdown . - diff --git a/lv2/midi.lv2/midi.ttl b/lv2/midi.lv2/midi.ttl index 4a0e8c9..5dfdbc7 100644 --- a/lv2/midi.lv2/midi.ttl +++ b/lv2/midi.lv2/midi.ttl @@ -362,4 +362,3 @@ midi:velocity rdfs:label "velocity" ; rdfs:range midi:HexByte ; rdfs:comment "The velocity of a note message (0 to 127)." . - diff --git a/lv2/morph.lv2/manifest.ttl b/lv2/morph.lv2/manifest.ttl index 7c85cfd..c63317b 100644 --- a/lv2/morph.lv2/manifest.ttl +++ b/lv2/morph.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 1 ; lv2:microVersion 0 ; rdfs:seeAlso <morph.ttl> . - diff --git a/lv2/morph.lv2/morph.meta.ttl b/lv2/morph.lv2/morph.meta.ttl index c247783..09945c0 100644 --- a/lv2/morph.lv2/morph.meta.ttl +++ b/lv2/morph.lv2/morph.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -11,17 +10,6 @@ doap:shortdesc "Ports that can dynamically change type." ; doap:created "2012-05-22" ; doap:developer <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "1.0" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; lv2:documentation """ This extension defines two port types: morph:MorphPort, which has a @@ -87,4 +75,3 @@ The currently active type of the port. This is for dynamic use as an option and SHOULD NOT be listed in the static plugin data. """^^lv2:Markdown . - diff --git a/lv2/morph.lv2/morph.ttl b/lv2/morph.lv2/morph.ttl index 9b8ef51..cd21dd9 100644 --- a/lv2/morph.lv2/morph.ttl +++ b/lv2/morph.lv2/morph.ttl @@ -43,4 +43,3 @@ morph:currentType rdfs:domain morph:MorphPort ; rdfs:label "current type" ; rdfs:comment "The currently active type of the port." . - diff --git a/lv2/options.lv2/manifest.ttl b/lv2/options.lv2/manifest.ttl index 18db448..c54456c 100644 --- a/lv2/options.lv2/manifest.ttl +++ b/lv2/options.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 1 ; lv2:microVersion 4 ; rdfs:seeAlso <options.ttl> . - diff --git a/lv2/options.lv2/options.meta.ttl b/lv2/options.lv2/options.meta.ttl index 838b0b9..33946f4 100644 --- a/lv2/options.lv2/options.meta.ttl +++ b/lv2/options.lv2/options.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -12,37 +11,6 @@ doap:shortdesc "Runtime options for LV2 plugins and UIs." ; doap:created "2012-08-20" ; doap:developer <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "1.4" ; - doap:created "2019-02-03" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Relax range of opts:requiredOption and opts:supportedOption" - ] - ] - ] , [ - doap:revision "1.2" ; - doap:created "2013-01-10" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Set the range of opts:requiredOption and opts:supportedOption to opts:Option." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; lv2:documentation """ This extension defines a facility for <q>options</q>, which are values the host @@ -126,4 +94,3 @@ The host SHOULD provide a value for the specified option if one is known, or provide the user an opportunity to specify one if possible. """^^lv2:Markdown . - diff --git a/lv2/options.lv2/options.ttl b/lv2/options.lv2/options.ttl index 5f9fcc9..7233180 100644 --- a/lv2/options.lv2/options.ttl +++ b/lv2/options.lv2/options.ttl @@ -41,4 +41,3 @@ opts:supportedOption rdfs:range rdf:Property ; rdfs:label "supported option" ; rdfs:comment "An option supported or by the instance." . - diff --git a/lv2/parameters.lv2/manifest.ttl b/lv2/parameters.lv2/manifest.ttl index 57f5d2e..4889ae5 100644 --- a/lv2/parameters.lv2/manifest.ttl +++ b/lv2/parameters.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 1 ; lv2:microVersion 4 ; rdfs:seeAlso <parameters.ttl> . - diff --git a/lv2/parameters.lv2/parameters.meta.ttl b/lv2/parameters.lv2/parameters.meta.ttl index 9d7c623..653f715 100644 --- a/lv2/parameters.lv2/parameters.meta.ttl +++ b/lv2/parameters.lv2/parameters.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -8,41 +7,6 @@ <http://lv2plug.in/ns/ext/parameters> a doap:Project ; doap:name "LV2 Parameters" ; - doap:release [ - doap:revision "1.4" ; - doap:created "2015-04-07" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.12.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add range to parameters so hosts know how to control them." - ] - ] - ] , [ - doap:revision "1.2" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Use consistent label style." - ] , [ - rdfs:label "Add param:sampleRate." - ] , [ - rdfs:label "Add parameters.h of URI defines for convenience." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; doap:created "2009-00-00" ; doap:shortdesc "Common parameters for audio processing." ; doap:maintainer <http://drobilla.net/drobilla#me> ; @@ -72,4 +36,3 @@ and wet percentages can be calculated from the following equations: Typically, maximum value of 1 or 100 and minimum value of 0 should be used. """^^lv2:Markdown . - diff --git a/lv2/parameters.lv2/parameters.ttl b/lv2/parameters.lv2/parameters.ttl index 9987812..2e2c5df 100644 --- a/lv2/parameters.lv2/parameters.ttl +++ b/lv2/parameters.lv2/parameters.ttl @@ -202,4 +202,3 @@ param:CompressorControls ] , [ lv2:designation param:ratio ] . - diff --git a/lv2/patch.lv2/manifest.ttl b/lv2/patch.lv2/manifest.ttl index 4bf9cfb..fee2375 100644 --- a/lv2/patch.lv2/manifest.ttl +++ b/lv2/patch.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 2 ; lv2:microVersion 10 ; rdfs:seeAlso <patch.ttl> . - diff --git a/lv2/patch.lv2/patch.meta.ttl b/lv2/patch.lv2/patch.meta.ttl index 12cb6c6..edbb5dc 100644 --- a/lv2/patch.lv2/patch.meta.ttl +++ b/lv2/patch.lv2/patch.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -12,87 +11,6 @@ doap:developer <http://drobilla.net/drobilla#me> ; doap:name "LV2 Patch" ; doap:shortdesc "A protocol for accessing and manipulating properties." ; - doap:release [ - doap:revision "2.10" ; - doap:created "2022-05-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.4.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix spelling errors." - ] , [ - rdfs:label "Make the type of patch:wildcard more precise." - ] , [ - rdfs:label "Fix type and range of patch:value." - ] - ] - ] , [ - doap:revision "2.8" ; - doap:created "2020-04-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix incorrect type of patch:sequenceNumber." - ] - ] - ] , [ - doap:revision "2.6" ; - doap:created "2019-02-03" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add patch:accept property." - ] , [ - rdfs:label "Add patch:context property." - ] - ] - ] , [ - doap:revision "2.4" ; - doap:created "2015-04-07" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.12.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Define patch:Get with no subject to implicitly apply to receiver. This can be used by UIs to get an initial description of a plugin." - ] , [ - rdfs:label "Add patch:Copy method." - ] - ] - ] , [ - doap:revision "2.2" ; - doap:created "2014-08-08" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.10.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add patch:sequenceNumber for associating replies with requests." - ] - ] - ] , [ - doap:revision "2.0" ; - doap:created "2013-01-10" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Make patch:Set a compact message for setting one property." - ] , [ - rdfs:label "Add patch:readable and patch:writable for describing available properties." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; lv2:documentation """ This is a vocabulary for messages that access and manipulate properties. @@ -385,4 +303,3 @@ interfaces to present appropriate controls. For example: patch:writable eg:title . """^^lv2:Markdown . - diff --git a/lv2/patch.lv2/patch.ttl b/lv2/patch.lv2/patch.ttl index 33d04d1..59ca118 100644 --- a/lv2/patch.lv2/patch.ttl +++ b/lv2/patch.lv2/patch.ttl @@ -245,4 +245,3 @@ patch:writable rdfs:label "writable" ; rdfs:range rdf:Property ; rdfs:comment "A property that can be set with a patch:Set or patch:Patch message." . - diff --git a/lv2/port-groups.lv2/manifest.ttl b/lv2/port-groups.lv2/manifest.ttl index a887cb0..7df99a8 100644 --- a/lv2/port-groups.lv2/manifest.ttl +++ b/lv2/port-groups.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 1 ; lv2:microVersion 4 ; rdfs:seeAlso <port-groups.ttl> . - diff --git a/lv2/port-groups.lv2/port-groups.meta.ttl b/lv2/port-groups.lv2/port-groups.meta.ttl index 67408ec..a76d783 100644 --- a/lv2/port-groups.lv2/port-groups.meta.ttl +++ b/lv2/port-groups.lv2/port-groups.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -12,40 +11,7 @@ doap:shortdesc "Multi-channel groups of LV2 ports." ; doap:created "2008-00-00" ; doap:developer <http://lv2plug.in/ns/meta#larsl> , - <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "1.4" ; - doap:created "2020-04-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Replace broken links with detailed Ambisonic channel descriptions." - ] , [ - rdfs:label "Remove incorrect type of pg:letterCode." - ] - ] - ] , [ - doap:revision "1.2" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Use consistent label style." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] . + <http://drobilla.net/drobilla#me> . pg:Group lv2:documentation """ @@ -141,4 +107,3 @@ does not depend on a particular speaker configuration; a decoder can be used to convert an ambisonic stream for any speaker configuration. """^^lv2:Markdown . - diff --git a/lv2/port-groups.lv2/port-groups.ttl b/lv2/port-groups.lv2/port-groups.ttl index 2806821..9fc5c34 100644 --- a/lv2/port-groups.lv2/port-groups.ttl +++ b/lv2/port-groups.lv2/port-groups.ttl @@ -805,4 +805,3 @@ pg:AmbisonicBH3P3Group lv2:index 15 ; lv2:designation pg:ACN15 ] . - diff --git a/lv2/port-props.lv2/manifest.ttl b/lv2/port-props.lv2/manifest.ttl index 45f598d..dd12797 100644 --- a/lv2/port-props.lv2/manifest.ttl +++ b/lv2/port-props.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 1 ; lv2:microVersion 2 ; rdfs:seeAlso <port-props.ttl> . - diff --git a/lv2/port-props.lv2/port-props.meta.ttl b/lv2/port-props.lv2/port-props.meta.ttl index 7077e4b..e97de45 100644 --- a/lv2/port-props.lv2/port-props.meta.ttl +++ b/lv2/port-props.lv2/port-props.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -13,27 +12,6 @@ doap:shortdesc "Various properties for LV2 plugin ports." ; doap:maintainer <http://drobilla.net/drobilla#me> ; doap:developer <http://lv2plug.in/ns/meta#kfoltman> ; - doap:release [ - doap:revision "1.2" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Use consistent label style." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; lv2:documentation """ This vocabulary defines various properties for plugin ports, which can be used @@ -199,4 +177,3 @@ where: * `lower` and <code>upper</code> are the bounds. """^^lv2:Markdown . - diff --git a/lv2/port-props.lv2/port-props.ttl b/lv2/port-props.lv2/port-props.ttl index ea25c6b..063996a 100644 --- a/lv2/port-props.lv2/port-props.ttl +++ b/lv2/port-props.lv2/port-props.ttl @@ -77,4 +77,3 @@ pprops:rangeSteps rdfs:range xsd:nonNegativeInteger ; rdfs:label "range steps" ; rdfs:comment "The number of even steps the range should be divided into." . - diff --git a/lv2/presets.lv2/manifest.ttl b/lv2/presets.lv2/manifest.ttl index b9cacf5..1508770 100644 --- a/lv2/presets.lv2/manifest.ttl +++ b/lv2/presets.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 2 ; lv2:microVersion 8 ; rdfs:seeAlso <presets.ttl> . - diff --git a/lv2/presets.lv2/presets.meta.ttl b/lv2/presets.lv2/presets.meta.ttl index b7611de..d3e1ef9 100644 --- a/lv2/presets.lv2/presets.meta.ttl +++ b/lv2/presets.lv2/presets.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -12,29 +11,6 @@ doap:shortdesc "Presets for LV2 plugins." ; doap:created "2009-00-00" ; doap:developer <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "2.8" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Use consistent label style." - ] , [ - rdfs:label "Add preset banks." - ] - ] - ] , [ - doap:revision "2.6" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial unified release." - ] - ] - ] ; lv2:documentation """ This is a vocabulary for LV2 plugin presets, that is, named sets of control @@ -103,4 +79,3 @@ be useful for saving state, or notifying a plugin instance at run-time about a preset change. """^^lv2:Markdown . - diff --git a/lv2/presets.lv2/presets.ttl b/lv2/presets.lv2/presets.ttl index 60189ea..8de997b 100644 --- a/lv2/presets.lv2/presets.ttl +++ b/lv2/presets.lv2/presets.ttl @@ -58,4 +58,3 @@ pset:preset rdfs:range pset:Preset ; rdfs:label "preset" ; rdfs:comment "The preset currently applied to a plugin instance." . - diff --git a/lv2/resize-port.lv2/manifest.ttl b/lv2/resize-port.lv2/manifest.ttl index 9fae8b8..fb8da8a 100644 --- a/lv2/resize-port.lv2/manifest.ttl +++ b/lv2/resize-port.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 1 ; lv2:microVersion 0 ; rdfs:seeAlso <resize-port.ttl> . - diff --git a/lv2/resize-port.lv2/resize-port.meta.ttl b/lv2/resize-port.lv2/resize-port.meta.ttl index d44620c..ffd1b9b 100644 --- a/lv2/resize-port.lv2/resize-port.meta.ttl +++ b/lv2/resize-port.lv2/resize-port.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -11,17 +10,6 @@ doap:shortdesc "Dynamically sized LV2 port buffers." ; doap:created "2007-00-00" ; doap:developer <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "1.0" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; lv2:documentation """ This extension defines a feature, rsz:resize, which allows plugins to @@ -71,4 +59,3 @@ property. Any host, especially those that do NOT support dynamic port resizing, SHOULD do so or reduced functionality may result. """^^lv2:Markdown . - diff --git a/lv2/resize-port.lv2/resize-port.ttl b/lv2/resize-port.lv2/resize-port.ttl index 6f42c8f..ffdeda2 100644 --- a/lv2/resize-port.lv2/resize-port.ttl +++ b/lv2/resize-port.lv2/resize-port.ttl @@ -33,4 +33,3 @@ rsz:minimumSize rdfs:range xsd:nonNegativeInteger ; rdfs:label "minimum size" ; rdfs:comment "Minimum buffer size required by a port, in bytes." . - diff --git a/lv2/state.lv2/manifest.ttl b/lv2/state.lv2/manifest.ttl index e56c4e5..6b17b52 100644 --- a/lv2/state.lv2/manifest.ttl +++ b/lv2/state.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 2 ; lv2:microVersion 10 ; rdfs:seeAlso <state.ttl> . - diff --git a/lv2/state.lv2/state.meta.ttl b/lv2/state.lv2/state.meta.ttl index cebe0ac..1cd0544 100644 --- a/lv2/state.lv2/state.meta.ttl +++ b/lv2/state.lv2/state.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -14,89 +13,6 @@ doap:developer <http://lv2plug.in/ns/meta#paniq> , <http://drobilla.net/drobilla#me> ; doap:maintainer <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "2.10" ; - doap:created "2022-05-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.4.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix spelling errors." - ] - ] - ] , [ - doap:revision "2.8" ; - doap:created "2021-01-07" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.2.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix state:StateChanged URI in metadata and documentation." - ] - ] - ] , [ - doap:revision "2.6" ; - doap:created "2020-04-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add state:freePath feature." - ] - ] - ] , [ - doap:revision "2.4" ; - doap:created "2019-02-03" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add state:StateChanged for notification events." - ] - ] - ] , [ - doap:revision "2.2" ; - doap:created "2016-07-31" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add LV2_STATE_ERR_NO_SPACE status flag." - ] , [ - rdfs:label "Add state:threadSafeRestore feature for dropout-free state restoration." - ] - ] - ] , [ - doap:revision "2.0" ; - doap:created "2013-01-16" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add state:loadDefaultState feature so plugins can have their default state loaded without hard-coding default state as a special case." - ] - ] - ] , [ - doap:revision "1.2" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Use consistent label style." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; lv2:documentation """ This extension defines a simple mechanism that allows hosts to save and restore @@ -474,4 +390,3 @@ a change which it knows is likely to have that effect, such as changing a parameter. """^^lv2:Markdown . - diff --git a/lv2/state.lv2/state.ttl b/lv2/state.lv2/state.ttl index 463fdb9..9a5ddcb 100644 --- a/lv2/state.lv2/state.ttl +++ b/lv2/state.lv2/state.ttl @@ -57,4 +57,3 @@ state:StateChanged a rdfs:Class ; rdfs:label "State Changed" ; rdfs:comment "A notification that the internal state of the plugin has changed." . - diff --git a/lv2/time.lv2/manifest.ttl b/lv2/time.lv2/manifest.ttl index d80aa75..ece8679 100644 --- a/lv2/time.lv2/manifest.ttl +++ b/lv2/time.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 1 ; lv2:microVersion 6 ; rdfs:seeAlso <time.ttl> . - diff --git a/lv2/time.lv2/time.meta.ttl b/lv2/time.lv2/time.meta.ttl index 2b99cb7..723a61b 100644 --- a/lv2/time.lv2/time.meta.ttl +++ b/lv2/time.lv2/time.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -11,47 +10,6 @@ doap:shortdesc "A vocabulary for describing musical time." ; doap:created "2011-10-05" ; doap:developer <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "1.6" ; - doap:created "2019-02-03" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Clarify time:beat origin." - ] - ] - ] , [ - doap:revision "1.4" ; - doap:created "2016-07-31" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Define LV2_TIME_PREFIX." - ] - ] - ] , [ - doap:revision "1.2" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Use consistent label style." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; lv2:documentation """ This is a vocabulary for describing a position in time and the speed of time @@ -109,4 +67,3 @@ rate of 0.0 is stopped, 1.0 is rolling at normal speed, 0.5 is rolling at half speed, -1.0 is reverse, and so on. """^^lv2:Markdown . - diff --git a/lv2/time.lv2/time.ttl b/lv2/time.lv2/time.ttl index f3da9b0..f9c65ee 100644 --- a/lv2/time.lv2/time.ttl +++ b/lv2/time.lv2/time.ttl @@ -118,4 +118,3 @@ time:speed rdfs:range xsd:float ; rdfs:label "speed" ; rdfs:comment "The rate of the progress of time as a fraction of normal speed." . - diff --git a/lv2/ui.lv2/manifest.ttl b/lv2/ui.lv2/manifest.ttl index d3b12b5..a77d6d0 100644 --- a/lv2/ui.lv2/manifest.ttl +++ b/lv2/ui.lv2/manifest.ttl @@ -3,7 +3,6 @@ <http://lv2plug.in/ns/extensions/ui> a lv2:Specification ; - lv2:minorVersion 2 ; - lv2:microVersion 24 ; + lv2:minorVersion 3 ; + lv2:microVersion 0 ; rdfs:seeAlso <ui.ttl> . - diff --git a/lv2/ui.lv2/ui.meta.ttl b/lv2/ui.lv2/ui.meta.ttl index ce4c095..393d8d6 100644 --- a/lv2/ui.lv2/ui.meta.ttl +++ b/lv2/ui.lv2/ui.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -14,113 +13,6 @@ doap:created "2006-00-00" ; doap:developer <http://lv2plug.in/ns/meta#larsl> ; doap:maintainer <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "2.24" ; - doap:created "2022-05-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.4.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix spelling errors." - ] , [ - rdfs:label "Deprecate ui:resize." - ] - ] - ] , [ - doap:revision "2.22" ; - doap:created "2020-04-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add ui:requestValue feature." - ] , [ - rdfs:label "Add ui:scaleFactor, ui:foregroundColor, and ui:backgroundColor properties." - ] , [ - rdfs:label "Deprecate ui:binary." - ] - ] - ] , [ - doap:revision "2.20" ; - doap:created "2015-07-25" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Improve documentation." - ] , [ - rdfs:label "Add missing property labels." - ] - ] - ] , [ - doap:revision "2.18" ; - doap:created "2014-08-08" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.10.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add show interface so UIs can gracefully degrade to separate windows if hosts can not use their widget directly." - ] , [ - rdfs:label "Fix identifier typos in documentation." - ] - ] - ] , [ - doap:revision "2.16" ; - doap:created "2014-01-04" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.8.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix LV2_UI_INVALID_PORT_INDEX identifier in documentation." - ] - ] - ] , [ - doap:revision "2.14" ; - doap:created "2013-03-18" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.6.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add idle interface so native UIs and foreign toolkits can drive their event loops." - ] , [ - rdfs:label "Add ui:updateRate property." - ] - ] - ] , [ - doap:revision "2.12" ; - doap:created "2012-12-01" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix incorrect linker flag in ui:makeSONameResident documentation." - ] - ] - ] , [ - doap:revision "2.10" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add types for WindowsUI, CocoaUI, and Gtk3UI." - ] , [ - rdfs:label "Use consistent label style." - ] , [ - rdfs:label "Add missing LV2_SYMBOL_EXPORT declaration for lv2ui_descriptor prototype." - ] - ] - ] , [ - doap:revision "2.8" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial unified release." - ] - ] - ] ; lv2:documentation """ This extension makes it possible to create user interfaces for LV2 plugins. @@ -207,6 +99,16 @@ not be used in the same process. """^^lv2:Markdown . +ui:Gtk4UI + lv2:documentation """ + +The host must guarantee that the Gtk+ 4 library has been initialised and the +Glib main loop is running before the UI is instantiated. Note that this UI +type is not suitable for binary distribution since multiple versions of Gtk can +not be used in the same process. + +"""^^lv2:Markdown . + ui:Qt4UI lv2:documentation """ @@ -227,6 +129,16 @@ used in the same process. """^^lv2:Markdown . +ui:Qt6UI + lv2:documentation """ + +The host must guarantee that the Qt6 library has been initialised and the Qt6 +main loop is running before the UI is instantiated. Note that this UI type is +not suitable for binary distribution since multiple versions of Qt can not be +used in the same process. + +"""^^lv2:Markdown . + ui:X11UI lv2:documentation """ @@ -584,4 +496,3 @@ Write Effect : None. """^^lv2:Markdown . - diff --git a/lv2/ui.lv2/ui.ttl b/lv2/ui.lv2/ui.ttl index 1c2e455..c42992e 100644 --- a/lv2/ui.lv2/ui.ttl +++ b/lv2/ui.lv2/ui.ttl @@ -34,6 +34,13 @@ ui:Gtk3UI rdfs:label "GTK3 UI" ; rdfs:comment "A UI where the widget is a pointer to a Gtk+ 3.0 GtkWidget." . +ui:Gtk4UI + a rdfs:Class , + owl:Class ; + rdfs:subClassOf ui:UI ; + rdfs:label "GTK4 UI" ; + rdfs:comment "A UI where the widget is a pointer to a Gtk+ 4.0 GtkWidget." . + ui:Qt4UI a rdfs:Class , owl:Class ; @@ -48,6 +55,13 @@ ui:Qt5UI rdfs:label "Qt5 UI" ; rdfs:comment "A UI where the widget is a pointer to a Qt5 QWidget." . +ui:Qt6UI + a rdfs:Class , + owl:Class ; + rdfs:subClassOf ui:UI ; + rdfs:label "Qt6 UI" ; + rdfs:comment "A UI where the widget is a pointer to a Qt6 QWidget." . + ui:X11UI a rdfs:Class , owl:Class ; @@ -81,13 +95,13 @@ ui:binary a rdf:Property , owl:ObjectProperty ; owl:sameAs lv2:binary ; - owl:deprecated "true"^^xsd:boolean ; + owl:deprecated true ; rdfs:label "binary" ; rdfs:comment "The shared library that a UI resides in." . ui:makeSONameResident a lv2:Feature ; - owl:deprecated "true"^^xsd:boolean ; + owl:deprecated true ; rdfs:label "make SO name resident" ; rdfs:comment "UI binary must not be unloaded." . @@ -174,7 +188,7 @@ ui:notifyType ui:resize a lv2:Feature , lv2:ExtensionData ; - owl:deprecated "true"^^xsd:boolean ; + owl:deprecated true ; rdfs:label "resize" ; rdfs:comment """A feature that provides control of, and notifications about, a UI's size.""" . @@ -246,4 +260,3 @@ ui:peakProtocol a ui:PortProtocol ; rdfs:label "peak protocol" ; rdfs:comment "A protocol for sending continuous peak measurements of an audio signal." . - diff --git a/lv2/units.lv2/manifest.ttl b/lv2/units.lv2/manifest.ttl index c6c9286..8b84346 100644 --- a/lv2/units.lv2/manifest.ttl +++ b/lv2/units.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 5 ; lv2:microVersion 12 ; rdfs:seeAlso <units.ttl> . - diff --git a/lv2/units.lv2/units.meta.ttl b/lv2/units.lv2/units.meta.ttl index bd300a4..0e03b35 100644 --- a/lv2/units.lv2/units.meta.ttl +++ b/lv2/units.lv2/units.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -12,53 +11,6 @@ doap:created "2007-02-06" ; doap:homepage <http://lv2plug.in/ns/extensions/units> ; doap:license <http://opensource.org/licenses/isc> ; - doap:release [ - doap:revision "5.12" ; - doap:created "2019-02-03" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix outdated port description in documentation." - ] , [ - rdfs:label "Remove overly restrictive domain from units:unit." - ] - ] - ] , [ - doap:revision "5.10" ; - doap:created "2015-04-07" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.12.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix non-existent port type in examples." - ] , [ - rdfs:label "Add lv2:Parameter to domain of units:unit." - ] - ] - ] , [ - doap:revision "5.8" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Remove units:name in favour of rdfs:label." - ] , [ - rdfs:label "Use consistent label style." - ] - ] - ] , [ - doap:revision "5.6" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial unified release." - ] - ] - ] ; doap:developer <http://plugin.org.uk/swh.xrdf#me> ; doap:maintainer <http://drobilla.net/drobilla#me> ; lv2:documentation """ @@ -103,4 +55,3 @@ units defined in this extension include conversion definitions where it makes sense to do so. """^^lv2:Markdown . - diff --git a/lv2/units.lv2/units.ttl b/lv2/units.lv2/units.ttl index 21a1898..0f94cc3 100644 --- a/lv2/units.lv2/units.ttl +++ b/lv2/units.lv2/units.ttl @@ -375,4 +375,3 @@ units:midiNote rdfs:comment "A MIDI note number." ; units:render "MIDI note %d" ; units:symbol "note" . - diff --git a/lv2/uri-map.lv2/manifest.ttl b/lv2/uri-map.lv2/manifest.ttl index a64e4fb..3824435 100644 --- a/lv2/uri-map.lv2/manifest.ttl +++ b/lv2/uri-map.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 1 ; lv2:microVersion 6 ; rdfs:seeAlso <uri-map.ttl> . - diff --git a/lv2/uri-map.lv2/uri-map.meta.ttl b/lv2/uri-map.lv2/uri-map.meta.ttl index d66c289..9615f31 100644 --- a/lv2/uri-map.lv2/uri-map.meta.ttl +++ b/lv2/uri-map.lv2/uri-map.meta.ttl @@ -1,5 +1,4 @@ @prefix lv2: <http://lv2plug.in/ns/lv2core#> . -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @@ -13,17 +12,6 @@ doap:license <http://opensource.org/licenses/isc> ; doap:name "LV2 URI Map" ; doap:shortdesc "A feature for mapping URIs to integers." ; - doap:release [ - doap:revision "1.6" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial unified release." - ] - ] - ] ; lv2:documentation """ <span class="warning">This extension is deprecated.</span> New implementations @@ -38,4 +26,3 @@ extensibility of RDF with the performance of integers (or centrally defined enumerations). """^^lv2:Markdown . - diff --git a/lv2/uri-map.lv2/uri-map.ttl b/lv2/uri-map.lv2/uri-map.ttl index 7a7d6e3..8a7a043 100644 --- a/lv2/uri-map.lv2/uri-map.ttl +++ b/lv2/uri-map.lv2/uri-map.ttl @@ -10,4 +10,3 @@ rdfs:label "LV2 URI Map" ; rdfs:comment "A feature for mapping URIs to integers." ; rdfs:seeAlso <uri-map.meta.ttl> . - diff --git a/lv2/urid.lv2/manifest.ttl b/lv2/urid.lv2/manifest.ttl index 772e2b6..7dc919f 100644 --- a/lv2/urid.lv2/manifest.ttl +++ b/lv2/urid.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 1 ; lv2:microVersion 4 ; rdfs:seeAlso <urid.ttl> . - diff --git a/lv2/urid.lv2/urid.meta.ttl b/lv2/urid.lv2/urid.meta.ttl index 1f10752..cbc5153 100644 --- a/lv2/urid.lv2/urid.meta.ttl +++ b/lv2/urid.lv2/urid.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -13,27 +12,6 @@ doap:created "2011-07-22" ; doap:developer <http://lv2plug.in/ns/meta#gabrbedd> ; doap:maintainer <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "1.4" ; - doap:created "2012-10-14" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Fix typo in urid:unmap documentation." - ] - ] - ] , [ - doap:revision "1.2" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial unified release." - ] - ] - ] ; lv2:documentation """ This extension defines a simple mechanism for plugins to map URIs to and from @@ -69,4 +47,3 @@ LV2_Descriptor::instantiate() with URI LV2_URID__unmap and data pointed to an instance of LV2_URID_Unmap. """^^lv2:Markdown . - diff --git a/lv2/urid.lv2/urid.ttl b/lv2/urid.lv2/urid.ttl index 6ce666a..e875fba 100644 --- a/lv2/urid.lv2/urid.ttl +++ b/lv2/urid.lv2/urid.ttl @@ -19,4 +19,3 @@ urid:unmap a lv2:Feature ; rdfs:label "unmap" ; rdfs:comment "A feature to unmap URIDs back to strings." . - diff --git a/lv2/worker.lv2/manifest.ttl b/lv2/worker.lv2/manifest.ttl index 692720d..cf4a83f 100644 --- a/lv2/worker.lv2/manifest.ttl +++ b/lv2/worker.lv2/manifest.ttl @@ -6,4 +6,3 @@ lv2:minorVersion 1 ; lv2:microVersion 2 ; rdfs:seeAlso <worker.ttl> . - diff --git a/lv2/worker.lv2/worker.meta.ttl b/lv2/worker.lv2/worker.meta.ttl index 2fc51bc..b9d651a 100644 --- a/lv2/worker.lv2/worker.meta.ttl +++ b/lv2/worker.lv2/worker.meta.ttl @@ -1,4 +1,3 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . @prefix doap: <http://usefulinc.com/ns/doap#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix lv2: <http://lv2plug.in/ns/lv2core#> . @@ -11,27 +10,6 @@ doap:shortdesc "Support for doing non-realtime work in plugins." ; doap:created "2012-03-22" ; doap:developer <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "1.2" ; - doap:created "2020-04-26" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.18.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Improve documentation." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; lv2:documentation """ This extension allows plugins to schedule work that must be performed in @@ -79,4 +57,3 @@ the plugin MAY use it to schedule work in the calling context. The plugin MUST NOT assume any relationship between different schedule features. """^^lv2:Markdown . - diff --git a/lv2/worker.lv2/worker.ttl b/lv2/worker.lv2/worker.ttl index 581be71..be07105 100644 --- a/lv2/worker.lv2/worker.ttl +++ b/lv2/worker.lv2/worker.ttl @@ -21,4 +21,3 @@ work:schedule a lv2:Feature ; rdfs:label "work schedule" ; rdfs:comment "The work scheduling feature provided by a host." . - diff --git a/lv2specgen/DTD/xhtml-rdfa-1.dtd b/lv2specgen/DTD/xhtml-rdfa-1.dtd index bd3479e..53890bb 100644 --- a/lv2specgen/DTD/xhtml-rdfa-1.dtd +++ b/lv2specgen/DTD/xhtml-rdfa-1.dtd @@ -444,7 +444,6 @@ validation, so here we are. --> -<!ATTLIST html xmlns:dcs CDATA #IMPLIED> <!ATTLIST html xmlns:dcterms CDATA #IMPLIED> <!ATTLIST html xmlns:doap CDATA #IMPLIED> <!ATTLIST html xmlns:foaf CDATA #IMPLIED> diff --git a/lv2specgen/lv2docgen.py b/lv2specgen/lv2docgen.py index c5e13a7..9b1685a 100755 --- a/lv2specgen/lv2docgen.py +++ b/lv2specgen/lv2docgen.py @@ -1,20 +1,7 @@ #!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# -# lv2docgen, a documentation generator for LV2 plugins + # Copyright 2012 David Robillard <d@drobilla.net> -# -# Permission to use, copy, modify, and/or distribute this software for any -# purpose with or without fee is hereby granted, provided that the above -# copyright notice and this permission notice appear in all copies. -# -# THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# SPDX-License-Identifier: ISC import errno import os diff --git a/lv2specgen/lv2specgen.py b/lv2specgen/lv2specgen.py index 3345b5a..28c1500 100755 --- a/lv2specgen/lv2specgen.py +++ b/lv2specgen/lv2specgen.py @@ -1,34 +1,13 @@ #!/usr/bin/env python3 -# -*- coding: utf-8 -*- # -# lv2specgen, a documentation generator for LV2 specifications. -# Copyright (c) 2009-2014 David Robillard <d@drobilla.net> +# Copyright 2009-2022 David Robillard <d@drobilla.net> +# Copyright 2003-2008 Christopher Schmidt <crschmidt@crschmidt.net> +# Copyright 2005-2008 Uldis Bojars <uldis.bojars@deri.org> +# Copyright 2007-2008 Sergio Fernández <sergio.fernandez@fundacionctic.org> +# SPDX-License-Identifier: MIT # # Based on SpecGen: # <http://forge.morfeo-project.org/wiki_en/index.php/SpecGen> -# Copyright (c) 2003-2008 Christopher Schmidt <crschmidt@crschmidt.net> -# Copyright (c) 2005-2008 Uldis Bojars <uldis.bojars@deri.org> -# Copyright (c) 2007-2008 Sergio Fernández <sergio.fernandez@fundacionctic.org> -# -# This software is licensed under the terms of the MIT License. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. import datetime import markdown @@ -86,7 +65,6 @@ spec_pre = None spec_bundle = None specgendir = None ns_list = { - "http://ontologi.es/doap-changeset#": "dcs", "http://purl.org/dc/terms/": "dcterms", "http://usefulinc.com/ns/doap#": "doap", "http://xmlns.com/foaf/0.1/": "foaf", @@ -101,7 +79,6 @@ rdfs = rdflib.Namespace("http://www.w3.org/2000/01/rdf-schema#") owl = rdflib.Namespace("http://www.w3.org/2002/07/owl#") lv2 = rdflib.Namespace("http://lv2plug.in/ns/lv2core#") doap = rdflib.Namespace("http://usefulinc.com/ns/doap#") -dcs = rdflib.Namespace("http://ontologi.es/doap-changeset#") foaf = rdflib.Namespace("http://xmlns.com/foaf/0.1/") @@ -134,19 +111,18 @@ def getLiteralString(s): def isResource(n): - return type(n) == rdflib.URIRef + return isinstance(n, rdflib.URIRef) def isBlank(n): - return type(n) == rdflib.BNode + return isinstance(n, rdflib.BNode) def isLiteral(n): - return type(n) == rdflib.Literal + return isinstance(n, rdflib.Literal) def niceName(uri): - global spec_bundle if uri.startswith(spec_ns_str): return uri.replace(spec_ns_str, "") elif uri == str(rdfs.seeAlso): @@ -405,8 +381,6 @@ def endProperties(first): def rdfsPropertyInfo(term, m): """Generate HTML for properties: Domain, range""" - global classranges - global classdomains doc = "" label = getLabel(m, term) @@ -560,8 +534,6 @@ def owlRestrictionInfo(term, m): def rdfsClassInfo(term, m): """Generate rdfs-type information for Classes: ranges, and domains.""" - global classranges - global classdomains doc = "" label = getLabel(m, term) @@ -923,8 +895,6 @@ def specInformation(m, ns): and proplist. Global variables classranges and classdomains are also filled as appropriate. """ - global classranges - global classdomains # Find the class information: Ranges, domains, and list of all names. classtypes = [rdfs.Class, owl.Class, rdfs.Datatype] @@ -1040,79 +1010,6 @@ def specAuthors(m, subject): return doc -def releaseChangeset(m, release, prefix=""): - changeset = findOne(m, release, dcs.changeset, None) - if changeset is None: - return "" - - entry = "" - # entry = '<dd><ul>\n' - for i in sorted(findStatements(m, getObject(changeset), dcs.item, None)): - item = getObject(i) - label = findOne(m, item, rdfs.label, None) - if not label: - print("error: dcs:item has no rdfs:label") - continue - - text = getLiteralString(getObject(label)) - if prefix: - text = prefix + ": " + text - - entry += "<li>%s</li>\n" % text - - # entry += '</ul></dd>\n' - return entry - - -def specHistoryEntries(m, subject, entries): - for r in findStatements(m, subject, doap.release, None): - release = getObject(r) - revNode = findOne(m, release, doap.revision, None) - if not revNode: - print("error: doap:release has no doap:revision") - continue - - rev = getLiteralString(getObject(revNode)) - - created = findOne(m, release, doap.created, None) - - dist = findOne(m, release, doap["file-release"], None) - if dist: - entry = '<dt><a href="%s">Version %s</a>' % (getObject(dist), rev) - else: - entry = "<dt>Version %s" % rev - # print("warning: doap:release has no doap:file-release") - - if created: - entry += " (%s)</dt>\n" % getLiteralString(getObject(created)) - else: - entry += ' (<span class="warning">EXPERIMENTAL</span>)</dt>' - - entry += "<dd><ul>\n%s" % releaseChangeset(m, release) - - if dist is not None: - entries[(getObject(created), getObject(dist))] = entry - elif int(rev.split(".")[-1]) % 2 == 0: - print("warning: %s %s has no file-release" % (subject, rev)) - - return entries - - -def specHistoryMarkup(entries): - if len(entries) > 0: - history = "<dl>\n" - for e in sorted(entries.keys(), reverse=True): - history += entries[e] + "</ul></dd>" - history += "</dl>\n" - return history - else: - return "" - - -def specHistory(m, subject): - return specHistoryMarkup(specHistoryEntries(m, subject, {})) - - def specVersion(m, subject): """ Return a (minorVersion, microVersion, date) tuple @@ -1208,7 +1105,6 @@ def load_tags(path, docdir): and cn.tagName == "compound" and cn.getAttribute("kind") != "page" ): - name = getChildText(cn, "name") filename = getChildText(cn, "filename") anchor = getChildText(cn, "anchor") @@ -1248,8 +1144,6 @@ def specgen( global spec_ns_str global spec_ns global spec_pre - global ns_list - global specgendir global linkmap spec_bundle = "file://%s/" % os.path.abspath(os.path.dirname(specloc)) @@ -1383,7 +1277,6 @@ def specgen( template = template.replace("@REFERENCE@", termlist) template = template.replace("@FILENAME@", filename) template = template.replace("@HEADER@", basename + ".h") - template = template.replace("@HISTORY@", specHistory(m, spec)) mail_row = "" if "list_email" in opts: @@ -1425,7 +1318,7 @@ def specgen( template = template.replace("@DESCRIPTION@", docs) now = int(os.environ.get("SOURCE_DATE_EPOCH", time.time())) - build_date = datetime.datetime.utcfromtimestamp(now) + build_date = datetime.datetime.fromtimestamp(now, datetime.timezone.utc) template = template.replace("@DATE@", build_date.strftime("%F")) template = template.replace("@TIME@", build_date.strftime("%F %H:%M UTC")) diff --git a/lv2specgen/meson.build b/lv2specgen/meson.build index 9ecb8d4..69b029b 100644 --- a/lv2specgen/meson.build +++ b/lv2specgen/meson.build @@ -1,5 +1,5 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC lv2specgen_py = files('lv2specgen.py') @@ -10,11 +10,14 @@ lv2specgen_command_prefix = [ lv2specgen_py, '--list-email=' + lv2_list_email, '--list-page=' + lv2_list_page, + '--style-dir=' + lv2_source_root / 'doc' / 'style', + '--template', + files('template.html'), ] if is_variable('lv2_tags') lv2specgen_command_prefix += [ - '--tags', lv2_tags.full_path(), # TODO: Remove full_path() in meson 0.60.0 + ['--tags', lv2_tags.full_path()], # TODO: Remove full_path() in meson 0.60.0 ] endif diff --git a/lv2specgen/template.html b/lv2specgen/template.html index 4eb3d96..dcc2759 100644 --- a/lv2specgen/template.html +++ b/lv2specgen/template.html @@ -2,7 +2,6 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"> <html about="@URI@" xmlns="http://www.w3.org/1999/xhtml" - xmlns:dcs="http://ontologi.es/doap-changeset#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:doap="http://usefulinc.com/ns/doap#" xmlns:foaf="http://xmlns.com/foaf/0.1/" @@ -30,7 +29,6 @@ <table id="meta"> <tr><th>ID</th><td><a href="@URI@">@URI@</a></td></tr> <tr><th>Version</th><td>@VERSION@</td></tr> - <tr><th>Date</th><td>@DATE@</td></tr> @MAIL@ @AUTHORS@ </table> @@ -44,7 +42,6 @@ <ul id="contents"> <!-- <li><a href="#sec-description">Description</a></li> --> <li><a href="#sec-index">Index</a></li> - <li><a href="#sec-history">History</a></li> @CONTENT_LINKS@ </ul> </div> @@ -63,12 +60,6 @@ @REFERENCE@ </div> - <!-- HISTORY --> - <h2 id="sec-history">History</h2> - <div class="section"> - @HISTORY@ - </div> - <!-- FOOTER --> <div id="footer"> <div> diff --git a/meson.build b/meson.build index 6720203..07698de 100644 --- a/meson.build +++ b/meson.build @@ -1,23 +1,26 @@ # Copyright 2021-2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC - -project('lv2', ['c'], - version: '1.18.9', - license: 'ISC', - meson_version: '>= 0.56.0', - default_options: [ - 'b_ndebug=if-release', - 'buildtype=release', - 'c_std=c99', - ]) +# SPDX-License-Identifier: 0BSD OR ISC + +project( + 'lv2', + ['c'], + default_options: [ + 'b_ndebug=if-release', + 'buildtype=release', + 'c_std=c99', + ], + license: 'ISC', + meson_version: '>= 0.56.0', + version: '1.18.11', +) lv2_docdir = get_option('datadir') / 'doc' / 'lv2' lv2_source_root = meson.current_source_dir() lv2_build_root = meson.current_build_dir() -####################### -# Compilers and Flags # -####################### +############################# +# Compilers and Build Tools # +############################# # Required tools pkg = import('pkgconfig') @@ -31,11 +34,165 @@ if not get_option('tests').disabled() endif endif -# Set global warning flags -if get_option('strict') and not meson.is_subproject() - subdir('meson/warnings') +######################## +# Warning Suppressions # +######################## + +warning_level = get_option('warning_level') + +# C +c_suppressions = [] +if cc.get_id() in ['clang', 'emscripten'] + if warning_level == 'everything' + c_suppressions += [ + '-Wno-bad-function-cast', + '-Wno-cast-align', + '-Wno-cast-function-type-strict', + '-Wno-cast-qual', + '-Wno-declaration-after-statement', + '-Wno-documentation-unknown-command', + '-Wno-double-promotion', + '-Wno-float-conversion', + '-Wno-float-equal', + '-Wno-implicit-float-conversion', + '-Wno-padded', + '-Wno-reserved-id-macro', + '-Wno-shorten-64-to-32', + '-Wno-sign-conversion', + '-Wno-switch-default', + '-Wno-switch-enum', + '-Wno-unsafe-buffer-usage', + ] + + if not meson.is_cross_build() + c_suppressions += ['-Wno-poison-system-directories'] + endif + + if host_machine.system() == 'windows' + c_suppressions += ['-Wno-format-nonliteral'] + endif + endif + + if warning_level in ['everything', '3', '2'] + c_suppressions += ['-Wno-unused-parameter'] + endif + +elif cc.get_id() == 'gcc' + if warning_level == 'everything' + c_suppressions += [ + '-Wno-bad-function-cast', + '-Wno-cast-align', + '-Wno-cast-qual', + '-Wno-conversion', + '-Wno-double-promotion', + '-Wno-float-equal', + '-Wno-inline', + '-Wno-padded', + '-Wno-suggest-attribute=const', + '-Wno-suggest-attribute=malloc', + '-Wno-suggest-attribute=pure', + '-Wno-switch-default', + '-Wno-switch-enum', + '-Wno-unsuffixed-float-constants', + '-Wno-unused-const-variable', + ] + + if target_machine.system() == 'windows' + c_suppressions += ['-Wno-suggest-attribute=format'] + endif + endif + + if warning_level in ['everything', '3', '2'] + c_suppressions += ['-Wno-unused-parameter'] + endif + +elif cc.get_id() == 'msvc' + if warning_level == 'everything' + c_suppressions += [ + '/wd4061', # enumerator in switch is not explicitly handled + '/wd4244', # conversion with possible loss of data + '/wd4310', # cast truncates constant value + '/wd4365', # signed/unsigned mismatch + '/wd4464', # relative include path contains ".." + '/wd4514', # unreferenced inline function has been removed + '/wd4514', # unreferenced inline function has been removed + '/wd4706', # assignment within conditional expression + '/wd4710', # function not inlined + '/wd4711', # function selected for automatic inline expansion + '/wd4820', # padding added after construct + '/wd5045', # will insert Spectre mitigation for memory load + ] + endif + + if warning_level in ['everything', '3'] + c_suppressions += [ + '/wd4100', # unreferenced formal parameter + ] + endif + + if warning_level in ['everything', '3', '2'] + c_suppressions += [ + '/wd4267', # conversion from size_t to a smaller type + ] + endif +endif + +c_suppressions = cc.get_supported_arguments(c_suppressions) + +# C++ +if is_variable('cpp') + cpp_suppressions = [] + + if warning_level == 'everything' + if cpp.get_id() in ['clang', 'emscripten'] + cpp_suppressions += [ + '-Wno-c++98-compat', + '-Wno-cast-align', + '-Wno-cast-qual', + '-Wno-documentation-unknown-command', + '-Wno-nullability-extension', + '-Wno-padded', + '-Wno-reserved-id-macro', + '-Wno-unsafe-buffer-usage', + ] + + if not meson.is_cross_build() + cpp_suppressions += ['-Wno-poison-system-directories'] + endif + + if host_machine.system() == 'windows' + cpp_suppressions += ['-Wno-format-nonliteral'] + endif + + elif cpp.get_id() == 'gcc' + cpp_suppressions += [ + '-Wno-cast-align', + '-Wno-cast-qual', + '-Wno-inline', + '-Wno-padded', + '-Wno-unused-const-variable', + '-Wno-useless-cast', + ] + + if target_machine.system() == 'windows' + cpp_suppressions += ['-Wno-suggest-attribute=format'] + endif + + elif cpp.get_id() == 'msvc' + cpp_suppressions += [ + '/wd4514', # unreferenced inline function has been removed + '/wd4706', # assignment within conditional expression + '/wd4710', # function not inlined + '/wd4711', # function selected for automatic inline expansion + '/wd4820', # padding added after data member + '/wd5045', # will insert Spectre mitigation + '/wd5264', # const variable is not used + ] + endif + endif + + cpp_suppressions = cpp.get_supported_arguments(cpp_suppressions) endif -subdir('meson/suppressions') ########################## # LV2 Path Configuration # @@ -49,7 +206,7 @@ if lv2dir == '' elif target_machine.system() == 'haiku' and prefix == '/' lv2dir = '/boot/common/add-ons/lv2' elif target_machine.system() == 'windows' and prefix == 'C:/' - lv2dir = 'C:/Program Files/Common/LV2' + lv2dir = 'C:/Program Files/Common Files/LV2' else lv2dir = prefix / get_option('libdir') / 'lv2' endif @@ -59,7 +216,7 @@ endif # Package/Dependency # ###################### -# Generage pkg-config file for external dependants +# Generate pkg-config file for external dependants pkg.generate( description: 'Plugin standard for audio systems', filebase: 'lv2', @@ -81,6 +238,9 @@ lv2_dep = declare_dependency( version: meson.project_version(), ) +# Override pkg-config dependency for internal meson dependants +meson.override_dependency('lv2', lv2_dep) + ################## # Specifications # ################## @@ -185,8 +345,10 @@ check_python = pymod.find_installation( required: get_option('tests'), ) -if (check_python.found() and - check_python.language_version().version_compare('<3.7')) +if ( + check_python.found() + and check_python.language_version().version_compare('<3.7') +) warning('Python 3.7 is required for tests') check_python = disabler() endif @@ -292,6 +454,7 @@ spec_files = files( # Determine if all the dependencies for building documentation are present doxygen = find_program('doxygen', required: get_option('docs')) build_docs = false +build_lv2specgen = false doc_deps = [] if not get_option('docs').disabled() doc_python_modules = ['lxml', 'markdown', 'pygments', 'rdflib'] @@ -308,13 +471,16 @@ if not get_option('docs').disabled() endif build_docs = doxygen.found() and python.found() + build_lv2specgen = python.found() endif # Run Doxygen first to generate tags subdir('doc/c') # Set up lv2specgen and lv2specgen_command_prefix (which references tags) -subdir('lv2specgen') +if build_lv2specgen + subdir('lv2specgen') +endif # Generate specification documentation if build_docs @@ -339,36 +505,26 @@ endif subdir('util') # Data and build tests -subdir('test') - -######## -# News # -######## - -lv2_write_news_py = find_program('scripts' / 'lv2_write_news.py') - -write_news_command = [ - lv2_write_news_py, - '-t', 'http://lv2plug.in/ns/lv2', - files(lv2_source_root / 'lv2' / 'core.lv2' / 'people.ttl'), - files(lv2_source_root / 'lv2' / 'core.lv2' / 'meta.ttl'), - spec_files, -] - -custom_target( - 'NEWS', - capture: true, - command: write_news_command, - output: 'NEWS', -) +if not get_option('tests').disabled() + subdir('test') +endif if not meson.is_subproject() - # Generate NEWS file from data in distribution archive - meson.add_dist_script(write_news_command) - - summary('Tests', not get_option('tests').disabled(), bool_yn: true) - summary('Documentation', build_docs, bool_yn: true) - summary('Prefix', get_option('prefix'), section: 'Paths') - summary('LV2 bundles', lv2dir, section: 'Paths') - summary('Headers', get_option('prefix') / get_option('includedir'), section: 'Paths') + summary( + { + 'Tests': not get_option('tests').disabled(), + 'Documentation': build_docs, + }, + bool_yn: true, + section: 'Components', + ) + + summary( + { + 'Install prefix': get_option('prefix'), + 'Headers': get_option('prefix') / get_option('includedir'), + 'LV2 bundles': lv2dir, + }, + section: 'Directories', + ) endif diff --git a/meson/library/meson.build b/meson/library/meson.build deleted file mode 100644 index f50505f..0000000 --- a/meson/library/meson.build +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright 2020-2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC - -# General definitions for building libraries. -# -# These are essentially workarounds for meson and/or MSVC. Unfortunately, -# meson's default_library option doesn't support shared and static builds very -# well. In particular, it's often necessary to define different symbols for -# static and shared builds of libraries so that symbols can be exported. To -# work around this, we do not support default_library=both on Windows. On -# other platforms with GCC-like compilers, we can support both because symbols -# can safely be exported in the same way (giving them default visibility) in -# both static and shared builds. - -# Abort on Windows with default_library=both -if get_option('default_library') == 'both' - if host_machine.system() == 'windows' - error('default_library=both is not supported on Windows') - endif -endif - -# Set library_suffix to the suffix for libraries -if cc.get_id() == 'msvc' - # Meson appends a version to the name only on MS, which leads to inconsistent - # library names, like `mylib-1-1`. So, provide no suffix to ultimately get - # the same name as on other platforms, like `mylib-1`. - library_suffix = '' -else - library_suffix = '-@0@'.format(meson.project_version().split('.')[0]) -endif diff --git a/meson/suppressions/meson.build b/meson/suppressions/meson.build deleted file mode 100644 index e2170c0..0000000 --- a/meson/suppressions/meson.build +++ /dev/null @@ -1,130 +0,0 @@ -# Copyright 2020-2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC - -# Project-specific warning suppressions. -# -# This should be used in conjunction with the generic "warnings" sibling that -# enables all reasonable warnings for the compiler. It lives here just to keep -# the top-level meson.build more readable. - -##### -# C # -##### - -if is_variable('cc') - c_suppressions = [] - - if get_option('strict') - if cc.get_id() in ['clang', 'emscripten'] - c_suppressions += [ - '-Wno-cast-align', - '-Wno-cast-qual', - '-Wno-declaration-after-statement', - '-Wno-documentation-unknown-command', - '-Wno-double-promotion', - '-Wno-float-conversion', - '-Wno-float-equal', - '-Wno-implicit-float-conversion', - '-Wno-padded', - '-Wno-reserved-id-macro', - '-Wno-shorten-64-to-32', - '-Wno-sign-conversion', - '-Wno-switch-enum', - '-Wno-unused-parameter', - ] - elif cc.get_id() == 'gcc' - c_suppressions += [ - '-Wno-cast-align', - '-Wno-cast-qual', - '-Wno-conversion', - '-Wno-double-promotion', - '-Wno-float-equal', - '-Wno-inline', - '-Wno-padded', - '-Wno-suggest-attribute=const', - '-Wno-suggest-attribute=malloc', - '-Wno-suggest-attribute=pure', - '-Wno-switch-default', - '-Wno-switch-enum', - '-Wno-unsuffixed-float-constants', - '-Wno-unused-const-variable', - '-Wno-unused-parameter', - ] - - if target_machine.system() == 'windows' - c_suppressions += [ - '-Wno-suggest-attribute=format', - ] - endif - - elif cc.get_id() == 'msvc' - c_suppressions += [ - '/wd4061', # enumerator in switch is not explicitly handled - '/wd4100', # unreferenced formal parameter - '/wd4244', # conversion with possible loss of data - '/wd4267', # conversion from size_t to a smaller type - '/wd4310', # cast truncates constant value - '/wd4365', # signed/unsigned mismatch - '/wd4464', # relative include path contains ".." - '/wd4514', # unreferenced inline function has been removed - '/wd4514', # unreferenced inline function has been removed - '/wd4706', # assignment within conditional expression - '/wd4710', # function not inlined - '/wd4711', # function selected for automatic inline expansion - '/wd4820', # padding added after construct - '/wd5045', # will insert Spectre mitigation for memory load - ] - endif - endif - - c_suppressions = cc.get_supported_arguments(c_suppressions) -endif - -####### -# C++ # -####### - -if is_variable('cpp') - cpp_suppressions = [] - - if get_option('strict') - if cpp.get_id() in ['clang', 'emscripten'] - cpp_suppressions = [ - '-Wno-cast-align', - '-Wno-cast-qual', - '-Wno-documentation-unknown-command', - '-Wno-nullability-extension', - '-Wno-padded', - '-Wno-reserved-id-macro', - ] - - elif cpp.get_id() == 'gcc' - cpp_suppressions = [ - '-Wno-cast-align', - '-Wno-cast-qual', - '-Wno-inline', - '-Wno-padded', - '-Wno-unused-const-variable', - '-Wno-useless-cast', - ] - - if target_machine.system() == 'windows' - cpp_suppressions += [ - '-Wno-suggest-attribute=format', - ] - endif - - elif cpp.get_id() == 'msvc' - cpp_suppressions = [ - '/wd4514', # unreferenced inline function has been removed - '/wd4706', # assignment within conditional expression - '/wd4710', # function not inlined - '/wd4711', # function selected for automatic inline expansion - '/wd4820', # padding added after data member - '/wd5045', # will insert Spectre mitigation - ] - endif - endif - - cpp_suppressions = cpp.get_supported_arguments(cpp_suppressions) -endif diff --git a/meson/warnings/meson.build b/meson/warnings/meson.build deleted file mode 100644 index e0051f9..0000000 --- a/meson/warnings/meson.build +++ /dev/null @@ -1,256 +0,0 @@ -# Copyright 2020-2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC - -# General code to enable approximately all warnings in GCC 12, clang, and MSVC. -# -# This is trivial for clang and MSVC, but GCC doesn't have an "everything" -# option, so we need to enable everything we want explicitly. Wall is assumed, -# but Wextra is not, for stability. -# -# These are collected from common.opt and c.opt in the GCC source, and manually -# curated with the help of the GCC documentation. Warnings that are -# application-specific, historical, or about compatibility between specific -# language revisions are omitted. The intent here is to have roughly the same -# meaning as clang's Weverything: extremely strict, but general. Specifically -# omitted are: -# -# General: -# -# Wabi= -# Waggregate-return -# Walloc-size-larger-than=BYTES -# Walloca-larger-than=BYTES -# Wframe-larger-than=BYTES -# Wlarger-than=BYTES -# Wstack-usage=BYTES -# Wsystem-headers -# Wtraditional -# Wtraditional-conversion -# Wtrampolines -# Wvla-larger-than=BYTES -# -# Build specific: -# -# Wpoison-system-directories -# -# C Specific: -# -# Wc11-c2x-compat -# Wc90-c99-compat -# Wc99-c11-compat -# Wdeclaration-after-statement -# Wtraditional -# Wtraditional-conversion -# -# C++ Specific: -# -# Wc++0x-compat -# Wc++1z-compat -# Wc++2a-compat -# Wctad-maybe-unsupported -# Wnamespaces -# Wtemplates - -# GCC warnings that apply to all C-family languages -gcc_common_warnings = [ - '-Walloc-zero', - '-Walloca', - '-Wanalyzer-too-complex', - '-Warith-conversion', - '-Warray-bounds=2', - '-Wattribute-alias=2', - '-Wbidi-chars=ucn', - '-Wcast-align=strict', - '-Wcast-function-type', - '-Wcast-qual', - '-Wclobbered', - '-Wconversion', - '-Wdate-time', - '-Wdisabled-optimization', - '-Wdouble-promotion', - '-Wduplicated-branches', - '-Wduplicated-cond', - '-Wempty-body', - '-Wendif-labels', - '-Wfloat-equal', - '-Wformat-overflow=2', - '-Wformat-signedness', - '-Wformat-truncation=2', - '-Wformat=2', - '-Wignored-qualifiers', - '-Wimplicit-fallthrough=3', - '-Winit-self', - '-Winline', - '-Winvalid-pch', - '-Wlogical-op', - '-Wmissing-declarations', - '-Wmissing-field-initializers', - '-Wmissing-include-dirs', - '-Wmultichar', - '-Wnormalized=nfc', - '-Wnull-dereference', - '-Wopenacc-parallelism', - '-Woverlength-strings', - '-Wpacked', - '-Wpacked-bitfield-compat', - '-Wpadded', - '-Wpointer-arith', - '-Wredundant-decls', - '-Wshadow', - '-Wshift-negative-value', - '-Wshift-overflow=2', - '-Wstack-protector', - '-Wstrict-aliasing=3', - '-Wstrict-overflow=5', - '-Wstring-compare', - '-Wstringop-overflow=3', - '-Wsuggest-attribute=cold', - '-Wsuggest-attribute=const', - '-Wsuggest-attribute=format', - '-Wsuggest-attribute=malloc', - '-Wsuggest-attribute=noreturn', - '-Wsuggest-attribute=pure', - '-Wswitch-default', - '-Wswitch-enum', - '-Wtrampolines', - '-Wtrivial-auto-var-init', - '-Wtype-limits', - '-Wundef', - '-Wuninitialized', - '-Wunsafe-loop-optimizations', - '-Wunused', - '-Wunused-const-variable=2', - '-Wunused-macros', - '-Wvector-operation-performance', - '-Wvla', - '-Wwrite-strings', -] - -##### -# C # -##### - -if is_variable('cc') and not is_variable('all_c_warnings') - # Set all_c_warnings for the current C compiler - all_c_warnings = [] - - if get_option('strict') - if cc.get_id() == 'clang' - all_c_warnings += ['-Weverything'] - - if not meson.is_cross_build() - all_c_warnings += [ - '-Wno-poison-system-directories', - ] - endif - - elif cc.get_id() == 'gcc' - all_c_warnings += gcc_common_warnings + [ - '-Wabsolute-value', - '-Wbad-function-cast', - '-Wc++-compat', - '-Wenum-conversion', - '-Wjump-misses-init', - '-Wmissing-parameter-type', - '-Wmissing-prototypes', - '-Wnested-externs', - '-Wold-style-declaration', - '-Wold-style-definition', - '-Woverride-init', - '-Wsign-compare', - '-Wstrict-prototypes', - '-Wunsuffixed-float-constants', - ] - - elif cc.get_id() == 'msvc' - all_c_warnings += [ - '/Wall', - '/experimental:external', - '/external:W0', - '/external:anglebrackets', - ] - endif - endif - - all_c_warnings = cc.get_supported_arguments(all_c_warnings) - add_global_arguments(all_c_warnings, language: ['c']) -endif - -####### -# C++ # -####### - -if is_variable('cpp') and not is_variable('all_cpp_warnings') - # Set all_cpp_warnings for the current C++ compiler - all_cpp_warnings = [] - - if get_option('strict') - if cpp.get_id() == 'clang' - all_cpp_warnings += [ - '-Weverything', - '-Wno-c++98-compat', - '-Wno-c++98-compat-pedantic', - ] - - if not meson.is_cross_build() - all_cpp_warnings += [ - '-Wno-poison-system-directories', - ] - endif - - elif cpp.get_id() == 'gcc' - all_cpp_warnings += gcc_common_warnings + [ - '-Wabi-tag', - '-Waligned-new=all', - '-Wcatch-value=3', - '-Wcomma-subscript', - '-Wconditionally-supported', - '-Wctor-dtor-privacy', - '-Wdelete-non-virtual-dtor', - '-Wdeprecated', - '-Wdeprecated-copy', - '-Wdeprecated-copy-dtor', - '-Wdeprecated-enum-enum-conversion', - '-Wdeprecated-enum-float-conversion', - '-Weffc++', - '-Wexpansion-to-defined', - '-Wextra-semi', - '-Wimport', - '-Winvalid-imported-macros', - '-Wmismatched-tags', - '-Wmultiple-inheritance', - '-Wnoexcept', - '-Wnoexcept-type', - '-Wnon-virtual-dtor', - '-Wold-style-cast', - '-Woverloaded-virtual', - '-Wplacement-new=2', - '-Wredundant-move', - '-Wredundant-tags', - '-Wregister', - '-Wsign-compare', - '-Wsign-promo', - '-Wsized-deallocation', - '-Wstrict-null-sentinel', - '-Wsuggest-final-methods', - '-Wsuggest-final-types', - '-Wsuggest-override', - '-Wuseless-cast', - '-Wvirtual-inheritance', - '-Wvolatile', - '-Wzero-as-null-pointer-constant', - ] - - elif cpp.get_id() == 'msvc' - all_cpp_warnings += [ - '/Wall', - '/experimental:external', - '/external:W0', - '/external:anglebrackets', - ] - endif - endif - - all_cpp_warnings = cpp.get_supported_arguments(all_cpp_warnings) - add_global_arguments(all_cpp_warnings, language: ['cpp']) -endif diff --git a/meson_options.txt b/meson_options.txt index 089402e..2661999 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -1,22 +1,25 @@ -option('docs', type: 'feature', value: 'auto', yield: true, +# Copyright 2021-2022 David Robillard <d@drobilla.net> +# SPDX-License-Identifier: 0BSD OR ISC + +option('docs', type: 'feature', yield: true, description: 'Build documentation') +option('lint', type: 'boolean', value: false, yield: true, + description: 'Run code quality checks') + option('lv2dir', type: 'string', value: '', yield: true, description: 'LV2 bundle installation directory') option('old_headers', type: 'boolean', value: true, yield: true, description: 'Install backwards compatible headers at URI-style paths') -option('online_docs', type: 'boolean', value: 'false', yield: true, +option('online_docs', type: 'boolean', value: false, yield: true, description: 'Build documentation for online hosting') -option('plugins', type: 'feature', value: 'auto', yield: true, +option('plugins', type: 'feature', yield: true, description: 'Build example plugins') -option('strict', type: 'boolean', value: false, yield: true, - description: 'Enable ultra-strict warnings') - -option('tests', type: 'feature', value: 'auto', yield: true, +option('tests', type: 'feature', yield: true, description: 'Build tests') option('title', type: 'string', value: 'LV2', diff --git a/plugins/.clang-tidy b/plugins/.clang-tidy new file mode 100644 index 0000000..b327b36 --- /dev/null +++ b/plugins/.clang-tidy @@ -0,0 +1,16 @@ +# Copyright 2020-2025 David Robillard <d@drobilla.net> +# SPDX-License-Identifier: 0BSD OR ISC + +Checks: > + -*-narrowing-conversions, + -bugprone-assignment-in-if-condition, + -bugprone-easily-swappable-parameters, + -bugprone-multi-level-implicit-pointer-conversion, + -bugprone-suspicious-realloc-usage, + -cert-err33-c, + -clang-analyzer-core.NullDereference, + -hicpp-signed-bitwise, + -llvm-header-guard, + -misc-unused-parameters, + -readability-function-cognitive-complexity, +InheritParentConfig: true diff --git a/plugins/eg-amp.lv2/amp.c b/plugins/eg-amp.lv2/amp.c index 5b9f577..c85d6ab 100644 --- a/plugins/eg-amp.lv2/amp.c +++ b/plugins/eg-amp.lv2/amp.c @@ -1,19 +1,6 @@ -/* - Copyright 2006-2016 David Robillard <d@drobilla.net> - Copyright 2006 Steve Harris <steve@plugin.org.uk> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2006-2016 David Robillard <d@drobilla.net> +// Copyright 2006 Steve Harris <steve@plugin.org.uk> +// SPDX-License-Identifier: ISC /** LV2 headers are based on the URI of the specification they come from, so a @@ -22,7 +9,7 @@ replacing `http:/` with `lv2` any header in the specification bundle can be included, in this case `lv2.h`. */ -#include "lv2/core/lv2.h" +#include <lv2/core/lv2.h> /** Include standard C headers */ #include <math.h> @@ -118,7 +105,7 @@ activate(LV2_Handle instance) {} /** Define a macro for converting a gain in dB to a coefficient. */ -#define DB_CO(g) ((g) > -90.0f ? powf(10.0f, (g)*0.05f) : 0.0f) +#define DB_CO(g) ((g) > -90.0f ? powf(10.0f, (g) * 0.05f) : 0.0f) /** The `run()` method is the main process function of the plugin. It processes @@ -209,8 +196,7 @@ static const LV2_Descriptor descriptor = {AMP_URI, This method is in the ``discovery'' threading class, so no other functions or methods in this plugin library will be called concurrently with it. */ -LV2_SYMBOL_EXPORT -const LV2_Descriptor* +LV2_SYMBOL_EXPORT const LV2_Descriptor* lv2_descriptor(uint32_t index) { return index == 0 ? &descriptor : NULL; diff --git a/plugins/eg-amp.lv2/meson.build b/plugins/eg-amp.lv2/meson.build index 2b15b01..2912e3f 100644 --- a/plugins/eg-amp.lv2/meson.build +++ b/plugins/eg-amp.lv2/meson.build @@ -1,5 +1,5 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC plugin_sources = files('amp.c') bundle_name = 'eg-amp.lv2' @@ -11,6 +11,7 @@ module = shared_library( c_args: c_suppressions, dependencies: [lv2_dep, m_dep], gnu_symbol_visibility: 'hidden', + implicit_include_directories: false, install: true, install_dir: lv2dir / bundle_name, name_prefix: '', @@ -19,7 +20,7 @@ module = shared_library( config = configuration_data( { 'LIB_EXT': '.' + module.full_path().split('.')[-1], - } + }, ) foreach filename : data_filenames diff --git a/plugins/eg-fifths.lv2/fifths.c b/plugins/eg-fifths.lv2/fifths.c index 7527895..22d5f8a 100644 --- a/plugins/eg-fifths.lv2/fifths.c +++ b/plugins/eg-fifths.lv2/fifths.c @@ -1,30 +1,16 @@ -/* - LV2 Fifths Example Plugin - Copyright 2014-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#include "./uris.h" - -#include "lv2/atom/atom.h" -#include "lv2/atom/util.h" -#include "lv2/core/lv2.h" -#include "lv2/core/lv2_util.h" -#include "lv2/log/log.h" -#include "lv2/log/logger.h" -#include "lv2/midi/midi.h" -#include "lv2/urid/urid.h" +// Copyright 2014-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC + +#include "uris.h" + +#include <lv2/atom/atom.h> +#include <lv2/atom/util.h> +#include <lv2/core/lv2.h> +#include <lv2/core/lv2_util.h> +#include <lv2/log/log.h> +#include <lv2/log/logger.h> +#include <lv2/midi/midi.h> +#include <lv2/urid/urid.h> #include <stdbool.h> #include <stdint.h> @@ -104,8 +90,8 @@ cleanup(LV2_Handle instance) static void run(LV2_Handle instance, uint32_t sample_count) { - Fifths* self = (Fifths*)instance; - FifthsURIs* uris = &self->uris; + Fifths* self = (Fifths*)instance; + const FifthsURIs* uris = &self->uris; // Struct for a 3 byte MIDI event, used for writing notes typedef struct { @@ -174,8 +160,7 @@ static const LV2_Descriptor descriptor = {EG_FIFTHS_URI, cleanup, extension_data}; -LV2_SYMBOL_EXPORT -const LV2_Descriptor* +LV2_SYMBOL_EXPORT const LV2_Descriptor* lv2_descriptor(uint32_t index) { return index == 0 ? &descriptor : NULL; diff --git a/plugins/eg-fifths.lv2/meson.build b/plugins/eg-fifths.lv2/meson.build index fd38ee3..d0cbc6a 100644 --- a/plugins/eg-fifths.lv2/meson.build +++ b/plugins/eg-fifths.lv2/meson.build @@ -1,5 +1,5 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC plugin_sources = files('fifths.c') bundle_name = 'eg-fifths.lv2' @@ -11,6 +11,7 @@ module = shared_library( c_args: c_suppressions, dependencies: [lv2_dep, m_dep], gnu_symbol_visibility: 'hidden', + implicit_include_directories: false, install: true, install_dir: lv2dir / bundle_name, name_prefix: '', @@ -19,7 +20,7 @@ module = shared_library( config = configuration_data( { 'LIB_EXT': '.' + module.full_path().split('.')[-1], - } + }, ) foreach filename : data_filenames diff --git a/plugins/eg-fifths.lv2/uris.h b/plugins/eg-fifths.lv2/uris.h index d26577e..f32a6bd 100644 --- a/plugins/eg-fifths.lv2/uris.h +++ b/plugins/eg-fifths.lv2/uris.h @@ -1,27 +1,13 @@ -/* - LV2 Fifths Example Plugin - Copyright 2014-2015 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2014-2015 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC #ifndef FIFTHS_URIS_H #define FIFTHS_URIS_H -#include "lv2/atom/atom.h" -#include "lv2/midi/midi.h" -#include "lv2/patch/patch.h" -#include "lv2/urid/urid.h" +#include <lv2/atom/atom.h> +#include <lv2/midi/midi.h> +#include <lv2/patch/patch.h> +#include <lv2/urid/urid.h> #define EG_FIFTHS_URI "http://lv2plug.in/plugins/eg-fifths" @@ -51,4 +37,4 @@ map_fifths_uris(LV2_URID_Map* map, FifthsURIs* uris) uris->patch_value = map->map(map->handle, LV2_PATCH__value); } -#endif /* FIFTHS_URIS_H */ +#endif // FIFTHS_URIS_H diff --git a/plugins/eg-metro.lv2/meson.build b/plugins/eg-metro.lv2/meson.build index f881eca..ee4016e 100644 --- a/plugins/eg-metro.lv2/meson.build +++ b/plugins/eg-metro.lv2/meson.build @@ -1,5 +1,5 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC plugin_sources = files('metro.c') bundle_name = 'eg-metro.lv2' @@ -11,6 +11,7 @@ module = shared_library( c_args: c_suppressions, dependencies: [lv2_dep, m_dep], gnu_symbol_visibility: 'hidden', + implicit_include_directories: false, install: true, install_dir: lv2dir / bundle_name, name_prefix: '', @@ -19,7 +20,7 @@ module = shared_library( config = configuration_data( { 'LIB_EXT': '.' + module.full_path().split('.')[-1], - } + }, ) foreach filename : data_filenames diff --git a/plugins/eg-metro.lv2/metro.c b/plugins/eg-metro.lv2/metro.c index c89c542..e60a33f 100644 --- a/plugins/eg-metro.lv2/metro.c +++ b/plugins/eg-metro.lv2/metro.c @@ -1,28 +1,14 @@ -/* - LV2 Metronome Example Plugin - Copyright 2012-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#include "lv2/atom/atom.h" -#include "lv2/atom/util.h" -#include "lv2/core/lv2.h" -#include "lv2/core/lv2_util.h" -#include "lv2/log/log.h" -#include "lv2/log/logger.h" -#include "lv2/time/time.h" -#include "lv2/urid/urid.h" +// Copyright 2012-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC + +#include <lv2/atom/atom.h> +#include <lv2/atom/util.h> +#include <lv2/core/lv2.h> +#include <lv2/core/lv2_util.h> +#include <lv2/log/log.h> +#include <lv2/log/logger.h> +#include <lv2/time/time.h> +#include <lv2/urid/urid.h> #include <math.h> #include <stdbool.h> @@ -213,6 +199,7 @@ play(Metro* self, uint32_t begin, uint32_t end) { float* const output = self->ports.output; const uint32_t frames_per_beat = (uint32_t)(60.0f / self->bpm * self->rate); + const float attack_den = self->attack_len ? (float)self->attack_len : 1.0f; if (self->speed == 0.0f) { memset(output, 0, (end - begin) * sizeof(float)); @@ -223,8 +210,8 @@ play(Metro* self, uint32_t begin, uint32_t end) switch (self->state) { case STATE_ATTACK: // Amplitude increases from 0..1 until attack_len - output[i] = self->wave[self->wave_offset] * (float)self->elapsed_len / - (float)self->attack_len; + output[i] = + self->wave[self->wave_offset] * (float)self->elapsed_len / attack_den; if (self->elapsed_len >= self->attack_len) { self->state = STATE_DECAY; } @@ -345,8 +332,7 @@ static const LV2_Descriptor descriptor = { NULL, // extension_data }; -LV2_SYMBOL_EXPORT -const LV2_Descriptor* +LV2_SYMBOL_EXPORT const LV2_Descriptor* lv2_descriptor(uint32_t index) { return index == 0 ? &descriptor : NULL; diff --git a/plugins/eg-midigate.lv2/meson.build b/plugins/eg-midigate.lv2/meson.build index 0e35fd1..fc6010b 100644 --- a/plugins/eg-midigate.lv2/meson.build +++ b/plugins/eg-midigate.lv2/meson.build @@ -1,5 +1,5 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC plugin_sources = files('midigate.c') bundle_name = 'eg-midigate.lv2' @@ -11,6 +11,7 @@ module = shared_library( c_args: c_suppressions, dependencies: [lv2_dep, m_dep], gnu_symbol_visibility: 'hidden', + implicit_include_directories: false, install: true, install_dir: lv2dir / bundle_name, name_prefix: '', @@ -19,7 +20,7 @@ module = shared_library( config = configuration_data( { 'LIB_EXT': '.' + module.full_path().split('.')[-1], - } + }, ) foreach filename : data_filenames diff --git a/plugins/eg-midigate.lv2/midigate.c b/plugins/eg-midigate.lv2/midigate.c index d98f670..b4861db 100644 --- a/plugins/eg-midigate.lv2/midigate.c +++ b/plugins/eg-midigate.lv2/midigate.c @@ -1,27 +1,14 @@ -/* - Copyright 2013-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#include "lv2/atom/atom.h" -#include "lv2/atom/util.h" -#include "lv2/core/lv2.h" -#include "lv2/core/lv2_util.h" -#include "lv2/log/log.h" -#include "lv2/log/logger.h" -#include "lv2/midi/midi.h" -#include "lv2/urid/urid.h" +// Copyright 2013-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC + +#include <lv2/atom/atom.h> +#include <lv2/atom/util.h> +#include <lv2/core/lv2.h> +#include <lv2/core/lv2_util.h> +#include <lv2/log/log.h> +#include <lv2/log/logger.h> +#include <lv2/midi/midi.h> +#include <lv2/urid/urid.h> #include <stdbool.h> #include <stdint.h> @@ -226,8 +213,7 @@ static const LV2_Descriptor descriptor = {MIDIGATE_URI, cleanup, extension_data}; -LV2_SYMBOL_EXPORT -const LV2_Descriptor* +LV2_SYMBOL_EXPORT const LV2_Descriptor* lv2_descriptor(uint32_t index) { return index == 0 ? &descriptor : NULL; diff --git a/plugins/eg-params.lv2/meson.build b/plugins/eg-params.lv2/meson.build index 4c1e576..83c6ef9 100644 --- a/plugins/eg-params.lv2/meson.build +++ b/plugins/eg-params.lv2/meson.build @@ -1,5 +1,5 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC plugin_sources = files('params.c') bundle_name = 'eg-params.lv2' @@ -11,6 +11,7 @@ module = shared_library( c_args: c_suppressions, dependencies: [lv2_dep, m_dep], gnu_symbol_visibility: 'hidden', + implicit_include_directories: false, install: true, install_dir: lv2dir / bundle_name, name_prefix: '', @@ -19,7 +20,7 @@ module = shared_library( config = configuration_data( { 'LIB_EXT': '.' + module.full_path().split('.')[-1], - } + }, ) foreach filename : data_filenames diff --git a/plugins/eg-params.lv2/params.c b/plugins/eg-params.lv2/params.c index 052b43b..9fbaa46 100644 --- a/plugins/eg-params.lv2/params.c +++ b/plugins/eg-params.lv2/params.c @@ -1,33 +1,19 @@ -/* - LV2 Parameter Example Plugin - Copyright 2014-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2014-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC #include "state_map.h" -#include "lv2/atom/atom.h" -#include "lv2/atom/forge.h" -#include "lv2/atom/util.h" -#include "lv2/core/lv2.h" -#include "lv2/core/lv2_util.h" -#include "lv2/log/log.h" -#include "lv2/log/logger.h" -#include "lv2/midi/midi.h" -#include "lv2/patch/patch.h" -#include "lv2/state/state.h" -#include "lv2/urid/urid.h" +#include <lv2/atom/atom.h> +#include <lv2/atom/forge.h> +#include <lv2/atom/util.h> +#include <lv2/core/lv2.h> +#include <lv2/core/lv2_util.h> +#include <lv2/log/log.h> +#include <lv2/log/logger.h> +#include <lv2/midi/midi.h> +#include <lv2/patch/patch.h> +#include <lv2/state/state.h> +#include <lv2/urid/urid.h> #include <stdbool.h> #include <stdint.h> @@ -334,7 +320,7 @@ save(LV2_Handle instance, LV2_State_Status st = LV2_STATE_SUCCESS; for (unsigned i = 0; i < N_PROPS; ++i) { - StateMapItem* prop = &self->props[i]; + const StateMapItem* prop = &self->props[i]; store_prop(self, map_path, &st, store, handle, prop->urid, prop->value); } @@ -526,8 +512,7 @@ static const LV2_Descriptor descriptor = {EG_PARAMS_URI, cleanup, extension_data}; -LV2_SYMBOL_EXPORT -const LV2_Descriptor* +LV2_SYMBOL_EXPORT const LV2_Descriptor* lv2_descriptor(uint32_t index) { return (index == 0) ? &descriptor : NULL; diff --git a/plugins/eg-params.lv2/state_map.h b/plugins/eg-params.lv2/state_map.h index 4a00d2f..c81ea29 100644 --- a/plugins/eg-params.lv2/state_map.h +++ b/plugins/eg-params.lv2/state_map.h @@ -1,22 +1,8 @@ -/* - LV2 State Map - Copyright 2016 David Robillard <d@drobilla.net> +// Copyright 2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#include "lv2/atom/atom.h" -#include "lv2/urid/urid.h" +#include <lv2/atom/atom.h> +#include <lv2/urid/urid.h> #include <stdarg.h> #include <stdint.h> @@ -82,7 +68,7 @@ state_map_init( { // Set dict entries from parameters unsigned i = 0; - va_list args; + va_list args; // NOLINT(cppcoreguidelines-init-variables) va_start(args, handle); for (const char* uri = NULL; (uri = va_arg(args, const char*)); ++i) { const char* type = va_arg(args, const char*); diff --git a/plugins/eg-sampler.lv2/atom_sink.h b/plugins/eg-sampler.lv2/atom_sink.h index 57035e1..3319767 100644 --- a/plugins/eg-sampler.lv2/atom_sink.h +++ b/plugins/eg-sampler.lv2/atom_sink.h @@ -1,22 +1,9 @@ -/* - Copyright 2016 David Robillard <d@drobilla.net> +// Copyright 2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#include "lv2/atom/atom.h" -#include "lv2/atom/forge.h" -#include "lv2/atom/util.h" +#include <lv2/atom/atom.h> +#include <lv2/atom/forge.h> +#include <lv2/atom/util.h> #include <stdint.h> #include <string.h> diff --git a/plugins/eg-sampler.lv2/meson.build b/plugins/eg-sampler.lv2/meson.build index 1283a8f..a0f8799 100644 --- a/plugins/eg-sampler.lv2/meson.build +++ b/plugins/eg-sampler.lv2/meson.build @@ -1,17 +1,31 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC plugin_sources = files('sampler.c') +ui_sources = files('sampler_ui.c') bundle_name = 'eg-sampler.lv2' data_filenames = ['manifest.ttl.in', 'sampler.ttl', 'click.wav'] -samplerate_dep = dependency('samplerate', - version: '>= 0.1.0', - required: get_option('plugins')) +samplerate_dep = dependency( + 'samplerate', + include_type: 'system', + required: get_option('plugins'), + version: '>= 0.1.0', +) -sndfile_dep = dependency('sndfile', - version: '>= 1.0.0', - required: get_option('plugins')) +sndfile_dep = dependency( + 'sndfile', + include_type: 'system', + required: get_option('plugins'), + version: '>= 1.0.0', +) + +gtk2_dep = dependency( + 'gtk+-2.0', + include_type: 'system', + required: get_option('plugins'), + version: '>= 2.18.0', +) if samplerate_dep.found() and sndfile_dep.found() module = shared_library( @@ -20,6 +34,7 @@ if samplerate_dep.found() and sndfile_dep.found() c_args: c_suppressions, dependencies: [lv2_dep, m_dep, samplerate_dep, sndfile_dep], gnu_symbol_visibility: 'hidden', + implicit_include_directories: false, install: true, install_dir: lv2dir / bundle_name, name_prefix: '', @@ -45,4 +60,23 @@ if samplerate_dep.found() and sndfile_dep.found() ) endif endforeach + + if gtk2_dep.found() + ui_suppressions = c_suppressions + if cc.get_id() == 'gcc' + ui_suppressions += ['-Wno-strict-overflow'] + endif + + shared_library( + 'sampler_ui', + ui_sources, + c_args: ui_suppressions, + dependencies: [lv2_dep, gtk2_dep], + gnu_symbol_visibility: 'hidden', + implicit_include_directories: false, + install: true, + install_dir: lv2dir / bundle_name, + name_prefix: '', + ) + endif endif diff --git a/plugins/eg-sampler.lv2/peaks.h b/plugins/eg-sampler.lv2/peaks.h index 7a5f3e3..ff91546 100644 --- a/plugins/eg-sampler.lv2/peaks.h +++ b/plugins/eg-sampler.lv2/peaks.h @@ -1,19 +1,5 @@ -/* - LV2 audio peaks utilities - Copyright 2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC #ifndef PEAKS_H_INCLUDED #define PEAKS_H_INCLUDED @@ -28,10 +14,10 @@ requested, with reasonably sized incremental updates sent over plugin ports. */ -#include "lv2/atom/atom.h" -#include "lv2/atom/forge.h" -#include "lv2/atom/util.h" -#include "lv2/urid/urid.h" +#include <lv2/atom/atom.h> +#include <lv2/atom/forge.h> +#include <lv2/atom/util.h> +#include <lv2/urid/urid.h> #include <math.h> #include <stdbool.h> @@ -166,11 +152,11 @@ peaks_sender_send(PeaksSender* sender, forge, &vec_frame, sizeof(float), uris->atom_Float); // Calculate how many peaks to send this update - const uint32_t chunk_size = MAX(1u, sender->n_samples / sender->n_peaks); + const uint32_t chunk_size = MAX(1U, sender->n_samples / sender->n_peaks); const uint32_t space = forge->size - forge->offset; const uint32_t remaining = sender->n_peaks - sender->current_offset; const uint32_t n_update = - MIN(remaining, MIN(n_frames / 4u, space / sizeof(float))); + MIN(remaining, MIN(n_frames / 4U, space / sizeof(float))); // Calculate peak (maximum magnitude) for each chunk for (uint32_t i = 0; i < n_update; ++i) { diff --git a/plugins/eg-sampler.lv2/sampler.c b/plugins/eg-sampler.lv2/sampler.c index c978d2b..6fc04c5 100644 --- a/plugins/eg-sampler.lv2/sampler.c +++ b/plugins/eg-sampler.lv2/sampler.c @@ -1,37 +1,23 @@ -/* - LV2 Sampler Example Plugin - Copyright 2011-2016 David Robillard <d@drobilla.net> - Copyright 2011 Gabriel M. Beddingfield <gabriel@teuton.org> - Copyright 2011 James Morris <jwm.art.net@gmail.com> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2011-2016 David Robillard <d@drobilla.net> +// Copyright 2011 Gabriel M. Beddingfield <gabriel@teuton.org> +// Copyright 2011 James Morris <jwm.art.net@gmail.com> +// SPDX-License-Identifier: ISC #include "atom_sink.h" #include "peaks.h" #include "uris.h" -#include "lv2/atom/atom.h" -#include "lv2/atom/forge.h" -#include "lv2/atom/util.h" -#include "lv2/core/lv2.h" -#include "lv2/core/lv2_util.h" -#include "lv2/log/log.h" -#include "lv2/log/logger.h" -#include "lv2/midi/midi.h" -#include "lv2/state/state.h" -#include "lv2/urid/urid.h" -#include "lv2/worker/worker.h" +#include <lv2/atom/atom.h> +#include <lv2/atom/forge.h> +#include <lv2/atom/util.h> +#include <lv2/core/lv2.h> +#include <lv2/core/lv2_util.h> +#include <lv2/log/log.h> +#include <lv2/log/logger.h> +#include <lv2/midi/midi.h> +#include <lv2/state/state.h> +#include <lv2/urid/urid.h> +#include <lv2/worker/worker.h> #include <samplerate.h> #include <sndfile.h> @@ -148,7 +134,7 @@ load_sample(LV2_Log_Logger* logger, const char* path, const int sample_rate) return NULL; } - sf_seek(sndfile, 0ul, SEEK_SET); + sf_seek(sndfile, 0UL, SEEK_SET); sf_read_float(sndfile, data, info->frames * info->channels); sf_close(sndfile); @@ -263,9 +249,9 @@ work(LV2_Handle instance, static LV2_Worker_Status work_response(LV2_Handle instance, uint32_t size, const void* data) { - Sampler* self = (Sampler*)instance; - Sample* old_sample = self->sample; - Sample* new_sample = *(Sample* const*)data; + Sampler* self = (Sampler*)instance; + Sample* old_sample = self->sample; + const Sample* new_sample = *(Sample* const*)data; // Install the new sample self->sample = *(Sample* const*)data; @@ -367,7 +353,7 @@ deactivate(LV2_Handle instance) } /** Define a macro for converting a gain in dB to a coefficient. */ -#define DB_CO(g) ((g) > -90.0f ? powf(10.0f, (g)*0.05f) : 0.0f) +#define DB_CO(g) ((g) > -90.0f ? powf(10.0f, (g) * 0.05f) : 0.0f) /** Handle an incoming event in the audio thread. @@ -702,8 +688,7 @@ static const LV2_Descriptor descriptor = {EG_SAMPLER_URI, cleanup, extension_data}; -LV2_SYMBOL_EXPORT -const LV2_Descriptor* +LV2_SYMBOL_EXPORT const LV2_Descriptor* lv2_descriptor(uint32_t index) { return index == 0 ? &descriptor : NULL; diff --git a/plugins/eg-sampler.lv2/sampler_ui.c b/plugins/eg-sampler.lv2/sampler_ui.c index 630fc22..769dde0 100644 --- a/plugins/eg-sampler.lv2/sampler_ui.c +++ b/plugins/eg-sampler.lv2/sampler_ui.c @@ -1,33 +1,19 @@ -/* - LV2 Sampler Example Plugin UI - Copyright 2011-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2011-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC #include "peaks.h" #include "uris.h" -#include "lv2/atom/atom.h" -#include "lv2/atom/forge.h" -#include "lv2/atom/util.h" -#include "lv2/core/lv2.h" -#include "lv2/core/lv2_util.h" -#include "lv2/log/log.h" -#include "lv2/log/logger.h" -#include "lv2/midi/midi.h" -#include "lv2/ui/ui.h" -#include "lv2/urid/urid.h" +#include <lv2/atom/atom.h> +#include <lv2/atom/forge.h> +#include <lv2/atom/util.h> +#include <lv2/core/lv2.h> +#include <lv2/core/lv2_util.h> +#include <lv2/log/log.h> +#include <lv2/log/logger.h> +#include <lv2/midi/midi.h> +#include <lv2/ui/ui.h> +#include <lv2/urid/urid.h> #include <cairo.h> #include <gdk/gdk.h> @@ -197,13 +183,13 @@ on_canvas_expose(GtkWidget* widget, GdkEventExpose* event, gpointer data) // Draw line through top peaks for (int i = 0; i < n_peaks; ++i) { const float peak = peaks[i]; - cairo_line_to(cr, i * scale, mid_y + (peak / 2.0f) * size.height); + cairo_line_to(cr, i * scale, mid_y + ((peak / 2.0f) * size.height)); } // Continue through bottom peaks for (int i = n_peaks - 1; i >= 0; --i) { const float peak = peaks[i]; - cairo_line_to(cr, i * scale, mid_y - (peak / 2.0f) * size.height); + cairo_line_to(cr, i * scale, mid_y - ((peak / 2.0f) * size.height)); } // Close shape @@ -435,7 +421,7 @@ ui_hide(LV2UI_Handle handle) static int ui_idle(LV2UI_Handle handle) { - SamplerUI* ui = (SamplerUI*)handle; + const SamplerUI* ui = (const SamplerUI*)handle; if (ui->window) { gtk_main_iteration_do(false); } @@ -465,8 +451,7 @@ static const LV2UI_Descriptor descriptor = {SAMPLER_UI_URI, port_event, extension_data}; -LV2_SYMBOL_EXPORT -const LV2UI_Descriptor* +LV2_SYMBOL_EXPORT const LV2UI_Descriptor* lv2ui_descriptor(uint32_t index) { return index == 0 ? &descriptor : NULL; diff --git a/plugins/eg-sampler.lv2/uris.h b/plugins/eg-sampler.lv2/uris.h index d7201fa..9922f51 100644 --- a/plugins/eg-sampler.lv2/uris.h +++ b/plugins/eg-sampler.lv2/uris.h @@ -1,30 +1,16 @@ -/* - LV2 Sampler Example Plugin - Copyright 2011-2016 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2011-2016 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC #ifndef SAMPLER_URIS_H #define SAMPLER_URIS_H -#include "lv2/atom/atom.h" -#include "lv2/atom/forge.h" -#include "lv2/atom/util.h" -#include "lv2/midi/midi.h" -#include "lv2/parameters/parameters.h" -#include "lv2/patch/patch.h" -#include "lv2/urid/urid.h" +#include <lv2/atom/atom.h> +#include <lv2/atom/forge.h> +#include <lv2/atom/util.h> +#include <lv2/midi/midi.h> +#include <lv2/parameters/parameters.h> +#include <lv2/patch/patch.h> +#include <lv2/urid/urid.h> #include <stdint.h> #include <stdio.h> @@ -178,7 +164,7 @@ read_set_file(const SamplerURIs* uris, const LV2_Atom_Object* obj) return NULL; } - return (const char*)LV2_ATOM_BODY_CONST(value); + return (const char*)&value[1]; } #endif /* SAMPLER_URIS_H */ diff --git a/plugins/eg-scope.lv2/examploscope.c b/plugins/eg-scope.lv2/examploscope.c index 8bc4ca1..5cdb610 100644 --- a/plugins/eg-scope.lv2/examploscope.c +++ b/plugins/eg-scope.lv2/examploscope.c @@ -1,31 +1,18 @@ -/* - Copyright 2016 David Robillard <d@drobilla.net> - Copyright 2013 Robin Gareus <robin@gareus.org> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#include "./uris.h" - -#include "lv2/atom/atom.h" -#include "lv2/atom/forge.h" -#include "lv2/atom/util.h" -#include "lv2/core/lv2.h" -#include "lv2/core/lv2_util.h" -#include "lv2/log/log.h" -#include "lv2/log/logger.h" -#include "lv2/state/state.h" -#include "lv2/urid/urid.h" +// Copyright 2016 David Robillard <d@drobilla.net> +// Copyright 2013 Robin Gareus <robin@gareus.org> +// SPDX-License-Identifier: ISC + +#include "uris.h" + +#include <lv2/atom/atom.h> +#include <lv2/atom/forge.h> +#include <lv2/atom/util.h> +#include <lv2/core/lv2.h> +#include <lv2/core/lv2_util.h> +#include <lv2/log/log.h> +#include <lv2/log/logger.h> +#include <lv2/state/state.h> +#include <lv2/urid/urid.h> #include <stdbool.h> #include <stdint.h> @@ -182,11 +169,11 @@ connect_port(LV2_Handle handle, uint32_t port, void* data) http://lv2plug.in/ns/ext/atom#Float[Float]. */ static void -tx_rawaudio(LV2_Atom_Forge* forge, - ScoLV2URIs* uris, - const int32_t channel, - const size_t n_samples, - const float* data) +tx_rawaudio(LV2_Atom_Forge* forge, + const ScoLV2URIs* uris, + const int32_t channel, + const size_t n_samples, + const float* data) { LV2_Atom_Forge_Frame frame; @@ -411,8 +398,7 @@ static const LV2_Descriptor descriptor_stereo = {SCO_URI "#Stereo", cleanup, extension_data}; -LV2_SYMBOL_EXPORT -const LV2_Descriptor* +LV2_SYMBOL_EXPORT const LV2_Descriptor* lv2_descriptor(uint32_t index) { switch (index) { diff --git a/plugins/eg-scope.lv2/examploscope_ui.c b/plugins/eg-scope.lv2/examploscope_ui.c index 8a9b588..4f366aa 100644 --- a/plugins/eg-scope.lv2/examploscope_ui.c +++ b/plugins/eg-scope.lv2/examploscope_ui.c @@ -1,27 +1,14 @@ -/* - Copyright 2013 Robin Gareus <robin@gareus.org> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2013 Robin Gareus <robin@gareus.org> +// SPDX-License-Identifier: ISC -#include "./uris.h" +#include "uris.h" -#include "lv2/atom/atom.h" -#include "lv2/atom/forge.h" -#include "lv2/atom/util.h" -#include "lv2/core/lv2.h" -#include "lv2/ui/ui.h" -#include "lv2/urid/urid.h" +#include <lv2/atom/atom.h> +#include <lv2/atom/forge.h> +#include <lv2/atom/util.h> +#include <lv2/core/lv2.h> +#include <lv2/ui/ui.h> +#include <lv2/urid/urid.h> #include <cairo.h> #include <gdk/gdk.h> @@ -123,6 +110,8 @@ send_ui_state(LV2UI_Handle handle) lv2_atom_total_size(msg), ui->uris.atom_eventTransfer, msg); + + lv2_atom_forge_set_buffer(&ui->forge, NULL, 0); } /** Notify backend that UI is closed. */ @@ -147,6 +136,8 @@ send_ui_disable(LV2UI_Handle handle) lv2_atom_total_size(msg), ui->uris.atom_eventTransfer, msg); + + lv2_atom_forge_set_buffer(&ui->forge, NULL, 0); } /** @@ -180,7 +171,7 @@ send_ui_enable(LV2UI_Handle handle) static gboolean on_cfg_changed(GtkWidget* widget, gpointer data) { - EgScopeUI* ui = (EgScopeUI*)data; + const EgScopeUI* ui = (const EgScopeUI*)data; if (!ui->updating) { // Only send UI state if the change is from user interaction send_ui_state(data); @@ -219,6 +210,7 @@ on_expose_event(GtkWidget* widget, GdkEventExpose* ev, gpointer data) assert(start < DAWIDTH); assert(end <= DAWIDTH); assert(start < end); + assert(ui->n_channels <= 2U); for (uint32_t c = 0; c < ui->n_channels; ++c) { ScoChan* chn = &ui->chn[c]; @@ -232,10 +224,10 @@ on_expose_event(GtkWidget* widget, GdkEventExpose* ev, gpointer data) * - (DAHEIGHT / 2) * (VAL) * (GAIN) * ) */ - const float chn_y_offset = DAHEIGHT * c + DAHEIGHT * 0.5f - 0.5f; - const float chn_y_scale = DAHEIGHT * 0.5f * gain; + const float chn_y_offset = (DAHEIGHT * c) + (DAHEIGHT * 0.5f) - 0.5f; + const float chn_y_scale = (DAHEIGHT * 0.5f) * gain; -#define CYPOS(VAL) (chn_y_offset - (VAL)*chn_y_scale) +#define CYPOS(VAL) (chn_y_offset - ((VAL) * chn_y_scale)) cairo_save(cr); @@ -305,15 +297,15 @@ on_expose_event(GtkWidget* widget, GdkEventExpose* ev, gpointer data) // Channel separator if (c > 0) { cairo_set_source_rgba(cr, .5, .5, .5, 1.0); - cairo_move_to(cr, 0, DAHEIGHT * c - .5); - cairo_line_to(cr, DAWIDTH, DAHEIGHT * c - .5); + cairo_move_to(cr, 0, (DAHEIGHT * c) - .5); + cairo_line_to(cr, DAWIDTH, (DAHEIGHT * c) - .5); cairo_stroke(cr); } // Zero scale line cairo_set_source_rgba(cr, .3, .3, .7, .5); - cairo_move_to(cr, 0, DAHEIGHT * (c + .5) - .5); - cairo_line_to(cr, DAWIDTH, DAHEIGHT * (c + .5) - .5); + cairo_move_to(cr, 0, (DAHEIGHT * (c + .5)) - .5); + cairo_line_to(cr, DAWIDTH, (DAHEIGHT * (c + .5)) - .5); cairo_stroke(cr); } @@ -340,12 +332,12 @@ on_expose_event(GtkWidget* widget, GdkEventExpose* ev, gpointer data) and https://github.com/x42/sisco.lv2 */ static int -process_channel(EgScopeUI* ui, - ScoChan* chn, - const size_t n_elem, - float const* data, - uint32_t* idx_start, - uint32_t* idx_end) +process_channel(const EgScopeUI* ui, + ScoChan* chn, + const size_t n_elem, + float const* data, + uint32_t* idx_start, + uint32_t* idx_end) { int overflow = 0; *idx_start = chn->idx; @@ -668,8 +660,7 @@ static const LV2UI_Descriptor descriptor = {SCO_URI "#ui", port_event, NULL}; -LV2_SYMBOL_EXPORT -const LV2UI_Descriptor* +LV2_SYMBOL_EXPORT const LV2UI_Descriptor* lv2ui_descriptor(uint32_t index) { return index == 0 ? &descriptor : NULL; diff --git a/plugins/eg-scope.lv2/meson.build b/plugins/eg-scope.lv2/meson.build index ecf01b2..84e17ba 100644 --- a/plugins/eg-scope.lv2/meson.build +++ b/plugins/eg-scope.lv2/meson.build @@ -1,16 +1,25 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC plugin_sources = files('examploscope.c') +ui_sources = files('examploscope_ui.c') bundle_name = 'eg-scope.lv2' data_filenames = ['manifest.ttl.in', 'examploscope.ttl.in'] +gtk2_dep = dependency( + 'gtk+-2.0', + include_type: 'system', + required: get_option('plugins'), + version: '>= 2.18.0', +) + module = shared_library( 'examploscope', plugin_sources, c_args: c_suppressions, dependencies: [lv2_dep, m_dep], gnu_symbol_visibility: 'hidden', + implicit_include_directories: false, install: true, install_dir: lv2dir / bundle_name, name_prefix: '', @@ -19,7 +28,7 @@ module = shared_library( config = configuration_data( { 'LIB_EXT': '.' + module.full_path().split('.')[-1], - } + }, ) foreach filename : data_filenames @@ -39,3 +48,17 @@ foreach filename : data_filenames ) endif endforeach + +if gtk2_dep.found() + shared_library( + 'examploscope_ui', + ui_sources, + c_args: c_suppressions, + dependencies: [lv2_dep, gtk2_dep], + gnu_symbol_visibility: 'hidden', + implicit_include_directories: false, + install: true, + install_dir: lv2dir / bundle_name, + name_prefix: '', + ) +endif diff --git a/plugins/eg-scope.lv2/uris.h b/plugins/eg-scope.lv2/uris.h index 8873786..d9d94be 100644 --- a/plugins/eg-scope.lv2/uris.h +++ b/plugins/eg-scope.lv2/uris.h @@ -1,25 +1,12 @@ -/* - Copyright 2013 Robin Gareus <robin@gareus.org> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2013 Robin Gareus <robin@gareus.org> +// SPDX-License-Identifier: ISC #ifndef SCO_URIS_H #define SCO_URIS_H -#include "lv2/atom/atom.h" -#include "lv2/parameters/parameters.h" -#include "lv2/urid/urid.h" +#include <lv2/atom/atom.h> +#include <lv2/parameters/parameters.h> +#include <lv2/urid/urid.h> #define SCO_URI "http://lv2plug.in/plugins/eg-scope" @@ -31,7 +18,7 @@ typedef struct { LV2_URID atom_eventTransfer; LV2_URID param_sampleRate; - /* URIs defined for this plugin. It is best to re-use existing URIs as + /* URIs defined for this plugin. It is best to reuse existing URIs as much as possible, but plugins may need more vocabulary specific to their needs. These are used as types and properties for plugin:UI communication, as well as for saving state. */ diff --git a/plugins/meson.build b/plugins/meson.build index 08b3feb..ff70af1 100644 --- a/plugins/meson.build +++ b/plugins/meson.build @@ -1,5 +1,5 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC if not get_option('plugins').disabled() m_dep = cc.find_library('m', required: false) @@ -18,8 +18,8 @@ if not get_option('docs').disabled() asciidoc = find_program('asciidoc', required: get_option('docs')) if asciidoc.found() - book_inputs = files( - 'README.txt', + book_inputs = files('README.txt') + book_inputs += files( 'eg-amp.lv2/README.txt', 'eg-amp.lv2/amp.c', 'eg-amp.lv2/amp.ttl', diff --git a/schemas.lv2/README b/schemas.lv2/README.txt index 1395251..1395251 100644 --- a/schemas.lv2/README +++ b/schemas.lv2/README.txt diff --git a/schemas.lv2/dcs.ttl b/schemas.lv2/dcs.ttl deleted file mode 100644 index 4c62ed9..0000000 --- a/schemas.lv2/dcs.ttl +++ /dev/null @@ -1,67 +0,0 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . -@prefix dcterms: <http://purl.org/dc/terms/> . -@prefix doap: <http://usefulinc.com/ns/doap#> . -@prefix foaf: <http://xmlns.com/foaf/0.1/> . -@prefix owl: <http://www.w3.org/2002/07/owl#> . -@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . -@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . -@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . - -<> - rdfs:comment "Minimal DOAP Change Sets vocabulary used by LV2." . - -<http://tobyinkster.co.uk/#i> - a foaf:Person . - -dcs: - a owl:Ontology ; - dcterms:contributor <http://drobilla.net/drobilla#me> ; - dcterms:created "2010-01-08"^^xsd:date ; - dcterms:creator <http://tobyinkster.co.uk/#i> ; - dcterms:description "An ontology that extends DOAP to describe changesets." ; - dcterms:modified "2022-07-07"^^xsd:date ; - rdfs:label "DOAP Change Sets" . - -dcs:Change - a owl:Class ; - rdfs:comment "A change to something." ; - rdfs:label "Change" ; - rdfs:subClassOf [ - a owl:Restriction ; - rdfs:comment "A change must have a plain literal label." ; - owl:onProperty rdfs:label ; - owl:someValuesFrom rdf:PlainLiteral - ] . - -dcs:ChangeSet - a owl:Class ; - rdfs:comment "A collection of changes." ; - rdfs:label "Change Set" ; - rdfs:subClassOf rdf:Bag . - -dcs:blame - a owl:ObjectProperty ; - rdfs:label "blame" ; - rdfs:subPropertyOf dcs:thanks . - -dcs:changeset - a owl:ObjectProperty ; - rdfs:comment "The change set of a version." ; - rdfs:domain doap:Version ; - rdfs:label "change set" ; - rdfs:range dcs:ChangeSet . - -dcs:item - a owl:ObjectProperty ; - rdfs:comment "A change in a change set." ; - rdfs:domain dcs:ChangeSet ; - rdfs:label "item" ; - rdfs:range dcs:Change ; - rdfs:subPropertyOf rdfs:member . - -dcs:thanks - a owl:ObjectProperty ; - rdfs:domain dcs:Change ; - rdfs:label "thanks" ; - rdfs:range foaf:Agent . - diff --git a/schemas.lv2/dcterms.ttl b/schemas.lv2/dcterms.ttl index f6a5d06..d8fd196 100644 --- a/schemas.lv2/dcterms.ttl +++ b/schemas.lv2/dcterms.ttl @@ -337,4 +337,3 @@ dcterms:title rdfs:isDefinedBy dcterms: ; rdfs:label "title"@en-us ; rdfs:range rdfs:Literal . - diff --git a/schemas.lv2/doap.ttl b/schemas.lv2/doap.ttl index b806d31..160cda5 100644 --- a/schemas.lv2/doap.ttl +++ b/schemas.lv2/doap.ttl @@ -706,4 +706,3 @@ doap:wiki "wiki"@en , "wiki"@es , "wiki"@fr . - diff --git a/schemas.lv2/foaf.ttl b/schemas.lv2/foaf.ttl index 17dcc13..5aec41e 100644 --- a/schemas.lv2/foaf.ttl +++ b/schemas.lv2/foaf.ttl @@ -609,4 +609,3 @@ foaf:yahooChatID rdfs:label "Yahoo chat ID" ; rdfs:range rdfs:Literal ; rdfs:subPropertyOf foaf:nick . - diff --git a/schemas.lv2/manifest.ttl b/schemas.lv2/manifest.ttl index ed11c1a..813d254 100644 --- a/schemas.lv2/manifest.ttl +++ b/schemas.lv2/manifest.ttl @@ -1,10 +1,6 @@ @prefix owl: <http://www.w3.org/2002/07/owl#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . -<http://ontologi.es/doap-changeset#> - a owl:Ontology ; - rdfs:seeAlso <dcs.ttl> . - <http://purl.org/dc/terms/> a owl:Ontology ; rdfs:seeAlso <dcterms.ttl> . @@ -32,4 +28,3 @@ rdfs: <http://www.w3.org/2001/XMLSchema#> a owl:Ontology ; rdfs:seeAlso <xsd.ttl> . - diff --git a/schemas.lv2/meson.build b/schemas.lv2/meson.build index fb7bed5..8a0d36b 100644 --- a/schemas.lv2/meson.build +++ b/schemas.lv2/meson.build @@ -1,8 +1,7 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC schema_data = files( - 'dcs.ttl', 'dcterms.ttl', 'doap.ttl', 'foaf.ttl', diff --git a/schemas.lv2/owl.ttl b/schemas.lv2/owl.ttl index 26bd0e8..e5f4fa2 100644 --- a/schemas.lv2/owl.ttl +++ b/schemas.lv2/owl.ttl @@ -618,4 +618,3 @@ owl:withRestrictions rdfs:isDefinedBy owl: ; rdfs:label "with restrictions" ; rdfs:range rdf:List . - diff --git a/schemas.lv2/rdf.ttl b/schemas.lv2/rdf.ttl index cb758cb..0fdeed0 100644 --- a/schemas.lv2/rdf.ttl +++ b/schemas.lv2/rdf.ttl @@ -126,4 +126,3 @@ rdf:value rdfs:isDefinedBy rdf: ; rdfs:label "value" ; rdfs:range rdfs:Resource . - diff --git a/schemas.lv2/rdfs.ttl b/schemas.lv2/rdfs.ttl index 10cfbb7..09ba907 100644 --- a/schemas.lv2/rdfs.ttl +++ b/schemas.lv2/rdfs.ttl @@ -121,4 +121,3 @@ rdfs:subPropertyOf rdfs:isDefinedBy rdfs: ; rdfs:label "sub-property of" ; rdfs:range rdf:Property . - diff --git a/schemas.lv2/xsd.ttl b/schemas.lv2/xsd.ttl index cb98363..38bae58 100644 --- a/schemas.lv2/xsd.ttl +++ b/schemas.lv2/xsd.ttl @@ -45,7 +45,8 @@ xsd:byte owl:withRestrictions ( [ xsd:maxInclusive "127"^^xsd:byte - ] [ + ] + [ xsd:minInclusive "-128"^^xsd:byte ] ) . @@ -99,7 +100,8 @@ xsd:duration owl:withRestrictions ( [ xsd:pattern "-?P([0-9]+Y)?([0-9]+M)?([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+(\\.[0-9]+)?S)?)?" - ] [ + ] + [ xsd:whiteSpace "collapse" ] ) . @@ -112,7 +114,8 @@ xsd:float owl:withRestrictions ( [ xsd:pattern "-?INF|NaN|[+-]?(([0-9]+[.]?[0-9]*)|([0-9]*[.]?[0-9]+))([eE][-+]?[0-9]+)?" - ] [ + ] + [ xsd:whiteSpace "collapse" ] ) . @@ -142,7 +145,8 @@ xsd:int owl:withRestrictions ( [ xsd:maxInclusive "2147483647"^^xsd:int - ] [ + ] + [ xsd:minInclusive "-2147483648"^^xsd:int ] ) . @@ -154,7 +158,8 @@ xsd:integer owl:withRestrictions ( [ xsd:pattern "[-+]?[0-9]+" - ] [ + ] + [ xsd:fractionDigits 0 ] ) . @@ -176,7 +181,8 @@ xsd:long owl:withRestrictions ( [ xsd:maxInclusive "9223372036854775807"^^xsd:long - ] [ + ] + [ xsd:minInclusive "-9223372036854775808"^^xsd:long ] ) . @@ -222,7 +228,8 @@ xsd:nonNegativeInteger owl:withRestrictions ( [ xsd:pattern "[+]?[0-9]+" - ] [ + ] + [ xsd:minInclusive 0 ] ) . @@ -234,7 +241,8 @@ xsd:nonPositiveInteger owl:withRestrictions ( [ xsd:pattern "(0|-[0-9]+)" - ] [ + ] + [ xsd:maxInclusive 0 ] ) . @@ -258,7 +266,8 @@ xsd:positiveInteger owl:withRestrictions ( [ xsd:pattern "[+]?[0-9]*[1-9]+[0-9]*" - ] [ + ] + [ xsd:minInclusive 1 ] ) . @@ -270,7 +279,8 @@ xsd:short owl:withRestrictions ( [ xsd:maxInclusive "32767"^^xsd:short - ] [ + ] + [ xsd:minInclusive "-32768"^^xsd:short ] ) . @@ -351,4 +361,3 @@ xsd:whiteSpace ] ) ] . - diff --git a/scripts/lv2_build_index.py b/scripts/lv2_build_index.py index 9a287e4..6e4ebea 100755 --- a/scripts/lv2_build_index.py +++ b/scripts/lv2_build_index.py @@ -7,10 +7,8 @@ Write an HTML index for a set of LV2 specifications. """ -import datetime import json import os -import time import sys import argparse import subprocess @@ -67,30 +65,6 @@ def _spec_target(spec, root, online=False): return target if online else target + ".html" -def _spec_date(model, spec, minor, micro): - "Return the date for a release of a specification as an RDF node." - - # Get date - date = None - for release in model.objects(spec, doap.release): - revision = model.value(release, doap.revision, None, any=False) - if str(revision) == f"{minor}.{micro}": - date = model.value(release, doap.created, None) - break - - # Verify that this date is the latest - if date is not None: - for other_release in model.objects(spec, doap.release): - for other_date in model.objects(other_release, doap.created): - if other_date is None: - _warn(f"{spec} has no doap:created date") - elif other_date > date: - _warn(f"{spec} {minor}.{micro} ({date}) is an old release") - break - - return date - - def _spec_link_columns(spec, root, name, online): "Return the first two link columns in a spec row as an HTML string." @@ -106,7 +80,7 @@ def _spec_link_columns(spec, root, name, online): # API col += '<td><a rel="rdfs:seeAlso"' - col += f' href="../html/group__{stem}.html">{name}' + col += f' href="../c/html/group__{stem}.html">{name}' col += "</a></td>" return col @@ -133,11 +107,6 @@ def index_row(model, spec, root_uri, online): _warn(f"{spec} has no unique valid version") return "" - # Check that date is present and valid - if _spec_date(model, spec, minor, micro) is None: - _warn(f"{spec} has no doap:created date") - return "" - row = "<tr>" # Specification and API @@ -182,34 +151,16 @@ def build_index( model = _load_ttl(input_paths) - # Get date for this version, and list of all LV2 distributions - proj = rdflib.URIRef("http://lv2plug.in/ns/lv2") - date = None - for row in model.triples([proj, doap.release, None]): - revision = model.value(row[2], doap.revision, None) - created = model.value(row[2], doap.created, None) - if str(revision) == lv2_version: - date = created - - dist = model.value(row[2], doap["file-release"], None) - if not dist or not created: - _warn(f"{proj} has no file release") - rows = [] for spec in model.triples([None, rdf.type, lv2.Specification]): rows += [index_row(model, spec[0], root_uri, online)] - if date is None: - now = int(os.environ.get("SOURCE_DATE_EPOCH", time.time())) - date = datetime.datetime.utcfromtimestamp(now).strftime("%F") - _subst_file( os.path.join(lv2_source_root, "doc", "index.html.in"), sys.stdout, { "@ROWS@": "\n".join(sorted(rows)), "@LV2_VERSION@": lv2_version, - "@DATE@": date, }, ) diff --git a/scripts/lv2_check_specification.py b/scripts/lv2_check_specification.py index 0cd296e..41611ef 100755 --- a/scripts/lv2_check_specification.py +++ b/scripts/lv2_check_specification.py @@ -150,8 +150,8 @@ def _check_specification(checker, spec_dir, is_stable=False): # Get all subjects that have an explicit rdf:type typed_subjects = set() - for typing in model.triples([None, rdf.type, None]): - typed_subjects.add(typing[0]) + for subject in model.subjects(rdf.type, None): + typed_subjects.add(subject) # Check that all named and typed resources have labels and comments for subject in typed_subjects: diff --git a/scripts/lv2_write_news.py b/scripts/lv2_write_news.py deleted file mode 100755 index 6ce935c..0000000 --- a/scripts/lv2_write_news.py +++ /dev/null @@ -1,258 +0,0 @@ -#!/usr/bin/env python3 - -# Copyright 2020-2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: ISC - -""" -Write a NEWS file from RDF data. - -The output is in Debian changelog format, which can be parsed by -dpkg-parsechangelog, among other things. -""" - -import argparse -import os -import sys -import datetime -import textwrap -import urllib -import re - -import rdflib - -doap = rdflib.Namespace("http://usefulinc.com/ns/doap#") -dcs = rdflib.Namespace("http://ontologi.es/doap-changeset#") -rdfs = rdflib.Namespace("http://www.w3.org/2000/01/rdf-schema#") -foaf = rdflib.Namespace("http://xmlns.com/foaf/0.1/") -rdf = rdflib.Namespace("http://www.w3.org/1999/02/22-rdf-syntax-ns#") - - -def _is_release_version(version): - "Return true if `version` is a stable version number." - - if len(version) not in [2, 3] or version[0] == 0: - return False - - minor = version[len(version) - 2] - micro = version[len(version) - 1] - - return micro % 2 == 0 and (len(version) == 2 or minor % 2 == 0) - - -def _parse_datetime(string): - "Parse string as either a datetime or a date." - - try: - return datetime.datetime.strptime(string, "%Y-%m-%dT%H:%M:%S%z") - except ValueError: - return datetime.datetime.strptime(string, "%Y-%m-%d") - - -def _release_entry(graph, release): - "Return a news entry for a release." - - revision = graph.value(release, doap.revision, None) - date = graph.value(release, doap.created, None) - blamee = graph.value(release, dcs.blame, None) - changeset = graph.value(release, dcs.changeset, None) - dist = graph.value(release, doap["file-release"], None) - - if not revision or not date or not blamee or not changeset: - return None - - version = tuple(map(int, revision.split("."))) - - entry = { - "version": version, - "revision": str(revision), - "date": _parse_datetime(date), - "status": "stable" if _is_release_version(version) else "unstable", - "items": [], - } - - if dist is not None: - entry["dist"] = dist - - for j in graph.triples([changeset, dcs.item, None]): - item = str(graph.value(j[2], rdfs.label, None)) - entry["items"] += [item] - - entry["blamee_name"] = str(graph.value(blamee, foaf.name, None)) - entry["blamee_mbox"] = str(graph.value(blamee, foaf.mbox, None)) - return entry - - -def _project_entries(graph, project): - "Return a map from version to news entries for a project" - - entries = {} - for link in graph.triples([project, doap.release, None]): - entry = _release_entry(graph, link[2]) - if entry is not None: - entries[entry["version"]] = entry - else: - sys.stderr.write(f"warning: Ignored partial {project} release\n") - - return entries - - -def _read_turtle_news(in_files): - "Read news entries from Turtle." - - graph = rdflib.Graph() - - # Parse input files - for i in in_files: - graph.parse(i) - - # Read news for every project in the data - projects = {t[0] for t in graph.triples([None, rdf.type, doap.Project])} - entries_by_project = {} - for project in projects: - # Load any associated files - for uri in graph.triples([project, rdfs.seeAlso, None]): - if uri[2].endswith(".ttl"): - graph.parse(uri[2]) - - # Use the symbol from the URI as a name, or failing that, the doap:name - name = os.path.basename(urllib.parse.urlparse(str(project)).path) - if not name: - name = graph.value(project, doap.name, None) - - entries = _project_entries(graph, project) - for _, entry in entries.items(): - entry["name"] = name - - entries_by_project[str(project)] = entries - - return entries_by_project - - -def _write_news_item(out, item): - "Write a single item (change) in NEWS format." - - out.write("\n * " + "\n ".join(textwrap.wrap(item, width=74))) - - -def _write_news_entry(out, entry): - "Write an entry (version) to out in NEWS format." - - # Summary header - summary = f'{entry["name"]} ({entry["revision"]}) {entry["status"]}' - out.write(f"{summary}; urgency=medium\n") - - # Individual change items - for item in sorted(entry["items"]): - _write_news_item(out, item) - - # Trailer line - mbox = entry["blamee_mbox"].replace("mailto:", "") - author = f'{entry["blamee_name"]} <{mbox}>' - date = entry["date"] - if date.tzinfo is None: # Assume UTC (dpkg-parsechangelog requires it) - date = date.strftime("%a, %d %b %Y %H:%M:%S +0000") - else: - date = date.strftime("%a, %d %b %Y %H:%M:%S %z") - - out.write(f"\n\n -- {author} {date}\n") - - -def _write_single_project_news(out, entries): - "Write a NEWS file for entries of a single project to out." - - revisions = sorted(entries.keys(), reverse=True) - for revision in revisions: - entry = entries[revision] - out.write("\n" if revision != revisions[0] else "") - _write_news_entry(out, entry) - - -def _write_meta_project_news(out, top_project, entries_by_project): - "Write a NEWS file for a meta-project that contains others." - - top_name = os.path.basename(urllib.parse.urlparse(str(top_project)).path) - release_pattern = rf".*/{top_name}-([0-9\.]*).tar.bz2" - - # Pop the entries for the top project - top_entries = entries_by_project.pop(top_project) - - # Add items from the other projects to the corresponding top entry - for _, entries in entries_by_project.items(): - for version, entry in entries.items(): - if "dist" in entry: - match = re.match(release_pattern, entry["dist"]) - if match: - version = tuple(map(int, match.group(1).split("."))) - for item in entry["items"]: - top_entries[version]["items"] += [ - f'{entry["name"]}: {item}' - ] - - for version in sorted(top_entries.keys(), reverse=True): - out.write("\n" if version != max(top_entries.keys()) else "") - _write_news_entry(out, top_entries[version]) - - -def _write_text_news(out, entries_by_project, top_project=None): - "Write NEWS in standard Debian changelog format." - - if len(entries_by_project) > 1: - if top_project is None: - sys.stderr.write("error: --top is required for multi-projects\n") - return 1 - - _write_meta_project_news(out, top_project, entries_by_project) - else: - project = next(iter(entries_by_project)) - _write_single_project_news(out, entries_by_project[project]) - - return 0 - - -if __name__ == "__main__": - ap = argparse.ArgumentParser( - usage="%(prog)s [OPTION]... DATA_FILE...", - description=__doc__, - formatter_class=argparse.RawDescriptionHelpFormatter, - ) - - ap.add_argument( - "-o", - "--output", - metavar="OUTPUT_FILE", - help="output file path", - ) - - ap.add_argument( - "-t", - "--top-project", - metavar="OUTPUT_FILE", - help="URI of parent meta-project with file releases", - ) - - ap.add_argument( - "DATA_FILE", - nargs="+", - help="path to a Turtle file with release data", - ) - - args = ap.parse_args(sys.argv[1:]) - - if not args.output and "MESON_DIST_ROOT" in os.environ: - args.output = os.path.join(os.getenv("MESON_DIST_ROOT"), "NEWS") - - if not args.output: - sys.exit( - _write_text_news( - sys.stdout, _read_turtle_news(args.DATA_FILE), args.top_project - ) - ) - else: - with open(args.output, "w", encoding="utf-8") as output_file: - sys.exit( - _write_text_news( - output_file, - _read_turtle_news(args.DATA_FILE), - args.top_project, - ) - ) diff --git a/scripts/meson.build b/scripts/meson.build index 400d583..1a77ab7 100644 --- a/scripts/meson.build +++ b/scripts/meson.build @@ -1,9 +1,8 @@ # Copyright 2021-2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC lv2_scripts = files( 'lv2_build_index.py', 'lv2_check_specification.py', 'lv2_check_syntax.py', - 'lv2_write_news.py', ) diff --git a/test/.clang-tidy b/test/.clang-tidy index f73d7a6..ef4d61f 100644 --- a/test/.clang-tidy +++ b/test/.clang-tidy @@ -1,20 +1,16 @@ +# Copyright 2020-2025 David Robillard <d@drobilla.net> +# SPDX-License-Identifier: 0BSD OR ISC + Checks: > - *, -*-else-after-return, - -*-magic-numbers, - -*-uppercase-literal-suffix, - -altera-*, -bugprone-easily-swappable-parameters, - -bugprone-macro-parentheses, + -bugprone-multi-level-implicit-pointer-conversion, -bugprone-suspicious-include, - -bugprone-suspicious-string-compare, - -llvm-header-guard, + -cert-err33-c, + -clang-diagnostic-unused-parameter, + -cppcoreguidelines-avoid-non-const-global-variables, -llvmlibc-implementation-in-namespace, - -llvmlibc-restrict-system-libc-headers, + -misc-unused-parameters, -modernize-use-trailing-return-type, - -performance-no-int-to-ptr, -readability-function-cognitive-complexity, - -readability-identifier-length, -WarningsAsErrors: '*' -HeaderFilterRegex: '.*' -FormatStyle: file +InheritParentConfig: true diff --git a/test/atom_test_utils.c b/test/atom_test_utils.c index ae368c8..5c313a5 100644 --- a/test/atom_test_utils.c +++ b/test/atom_test_utils.c @@ -1,25 +1,15 @@ -/* - Copyright 2012-2018 David Robillard <d@drobilla.net> +// Copyright 2012-2018 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. +#undef NDEBUG - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#include "lv2/atom/atom.h" -#include "lv2/atom/forge.h" -#include "lv2/atom/util.h" -#include "lv2/log/log.h" -#include "lv2/urid/urid.h" +#include <lv2/atom/atom.h> +#include <lv2/atom/forge.h> +#include <lv2/atom/util.h> +#include <lv2/log/log.h> +#include <lv2/urid/urid.h> +#include <assert.h> #include <stdarg.h> #include <stdio.h> #include <stdlib.h> @@ -45,8 +35,11 @@ urid_map(LV2_URID_Map_Handle handle, const char* uri) } } - uris = (char**)realloc(uris, ++n_uris * sizeof(char*)); - uris[n_uris - 1] = copy_string(uri); + char** const new_uris = (char**)realloc(uris, (n_uris + 1) * sizeof(char*)); + assert(new_uris); + + uris = new_uris; + uris[n_uris++] = copy_string(uri); return n_uris; } diff --git a/test/cpp/.clang-tidy b/test/cpp/.clang-tidy new file mode 100644 index 0000000..1fe1f27 --- /dev/null +++ b/test/cpp/.clang-tidy @@ -0,0 +1,27 @@ +# Copyright 2020-2025 David Robillard <d@drobilla.net> +# SPDX-License-Identifier: 0BSD OR ISC + +Checks: > + -*-avoid-c-arrays, + -*-deprecated-headers, + -*-no-malloc, + -*-use-auto, + -bugprone-reserved-identifier, + -cert-dcl37-c, + -cert-dcl50-cpp, + -cert-dcl51-cpp, + -cppcoreguidelines-macro-usage, + -cppcoreguidelines-owning-memory, + -cppcoreguidelines-pro-bounds-array-to-pointer-decay, + -cppcoreguidelines-pro-bounds-pointer-arithmetic, + -cppcoreguidelines-pro-type-cstyle-cast, + -cppcoreguidelines-pro-type-vararg, + -hicpp-no-array-decay, + -hicpp-use-nullptr, + -hicpp-vararg, + -llvmlibc-callee-namespace, + -modernize-use-nullptr, + -modernize-use-using, + -performance-enum-size, + -readability-implicit-bool-conversion, +InheritParentConfig: true diff --git a/test/cpp/test_build.cpp b/test/cpp/test_build.cpp new file mode 100644 index 0000000..73868a4 --- /dev/null +++ b/test/cpp/test_build.cpp @@ -0,0 +1,54 @@ +// Copyright 2022 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC + +#if defined(__clang__) +_Pragma("clang diagnostic push") +_Pragma("clang diagnostic ignored \"-Wold-style-cast\"") +_Pragma("clang diagnostic ignored \"-Wzero-as-null-pointer-constant\"") +#elif defined(__GNUC__) +_Pragma("GCC diagnostic push") +_Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") +#endif + +#include <lv2/atom/atom.h> // IWYU pragma: keep +#include <lv2/atom/forge.h> // IWYU pragma: keep +#include <lv2/atom/util.h> // IWYU pragma: keep +#include <lv2/buf-size/buf-size.h> // IWYU pragma: keep +#include <lv2/core/attributes.h> // IWYU pragma: keep +#include <lv2/core/lv2.h> // IWYU pragma: keep +#include <lv2/core/lv2_util.h> // IWYU pragma: keep +#include <lv2/data-access/data-access.h> // IWYU pragma: keep +#include <lv2/dynmanifest/dynmanifest.h> // IWYU pragma: keep +#include <lv2/event/event-helpers.h> // IWYU pragma: keep +#include <lv2/event/event.h> // IWYU pragma: keep +#include <lv2/instance-access/instance-access.h> // IWYU pragma: keep +#include <lv2/log/log.h> // IWYU pragma: keep +#include <lv2/log/logger.h> // IWYU pragma: keep +#include <lv2/midi/midi.h> // IWYU pragma: keep +#include <lv2/morph/morph.h> // IWYU pragma: keep +#include <lv2/options/options.h> // IWYU pragma: keep +#include <lv2/parameters/parameters.h> // IWYU pragma: keep +#include <lv2/patch/patch.h> // IWYU pragma: keep +#include <lv2/port-groups/port-groups.h> // IWYU pragma: keep +#include <lv2/port-props/port-props.h> // IWYU pragma: keep +#include <lv2/presets/presets.h> // IWYU pragma: keep +#include <lv2/resize-port/resize-port.h> // IWYU pragma: keep +#include <lv2/state/state.h> // IWYU pragma: keep +#include <lv2/time/time.h> // IWYU pragma: keep +#include <lv2/ui/ui.h> // IWYU pragma: keep +#include <lv2/units/units.h> // IWYU pragma: keep +#include <lv2/uri-map/uri-map.h> // IWYU pragma: keep +#include <lv2/urid/urid.h> // IWYU pragma: keep +#include <lv2/worker/worker.h> // IWYU pragma: keep + +int +main() +{ + return 0; +} + +#if defined(__clang__) +_Pragma("clang diagnostic pop") +#elif defined(__GNUC__) +_Pragma("GCC diagnostic pop") +#endif diff --git a/test/headers/.clang-tidy b/test/headers/.clang-tidy new file mode 100644 index 0000000..bf971cc --- /dev/null +++ b/test/headers/.clang-tidy @@ -0,0 +1,22 @@ +# Copyright 2020-2024 David Robillard <d@drobilla.net> +# SPDX-License-Identifier: 0BSD OR ISC + +Checks: > + *, + -*-macro-to-enum, + -*-magic-numbers, + -altera-*, + -bugprone-assignment-in-if-condition, + -bugprone-easily-swappable-parameters, + -bugprone-macro-parentheses, + -llvmlibc-restrict-system-libc-headers, + -performance-no-int-to-ptr, + -readability-identifier-length, +CheckOptions: + - key: hicpp-uppercase-literal-suffix.NewSuffixes + value: L;U;f + - key: readability-uppercase-literal-suffix.NewSuffixes + value: L;U;f +FormatStyle: file +HeaderFilterRegex: 'lv2/.*\.h' +WarningsAsErrors: '*' diff --git a/test/headers/meson.build b/test/headers/meson.build new file mode 100644 index 0000000..89ee4b8 --- /dev/null +++ b/test/headers/meson.build @@ -0,0 +1,69 @@ +# Copyright 2020-2022 David Robillard <d@drobilla.net> +# SPDX-License-Identifier: 0BSD OR ISC + +header_c_suppressions = [] + +if get_option('warning_level') == 'everything' + if cc.get_id() == 'clang' + header_c_suppressions += [ + '-Wno-cast-align', + '-Wno-cast-qual', + '-Wno-declaration-after-statement', + '-Wno-padded', + '-Wno-unsafe-buffer-usage', + ] + + if not meson.is_cross_build() + header_c_suppressions += [ + '-Wno-poison-system-directories', + ] + endif + + if host_machine.system() == 'windows' + header_c_suppressions += [ + '-Wno-format-nonliteral', + ] + endif + + elif cc.get_id() == 'gcc' + header_c_suppressions += [ + '-Wno-cast-align', + '-Wno-cast-qual', + '-Wno-padded', + '-Wno-sign-conversion', + '-Wno-suggest-attribute=format', + '-Wno-unused-const-variable', + ] + + if host_machine.system() == 'windows' + header_c_suppressions += [ + '-Wno-sign-conversion', + ] + endif + + elif cc.get_id() == 'msvc' + header_c_suppressions += [ + '/wd4820', # padding added after construct + ] + endif +endif + +if cc.get_id() == 'clang' + header_c_suppressions += [ + '-Wno-nullability-extension', + ] +endif + +header_c_suppressions = cc.get_supported_arguments(header_c_suppressions) + +test( + 'headers', + executable( + 'test_headers', + files('test_headers.c'), + c_args: header_c_suppressions, + dependencies: [lv2_dep], + implicit_include_directories: false, + ), + suite: 'unit', +) diff --git a/test/headers/test_headers.c b/test/headers/test_headers.c new file mode 100644 index 0000000..d62b000 --- /dev/null +++ b/test/headers/test_headers.c @@ -0,0 +1,42 @@ +// Copyright 2022 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC + +#include <lv2/atom/atom.h> // IWYU pragma: keep +#include <lv2/atom/forge.h> // IWYU pragma: keep +#include <lv2/atom/util.h> // IWYU pragma: keep +#include <lv2/buf-size/buf-size.h> // IWYU pragma: keep +#include <lv2/core/attributes.h> // IWYU pragma: keep +#include <lv2/core/lv2.h> // IWYU pragma: keep +#include <lv2/core/lv2_util.h> // IWYU pragma: keep +#include <lv2/data-access/data-access.h> // IWYU pragma: keep +#include <lv2/dynmanifest/dynmanifest.h> // IWYU pragma: keep +#include <lv2/event/event-helpers.h> // IWYU pragma: keep +#include <lv2/event/event.h> // IWYU pragma: keep +#include <lv2/instance-access/instance-access.h> // IWYU pragma: keep +#include <lv2/log/log.h> // IWYU pragma: keep +#include <lv2/log/logger.h> // IWYU pragma: keep +#include <lv2/midi/midi.h> // IWYU pragma: keep +#include <lv2/morph/morph.h> // IWYU pragma: keep +#include <lv2/options/options.h> // IWYU pragma: keep +#include <lv2/parameters/parameters.h> // IWYU pragma: keep +#include <lv2/patch/patch.h> // IWYU pragma: keep +#include <lv2/port-groups/port-groups.h> // IWYU pragma: keep +#include <lv2/port-props/port-props.h> // IWYU pragma: keep +#include <lv2/presets/presets.h> // IWYU pragma: keep +#include <lv2/resize-port/resize-port.h> // IWYU pragma: keep +#include <lv2/state/state.h> // IWYU pragma: keep +#include <lv2/time/time.h> // IWYU pragma: keep +#include <lv2/ui/ui.h> // IWYU pragma: keep +#include <lv2/units/units.h> // IWYU pragma: keep +#include <lv2/uri-map/uri-map.h> // IWYU pragma: keep +#include <lv2/urid/urid.h> // IWYU pragma: keep +#include <lv2/worker/worker.h> // IWYU pragma: keep + +#ifdef __GNUC__ +__attribute__((const)) +#endif +int +main(void) +{ + return 0; +} diff --git a/test/meson.build b/test/meson.build index e6178dc..cddb05a 100644 --- a/test/meson.build +++ b/test/meson.build @@ -1,55 +1,65 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC ######## # Data # ######## -# Check for spelling errors -codespell = find_program('codespell', required: get_option('tests')) -if codespell.found() - ignore = [ - lv2_source_root / 'doc' / 'style' / 'pygments.css', - lv2_source_root / 'lv2specgen' / 'DTD', - lv2_source_root / 'schemas.lv2' / 'doap.ttl', - ] +if get_option('lint') + # Check for spelling errors + codespell = find_program('codespell', required: get_option('tests')) + if codespell.found() + ignore = [ + lv2_source_root / 'doc' / 'style' / 'pygments.css', + lv2_source_root / 'lv2specgen' / 'DTD', + lv2_source_root / 'schemas.lv2' / 'doap.ttl', + ] - test( - 'codespell', - codespell, - args: [ - '-d', - '-q', '3', - '-S', ','.join(ignore), - lv2_source_root / 'doc', - lv2_source_root / 'lv2', - lv2_source_root / 'lv2specgen', - lv2_source_root / 'plugins', - lv2_source_root / 'schemas.lv2', - ], - suite: 'data', - ) -endif + test( + 'codespell', + codespell, + args: [ + '-d', + ['-q', '3'], + ['-S', ','.join(ignore)], + lv2_source_root / 'doc', + lv2_source_root / 'lv2', + lv2_source_root / 'lv2specgen', + lv2_source_root / 'plugins', + lv2_source_root / 'schemas.lv2', + ], + suite: 'data', + ) + endif -# Check that specification data is strictly formatted -serdi = find_program('serdi', required: get_option('tests')) -native_build = not meson.is_cross_build() and host_machine.system() != 'windows' -if serdi.found() and native_build - lv2_check_syntax = files(lv2_source_root / 'scripts' / 'lv2_check_syntax.py') + # Check that specification data is strictly formatted + serdi = find_program( + 'serdi', + required: get_option('tests'), + version: '>= 0.32.0', + ) + native_build = ( + not meson.is_cross_build() + and host_machine.system() != 'windows' + ) + if serdi.found() and native_build + lv2_check_syntax = files( + lv2_source_root / 'scripts' / 'lv2_check_syntax.py', + ) - test('syntax', - lv2_check_syntax, - args: ['--serdi', serdi.full_path()] + spec_files + schema_data, - suite: 'data') -endif + test( + 'syntax', + lv2_check_syntax, + args: ['--serdi', serdi.full_path()] + spec_files + schema_data, + suite: 'data', + ) + endif -# Check that specification data validates -sord_validate = find_program('sord_validate', required: get_option('tests')) -if sord_validate.found() - test('valid', - sord_validate, - args: spec_files + schema_data, - suite: 'data') + # Check that specification data validates + sord_validate = find_program('sord_validate', required: get_option('tests')) + if sord_validate.found() + test('valid', sord_validate, args: spec_files + schema_data, suite: 'data') + endif endif ######## @@ -57,36 +67,38 @@ endif ######## # Check that all the headers compile cleanly in C -test('c', - executable( - 'test_build_c', - files('test_build.c'), - c_args: c_suppressions, - dependencies: lv2_dep, - ), - suite: 'build') +test( + 'c', + executable( + 'test_build_c', + files('test_build.c'), + c_args: c_suppressions, + dependencies: [lv2_dep], + implicit_include_directories: false, + ), + suite: 'build', +) # Check that all the headers compile cleanly in C++ if is_variable('cpp') - test('cpp', - executable( - 'test_build_cpp', - files('test_build.cpp'), - cpp_args: cpp_suppressions, - dependencies: lv2_dep, - ), - suite: 'build') + test( + 'cpp', + executable( + 'test_build_cpp', + files('cpp/test_build.cpp'), + cpp_args: cpp_suppressions, + dependencies: [lv2_dep], + implicit_include_directories: false, + ), + suite: 'build', + ) endif ########## # Python # ########## -if get_option('strict') - flake8 = find_program('flake8', required: get_option('tests')) - pylint = find_program('pylint', required: get_option('tests')) - black = find_program('black', required: get_option('tests')) - +if get_option('lint') # Scripts that don't pass with pylint lax_python_scripts = files( '../lv2specgen/lv2docgen.py', @@ -98,20 +110,46 @@ if get_option('strict') all_python_scripts = lax_python_scripts + strict_python_scripts - if is_variable('black') and black.found() + # Check script formatting + black = find_program('black', required: get_option('tests')) + if black.found() black_opts = ['-l', '79', '-q', '--check'] - test('black', black, args: black_opts + all_python_scripts, suite: 'scripts') + test( + 'black', + black, + args: black_opts + all_python_scripts, + suite: 'scripts', + ) endif - if is_variable('flake8') and flake8.found() + # Check scripts for errors with flake8 + flake8 = find_program('flake8', required: get_option('tests')) + if flake8.found() test('flake8', flake8, args: all_python_scripts, suite: 'scripts') endif - if is_variable('pylint') and pylint.found() - test('pylint', pylint, args: strict_python_scripts, suite: 'scripts') + # Check scripts for errors with pylint + pylint = find_program('pylint', required: get_option('tests')) + if pylint.found() + pymod = import('python') + lint_py = pymod.find_installation( + 'python3', + modules: ['pygments', 'rdflib'], + required: false, + ) + + if lint_py.found() + test('pylint', pylint, args: strict_python_scripts, suite: 'scripts') + endif endif endif +################### +# Header Warnings # +################### + +subdir('headers') + ############## # Unit Tests # ############## @@ -121,18 +159,22 @@ test_names = [ 'forge_overflow', ] +atom_test_suppressions = [] +if cc.get_id() == 'gcc' + atom_test_suppressions += ['-Wno-stringop-overflow'] +endif + # Build and run tests -if not get_option('tests').disabled() - foreach test_name : test_names - test( +foreach test_name : test_names + test( + test_name, + executable( test_name, - executable( - test_name, - files('test_@0@.c'.format(test_name)), - c_args: c_suppressions, - dependencies: lv2_dep, - ), - suite: 'unit', - ) - endforeach -endif + files('test_@0@.c'.format(test_name)), + c_args: c_suppressions + atom_test_suppressions, + dependencies: [lv2_dep], + implicit_include_directories: false, + ), + suite: 'unit', + ) +endforeach diff --git a/test/test_atom.c b/test/test_atom.c index 5771694..f88c4c7 100644 --- a/test/test_atom.c +++ b/test/test_atom.c @@ -1,25 +1,12 @@ -/* - Copyright 2012-2015 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2012-2015 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC #include "atom_test_utils.c" -#include "lv2/atom/atom.h" -#include "lv2/atom/forge.h" -#include "lv2/atom/util.h" -#include "lv2/urid/urid.h" +#include <lv2/atom/atom.h> +#include <lv2/atom/forge.h> +#include <lv2/atom/util.h> +#include <lv2/urid/urid.h> #include <stdbool.h> #include <stdint.h> @@ -114,8 +101,8 @@ main(void) lv2_atom_forge_key(&forge, eg_path); LV2_Atom_String* path = (LV2_Atom_String*)lv2_atom_forge_deref( &forge, lv2_atom_forge_uri(&forge, pstr, pstr_len)); - char* pbody = (char*)LV2_ATOM_BODY(path); - if (strcmp(pbody, pstr)) { + char* pbody = (char*)&path[1]; + if (!!strcmp(pbody, pstr)) { return test_fail("%s != \"%s\"\n", pbody, pstr); } @@ -125,8 +112,8 @@ main(void) lv2_atom_forge_key(&forge, eg_uri); LV2_Atom_String* uri = (LV2_Atom_String*)lv2_atom_forge_deref( &forge, lv2_atom_forge_uri(&forge, ustr, ustr_len)); - char* ubody = (char*)LV2_ATOM_BODY(uri); - if (strcmp(ubody, ustr)) { + char* ubody = (char*)&uri[1]; + if (!!strcmp(ubody, ustr)) { return test_fail("%s != \"%s\"\n", ubody, ustr); } @@ -143,8 +130,8 @@ main(void) lv2_atom_forge_key(&forge, eg_string); LV2_Atom_String* string = (LV2_Atom_String*)lv2_atom_forge_deref( &forge, lv2_atom_forge_string(&forge, "hello", strlen("hello"))); - char* sbody = (char*)LV2_ATOM_BODY(string); - if (strcmp(sbody, "hello")) { + char* sbody = (char*)&string[1]; + if (!!strcmp(sbody, "hello")) { return test_fail("%s != \"hello\"\n", sbody); } @@ -157,8 +144,8 @@ main(void) strlen("bonjour"), 0, urid_map(NULL, "http://lexvo.org/id/term/fr"))); - char* lbody = (char*)LV2_ATOM_CONTENTS(LV2_Atom_Literal, literal); - if (strcmp(lbody, "bonjour")) { + char* lbody = (char*)&literal[1]; + if (!!strcmp(lbody, "bonjour")) { return test_fail("%s != \"bonjour\"\n", lbody); } @@ -199,8 +186,8 @@ main(void) LV2_Atom_Vector* vector = (LV2_Atom_Vector*)lv2_atom_forge_deref( &forge, lv2_atom_forge_vector(&forge, sizeof(int32_t), forge.Int, 4, elems)); - void* vec_body = LV2_ATOM_CONTENTS(LV2_Atom_Vector, vector); - if (memcmp(elems, vec_body, sizeof(elems))) { + const void* vec_body = LV2_ATOM_CONTENTS_CONST(LV2_Atom_Vector, vector); + if (!!memcmp(elems, vec_body, sizeof(elems))) { return test_fail("Corrupt vector\n"); } diff --git a/test/test_build.c b/test/test_build.c index 146ad71..83a69df 100644 --- a/test/test_build.c +++ b/test/test_build.c @@ -1,49 +1,36 @@ -/* - Copyright 2022 David Robillard <d@drobilla.net> +// Copyright 2022 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#include "lv2/atom/atom.h" // IWYU pragma: keep -#include "lv2/atom/forge.h" // IWYU pragma: keep -#include "lv2/atom/util.h" // IWYU pragma: keep -#include "lv2/buf-size/buf-size.h" // IWYU pragma: keep -#include "lv2/core/attributes.h" // IWYU pragma: keep -#include "lv2/core/lv2.h" // IWYU pragma: keep -#include "lv2/core/lv2_util.h" // IWYU pragma: keep -#include "lv2/data-access/data-access.h" // IWYU pragma: keep -#include "lv2/dynmanifest/dynmanifest.h" // IWYU pragma: keep -#include "lv2/event/event-helpers.h" // IWYU pragma: keep -#include "lv2/event/event.h" // IWYU pragma: keep -#include "lv2/instance-access/instance-access.h" // IWYU pragma: keep -#include "lv2/log/log.h" // IWYU pragma: keep -#include "lv2/log/logger.h" // IWYU pragma: keep -#include "lv2/midi/midi.h" // IWYU pragma: keep -#include "lv2/morph/morph.h" // IWYU pragma: keep -#include "lv2/options/options.h" // IWYU pragma: keep -#include "lv2/parameters/parameters.h" // IWYU pragma: keep -#include "lv2/patch/patch.h" // IWYU pragma: keep -#include "lv2/port-groups/port-groups.h" // IWYU pragma: keep -#include "lv2/port-props/port-props.h" // IWYU pragma: keep -#include "lv2/presets/presets.h" // IWYU pragma: keep -#include "lv2/resize-port/resize-port.h" // IWYU pragma: keep -#include "lv2/state/state.h" // IWYU pragma: keep -#include "lv2/time/time.h" // IWYU pragma: keep -#include "lv2/ui/ui.h" // IWYU pragma: keep -#include "lv2/units/units.h" // IWYU pragma: keep -#include "lv2/uri-map/uri-map.h" // IWYU pragma: keep -#include "lv2/urid/urid.h" // IWYU pragma: keep -#include "lv2/worker/worker.h" // IWYU pragma: keep +#include <lv2/atom/atom.h> // IWYU pragma: keep +#include <lv2/atom/forge.h> // IWYU pragma: keep +#include <lv2/atom/util.h> // IWYU pragma: keep +#include <lv2/buf-size/buf-size.h> // IWYU pragma: keep +#include <lv2/core/attributes.h> // IWYU pragma: keep +#include <lv2/core/lv2.h> // IWYU pragma: keep +#include <lv2/core/lv2_util.h> // IWYU pragma: keep +#include <lv2/data-access/data-access.h> // IWYU pragma: keep +#include <lv2/dynmanifest/dynmanifest.h> // IWYU pragma: keep +#include <lv2/event/event-helpers.h> // IWYU pragma: keep +#include <lv2/event/event.h> // IWYU pragma: keep +#include <lv2/instance-access/instance-access.h> // IWYU pragma: keep +#include <lv2/log/log.h> // IWYU pragma: keep +#include <lv2/log/logger.h> // IWYU pragma: keep +#include <lv2/midi/midi.h> // IWYU pragma: keep +#include <lv2/morph/morph.h> // IWYU pragma: keep +#include <lv2/options/options.h> // IWYU pragma: keep +#include <lv2/parameters/parameters.h> // IWYU pragma: keep +#include <lv2/patch/patch.h> // IWYU pragma: keep +#include <lv2/port-groups/port-groups.h> // IWYU pragma: keep +#include <lv2/port-props/port-props.h> // IWYU pragma: keep +#include <lv2/presets/presets.h> // IWYU pragma: keep +#include <lv2/resize-port/resize-port.h> // IWYU pragma: keep +#include <lv2/state/state.h> // IWYU pragma: keep +#include <lv2/time/time.h> // IWYU pragma: keep +#include <lv2/ui/ui.h> // IWYU pragma: keep +#include <lv2/units/units.h> // IWYU pragma: keep +#include <lv2/uri-map/uri-map.h> // IWYU pragma: keep +#include <lv2/urid/urid.h> // IWYU pragma: keep +#include <lv2/worker/worker.h> // IWYU pragma: keep int main(void) diff --git a/test/test_build.cpp b/test/test_build.cpp deleted file mode 100644 index dc269a6..0000000 --- a/test/test_build.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/* - Copyright 2022 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#if defined(__clang__) -_Pragma("clang diagnostic push") -_Pragma("clang diagnostic ignored \"-Wold-style-cast\"") -_Pragma("clang diagnostic ignored \"-Wzero-as-null-pointer-constant\"") -#elif defined(__GNUC__) -_Pragma("GCC diagnostic push") -_Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") -#endif - -#include "lv2/atom/atom.h" // IWYU pragma: keep -#include "lv2/atom/forge.h" // IWYU pragma: keep -#include "lv2/atom/util.h" // IWYU pragma: keep -#include "lv2/buf-size/buf-size.h" // IWYU pragma: keep -#include "lv2/core/attributes.h" // IWYU pragma: keep -#include "lv2/core/lv2.h" // IWYU pragma: keep -#include "lv2/core/lv2_util.h" // IWYU pragma: keep -#include "lv2/data-access/data-access.h" // IWYU pragma: keep -#include "lv2/dynmanifest/dynmanifest.h" // IWYU pragma: keep -#include "lv2/event/event-helpers.h" // IWYU pragma: keep -#include "lv2/event/event.h" // IWYU pragma: keep -#include "lv2/instance-access/instance-access.h" // IWYU pragma: keep -#include "lv2/log/log.h" // IWYU pragma: keep -#include "lv2/log/logger.h" // IWYU pragma: keep -#include "lv2/midi/midi.h" // IWYU pragma: keep -#include "lv2/morph/morph.h" // IWYU pragma: keep -#include "lv2/options/options.h" // IWYU pragma: keep -#include "lv2/parameters/parameters.h" // IWYU pragma: keep -#include "lv2/patch/patch.h" // IWYU pragma: keep -#include "lv2/port-groups/port-groups.h" // IWYU pragma: keep -#include "lv2/port-props/port-props.h" // IWYU pragma: keep -#include "lv2/presets/presets.h" // IWYU pragma: keep -#include "lv2/resize-port/resize-port.h" // IWYU pragma: keep -#include "lv2/state/state.h" // IWYU pragma: keep -#include "lv2/time/time.h" // IWYU pragma: keep -#include "lv2/ui/ui.h" // IWYU pragma: keep -#include "lv2/units/units.h" // IWYU pragma: keep -#include "lv2/uri-map/uri-map.h" // IWYU pragma: keep -#include "lv2/urid/urid.h" // IWYU pragma: keep -#include "lv2/worker/worker.h" // IWYU pragma: keep - -int -main() -{ - return 0; -} - -#if defined(__clang__) -_Pragma("clang diagnostic pop") -#elif defined(__GNUC__) -_Pragma("GCC diagnostic pop") -#endif diff --git a/test/test_forge_overflow.c b/test/test_forge_overflow.c index e00b40d..7e97ae4 100644 --- a/test/test_forge_overflow.c +++ b/test/test_forge_overflow.c @@ -1,24 +1,11 @@ -/* - Copyright 2019 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ +// Copyright 2019 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC #include "atom_test_utils.c" -#include "lv2/atom/atom.h" -#include "lv2/atom/forge.h" -#include "lv2/urid/urid.h" +#include <lv2/atom/atom.h> +#include <lv2/atom/forge.h> +#include <lv2/urid/urid.h> #include <assert.h> #include <stdint.h> @@ -103,7 +90,7 @@ test_literal_overflow(void) static int test_sequence_overflow(void) { - static const size_t size = sizeof(LV2_Atom_Sequence) + 6 * sizeof(LV2_Atom); + static const size_t size = sizeof(LV2_Atom_Sequence) + (6 * sizeof(LV2_Atom)); LV2_URID_Map map = {NULL, urid_map}; // Test over a range that fails in the sequence header and event components @@ -134,7 +121,7 @@ test_sequence_overflow(void) static int test_vector_head_overflow(void) { - static const size_t size = sizeof(LV2_Atom_Vector) + 3 * sizeof(LV2_Atom); + static const size_t size = sizeof(LV2_Atom_Vector) + (3 * sizeof(LV2_Atom)); LV2_URID_Map map = {NULL, urid_map}; // Test over a range that fails in the vector header and elements @@ -167,7 +154,7 @@ test_vector_head_overflow(void) static int test_vector_overflow(void) { - static const size_t size = sizeof(LV2_Atom_Vector) + 3 * sizeof(LV2_Atom); + static const size_t size = sizeof(LV2_Atom_Vector) + (3 * sizeof(LV2_Atom)); static const int32_t vec[] = {1, 2, 3}; LV2_URID_Map map = {NULL, urid_map}; @@ -194,7 +181,7 @@ test_vector_overflow(void) static int test_tuple_overflow(void) { - static const size_t size = sizeof(LV2_Atom_Tuple) + 3 * sizeof(LV2_Atom); + static const size_t size = sizeof(LV2_Atom_Tuple) + (3 * sizeof(LV2_Atom)); LV2_URID_Map map = {NULL, urid_map}; // Test over a range that fails in the tuple header and elements diff --git a/util/lv2_validate.in b/util/lv2_validate.in index 66fee6b..c26bb30 100755 --- a/util/lv2_validate.in +++ b/util/lv2_validate.in @@ -1,5 +1,8 @@ #!/bin/sh +# Copyright 2017-2020 David Robillard <d@drobilla.net> +# SPDX-License-Identifier: ISC + LV2DIR="@LV2DIR@" if [ "$#" -eq "0" ]; then @@ -88,7 +91,6 @@ sord_validate \ "$LV2DIR/schemas.lv2/dcterms.ttl" \ "$LV2DIR/schemas.lv2/doap.ttl" \ "$LV2DIR/schemas.lv2/rdfs.ttl" \ - "$LV2DIR/schemas.lv2/dcs.ttl" \ "$LV2DIR/schemas.lv2/foaf.ttl" \ "$LV2DIR/schemas.lv2/owl.ttl" \ "$LV2DIR/uri-map.lv2/manifest.ttl" \ diff --git a/util/meson.build b/util/meson.build index ed43f1e..58cf5e4 100644 --- a/util/meson.build +++ b/util/meson.build @@ -1,5 +1,5 @@ # Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC +# SPDX-License-Identifier: 0BSD OR ISC config = configuration_data({'LV2DIR': lv2dir}) |