Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package sord for openSUSE:Factory checked in at 2025-12-11 18:34:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/sord (Old) and /work/SRC/openSUSE:Factory/.sord.new.1939 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sord" Thu Dec 11 18:34:43 2025 rev:22 rq:1321930 version:0.16.20 Changes: -------- --- /work/SRC/openSUSE:Factory/sord/sord.changes 2025-03-11 20:42:20.914754644 +0100 +++ /work/SRC/openSUSE:Factory/.sord.new.1939/sord.changes 2025-12-11 18:35:04.241668020 +0100 @@ -1,0 +2,9 @@ +Wed Dec 10 08:00:56 UTC 2025 - Konstantin Voinov <[email protected]> + +- update to 0.16.20 + * Add header warnings test + * Add missing const qualifiers to API + * Avoid over-use of yielding meson options + * Update man pages + +------------------------------------------------------------------- Old: ---- sord-0.16.18.tar.xz sord-0.16.18.tar.xz.sig New: ---- sord-0.16.20.tar.xz sord-0.16.20.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ sord.spec ++++++ --- /var/tmp/diff_new_pack.F1tFTi/_old 2025-12-11 18:35:05.445718503 +0100 +++ /var/tmp/diff_new_pack.F1tFTi/_new 2025-12-11 18:35:05.449718671 +0100 @@ -1,7 +1,7 @@ # # spec file for package sord # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2025 SUSE LLC and contributors # Copyright (c) 2025 Andreas Stieger <[email protected]> # # All modifications and additions to the file contributed by third parties @@ -19,7 +19,7 @@ %define sover 0 Name: sord -Version: 0.16.18 +Version: 0.16.20 Release: 0 Summary: Utilities to work with RDF data License: ISC ++++++ sord-0.16.18.tar.xz -> sord-0.16.20.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/.clang-tidy new/sord-0.16.20/.clang-tidy --- old/sord-0.16.18/.clang-tidy 2025-01-19 14:46:45.000000000 +0100 +++ new/sord-0.16.20/.clang-tidy 2025-11-12 20:07:37.000000000 +0100 @@ -1,74 +1,16 @@ -# Copyright 2020-2024 David Robillard <[email protected]> +# Copyright 2020-2025 David Robillard <[email protected]> # SPDX-License-Identifier: 0BSD OR ISC Checks: > *, - -*-else-after-return, - -*-macro-to-enum, - -*-magic-numbers, - -*-non-private-member-variables-in-classes, - -*-static-assert, - -*-uppercase-literal-suffix, - -*-use-auto, - -*-use-equals-default, - -*-use-equals-delete, - -*-vararg, - -abseil-string-find-str-contains, -altera-*, - -android-cloexec-fopen, - -bugprone-assignment-in-if-condition, - -bugprone-branch-clone, - -bugprone-copy-constructor-init, - -bugprone-easily-swappable-parameters, - -bugprone-multi-level-implicit-pointer-conversion, - -bugprone-narrowing-conversions, - -bugprone-reserved-identifier, - -bugprone-suspicious-include, - -bugprone-switch-missing-default-case, - -cert-dcl37-c, - -cert-dcl51-cpp, - -cert-err33-c, - -cert-err34-c, - -clang-analyzer-core.uninitialized.ArraySubscript, - -clang-analyzer-optin.core.EnumCastOutOfRange, - -clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling, - -clang-analyzer-valist.Uninitialized, - -cppcoreguidelines-avoid-non-const-global-variables, - -cppcoreguidelines-macro-usage, - -cppcoreguidelines-narrowing-conversions, - -cppcoreguidelines-owning-memory, - -cppcoreguidelines-pro-bounds-array-to-pointer-decay, - -cppcoreguidelines-pro-type-reinterpret-cast, - -cppcoreguidelines-special-member-functions, - -fuchsia-default-arguments*, - -fuchsia-multiple-inheritance, - -fuchsia-overloaded-operator, - -google-explicit-constructor, - -google-readability-todo, - -google-runtime-references, - -hicpp-explicit-conversions, - -hicpp-multiway-paths-covered, - -hicpp-no-array-decay, - -hicpp-noexcept-move, - -hicpp-signed-bitwise, - -hicpp-special-member-functions, -llvm-header-guard, -llvmlibc-*, - -misc-include-cleaner, - -misc-no-recursion, - -misc-unused-parameters, - -modernize-return-braced-init-list, - -modernize-use-default-member-init, - -modernize-use-trailing-return-type, - -performance-faster-string-find, - -performance-noexcept-move-constructor, - -performance-unnecessary-value-param, - -readability-avoid-nested-conditional-operator, - -readability-const-return-type, - -readability-function-cognitive-complexity, - -readability-identifier-length, - -readability-implicit-bool-conversion, - -readability-redundant-member-init, +CheckOptions: + - key: hicpp-uppercase-literal-suffix.NewSuffixes + value: 'L;U;UL;ULL' + - key: readability-uppercase-literal-suffix.NewSuffixes + value: 'L;U;UL;ULL' WarningsAsErrors: '*' HeaderFilterRegex: '.*' FormatStyle: file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/.git-blame-ignore-revs new/sord-0.16.20/.git-blame-ignore-revs --- old/sord-0.16.18/.git-blame-ignore-revs 1970-01-01 01:00:00.000000000 +0100 +++ new/sord-0.16.20/.git-blame-ignore-revs 2025-11-12 20:07:37.000000000 +0100 @@ -0,0 +1,5 @@ +# Copyright 2025 David Robillard <[email protected]> +# SPDX-License-Identifier: 0BSD OR ISC + +# Format all code with clang-format +87aca493cd6ad0ffc49a896c9f8342d52ad6aa96 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/.gitignore new/sord-0.16.20/.gitignore --- old/sord-0.16.18/.gitignore 2025-01-19 14:46:45.000000000 +0100 +++ new/sord-0.16.20/.gitignore 2025-11-12 20:07:37.000000000 +0100 @@ -1,6 +1,10 @@ -# Copyright 2019-2021 David Robillard <[email protected]> +# Copyright 2019-2025 David Robillard <[email protected]> # SPDX-License-Identifier: 0BSD OR ISC -build/** -__pycache__ -.meson-subproject-wrap-hash.txt +/.meson-subproject-wrap-hash.txt +/build/ +/subprojects/packagecache/ +/subprojects/sphinxygen-1.0.10/ +/subprojects/sphinxygen/ + +__pycache__/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/.reuse/dep5 new/sord-0.16.20/.reuse/dep5 --- old/sord-0.16.18/.reuse/dep5 2025-01-19 14:46:45.000000000 +0100 +++ new/sord-0.16.20/.reuse/dep5 2025-11-12 20:07:37.000000000 +0100 @@ -9,7 +9,7 @@ License: BSD-3-Clause Files: AUTHORS NEWS -Copyright: 2011-2022 David Robillard <[email protected]> +Copyright: 2011-2025 David Robillard <[email protected]> Comment: Contributed to the Commons as a representation of simple facts License: 0BSD OR ISC diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/COPYING new/sord-0.16.20/COPYING --- old/sord-0.16.18/COPYING 2025-01-19 14:46:45.000000000 +0100 +++ new/sord-0.16.20/COPYING 2025-11-12 20:07:37.000000000 +0100 @@ -1,4 +1,4 @@ -Copyright 2011-2022 David Robillard <[email protected]> +Copyright 2011-2025 David Robillard <[email protected]> Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/LICENSES/ISC.txt new/sord-0.16.20/LICENSES/ISC.txt --- old/sord-0.16.18/LICENSES/ISC.txt 2025-12-11 18:35:05.657727392 +0100 +++ new/sord-0.16.20/LICENSES/ISC.txt 2025-11-12 20:07:37.000000000 +0100 @@ -1 +1,13 @@ -symbolic link to ../COPYING +Copyright 2011-2025 David Robillard <[email protected]> + +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. + +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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/NEWS new/sord-0.16.20/NEWS --- old/sord-0.16.18/NEWS 2025-01-19 14:46:45.000000000 +0100 +++ new/sord-0.16.20/NEWS 2025-11-12 20:07:37.000000000 +0100 @@ -1,3 +1,12 @@ +sord (0.16.20) stable; urgency=medium + + * Add header warnings test + * Add missing const qualifiers to API + * Avoid over-use of yielding meson options + * Update man pages + + -- David Robillard <[email protected]> Tue, 21 Oct 2025 17:13:17 +0000 + sord (0.16.18) stable; urgency=medium * Add option to install tool man pages @@ -82,7 +91,7 @@ * Return error from sord_inserter_write_statement() if a node can not be written (e.g. undefined prefix) * Safely return NULL from sord_iter_get() for end iterators - * sord_validate: Do proper numeric comparison for propery bounds checking + * sord_validate: Do proper numeric comparison for property bounds checking * sord_validate: Tolerate xsd:decimal literals for double and float properties if literals match pattern diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/doc/sord_validate.1 new/sord-0.16.20/doc/sord_validate.1 --- old/sord-0.16.18/doc/sord_validate.1 2025-01-19 14:46:45.000000000 +0100 +++ new/sord-0.16.20/doc/sord_validate.1 2025-11-12 20:07:37.000000000 +0100 @@ -1,8 +1,8 @@ -.\" # Copyright 2012-2022 David Robillard <[email protected]> +.\" # Copyright 2012-2025 David Robillard <[email protected]> .\" # SPDX-License-Identifier: ISC -.Dd Nov 29, 2022 +.Dd January 20, 2025 .Dt SORD_VALIDATE 1 -.Os Sord 0.30.17 +.Os .Sh NAME .Nm sord_validate .Nd validate RDF data diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/doc/sordi.1 new/sord-0.16.20/doc/sordi.1 --- old/sord-0.16.18/doc/sordi.1 2025-01-19 14:46:45.000000000 +0100 +++ new/sord-0.16.20/doc/sordi.1 2025-11-12 20:07:37.000000000 +0100 @@ -1,8 +1,8 @@ -.\" # Copyright 2011-2022 David Robillard <[email protected]> +.\" # Copyright 2011-2025 David Robillard <[email protected]> .\" # SPDX-License-Identifier: ISC -.Dd Nov 29, 2022 +.Dd January 20, 2025 .Dt SORDI 1 -.Os Sord 0.30.17 +.Os .Sh NAME .Nm sordi .Nd load and rewrite RDF data diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/include/sord/sord.h new/sord-0.16.20/include/sord/sord.h --- old/sord-0.16.18/include/sord/sord.h 2025-01-19 14:46:45.000000000 +0100 +++ new/sord-0.16.20/include/sord/sord.h 2025-11-12 20:07:37.000000000 +0100 @@ -345,18 +345,18 @@ @return an iterator to the first match, or NULL if no matches found. */ SORD_API SordIter* -sord_find(SordModel* model, const SordQuad pat); +sord_find(const SordModel* model, const SordQuad pat); /** Search for statements by nodes. @return an iterator to the first match, or NULL if no matches found. */ SORD_API SordIter* -sord_search(SordModel* model, - const SordNode* s, - const SordNode* p, - const SordNode* o, - const SordNode* g); +sord_search(const SordModel* model, + const SordNode* s, + const SordNode* p, + const SordNode* o, + const SordNode* g); /** Search for a single node that matches a pattern. Exactly one of `s`, `p`, `o` must be NULL. @@ -365,31 +365,31 @@ @return the first matching node, or NULL if no matches are found. */ SORD_API SordNode* -sord_get(SordModel* model, - const SordNode* s, - const SordNode* p, - const SordNode* o, - const SordNode* g); +sord_get(const SordModel* model, + const SordNode* s, + const SordNode* p, + const SordNode* o, + const SordNode* g); /** Return true iff a statement exists. */ SORD_API bool -sord_ask(SordModel* model, - const SordNode* s, - const SordNode* p, - const SordNode* o, - const SordNode* g); +sord_ask(const SordModel* model, + const SordNode* s, + const SordNode* p, + const SordNode* o, + const SordNode* g); /** Return the number of matching statements. */ SORD_API uint64_t -sord_count(SordModel* model, - const SordNode* s, - const SordNode* p, - const SordNode* o, - const SordNode* g); +sord_count(const SordModel* model, + const SordNode* s, + const SordNode* p, + const SordNode* o, + const SordNode* g); /** Check if `model` contains a triple pattern. @@ -397,7 +397,7 @@ @return true if `model` contains a match for `pat`, otherwise false. */ SORD_API bool -sord_contains(SordModel* model, const SordQuad pat); +sord_contains(const SordModel* model, const SordQuad pat); /** Add a quad to a model. @@ -551,16 +551,16 @@ Return a reader that will read into `model`. */ SORD_API SerdReader* -sord_new_reader(SordModel* model, - SerdEnv* env, - SerdSyntax syntax, - SordNode* graph); +sord_new_reader(SordModel* model, + SerdEnv* env, + SerdSyntax syntax, + const SordNode* graph); /** Write a model to a writer. */ SORD_API bool -sord_write(SordModel* model, SerdWriter* writer, SordNode* graph); +sord_write(SordModel* model, SerdWriter* writer, const SordNode* graph); /** Write a range to a writer. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/meson.build new/sord-0.16.20/meson.build --- old/sord-0.16.18/meson.build 2025-01-19 14:46:45.000000000 +0100 +++ new/sord-0.16.20/meson.build 2025-11-12 20:07:37.000000000 +0100 @@ -1,4 +1,4 @@ -# Copyright 2021-2024 David Robillard <[email protected]> +# Copyright 2021-2025 David Robillard <[email protected]> # SPDX-License-Identifier: 0BSD OR ISC project( @@ -8,10 +8,12 @@ 'b_ndebug=if-release', 'buildtype=release', 'c_std=c99', + 'c_winlibs=', + 'cpp_winlibs=', ], license: 'ISC', meson_version: '>= 0.56.0', - version: '0.16.18', + version: '0.16.20', ) sord_src_root = meson.current_source_dir() @@ -136,8 +138,8 @@ m_dep = cc.find_library('m', required: false) -zix_dep = dependency('zix-0', version: '>= 0.4.0') -serd_dep = dependency('serd-0', version: '>= 0.30.10') +zix_dep = dependency('zix-0', include_type: 'system', version: '>= 0.4.0') +serd_dep = dependency('serd-0', include_type: 'system', version: '>= 0.30.10') ########################## # Platform Configuration # @@ -182,6 +184,7 @@ darwin_versions: [major_version + '.0.0', meson.project_version()], dependencies: [m_dep, zix_dep, serd_dep], gnu_symbol_visibility: 'hidden', + implicit_include_directories: false, include_directories: include_directories('include'), install: true, soversion: soversion, @@ -196,7 +199,7 @@ link_with: libsord, ) -# Generage pkg-config file for external dependants +# Generate pkg-config file for external dependants pkg.generate( libsord, description: 'Lightweight C library for storing RDF in memory', @@ -225,8 +228,9 @@ 'sordi', files('src/sordi.c'), c_args: c_suppressions, - install: true, dependencies: sord_dep, + implicit_include_directories: false, + install: true, ) meson.override_find_program('sordi', sordi) @@ -238,8 +242,9 @@ 'sord_validate', files('src/sord_validate.c'), c_args: c_suppressions, - install: true, dependencies: [sord_dep, pcre2_dep], + implicit_include_directories: false, + install: true, ) meson.override_find_program('sord_validate', sord_validate) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/meson_options.txt new/sord-0.16.20/meson_options.txt --- old/sord-0.16.18/meson_options.txt 2025-01-19 14:46:45.000000000 +0100 +++ new/sord-0.16.20/meson_options.txt 2025-11-12 20:07:37.000000000 +0100 @@ -1,20 +1,23 @@ -# Copyright 2021-2022 David Robillard <[email protected]> +# Copyright 2021-2025 David Robillard <[email protected]> # SPDX-License-Identifier: 0BSD OR ISC -option('docs', type: 'feature', yield: true, +option('bindings_cpp', type: 'feature', + description: 'Build C++ bindings') + +option('docs', type: 'feature', description: 'Build documentation') -option('lint', type: 'boolean', value: false, yield: true, +option('lint', type: 'boolean', value: false, description: 'Run code quality checks') -option('man', type: 'feature', value: 'enabled', yield: true, +option('man', type: 'feature', value: 'enabled', description: 'Install man pages') -option('tests', type: 'feature', yield: true, +option('tests', type: 'feature', description: 'Build tests') option('title', type: 'string', value: 'Sord', description: 'Project title') -option('tools', type: 'feature', yield: true, +option('tools', type: 'feature', description: 'Build command line utilities') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/src/.clang-tidy new/sord-0.16.20/src/.clang-tidy --- old/sord-0.16.18/src/.clang-tidy 1970-01-01 01:00:00.000000000 +0100 +++ new/sord-0.16.20/src/.clang-tidy 2025-11-12 20:07:37.000000000 +0100 @@ -0,0 +1,30 @@ +# Copyright 2020-2025 David Robillard <[email protected]> +# SPDX-License-Identifier: 0BSD OR ISC + +Checks: > + -*-else-after-return, + -*-macro-to-enum, + -*-magic-numbers, + -android-cloexec-fopen, + -bugprone-assignment-in-if-condition, + -bugprone-easily-swappable-parameters, + -bugprone-multi-level-implicit-pointer-conversion, + -bugprone-switch-missing-default-case, + -cert-dcl37-c, + -cert-dcl51-cpp, + -cert-err33-c, + -cert-err34-c, + -clang-analyzer-optin.core.EnumCastOutOfRange, + -clang-analyzer-unix.Malloc, + -cppcoreguidelines-avoid-non-const-global-variables, + -google-readability-todo, + -hicpp-multiway-paths-covered, + -hicpp-signed-bitwise, + -misc-include-cleaner, + -misc-no-recursion, + -readability-avoid-nested-conditional-operator, + -readability-identifier-length, +CheckOptions: + - key: readability-function-cognitive-complexity.Threshold + value: '45' +InheritParentConfig: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/src/sord.c new/sord-0.16.20/src/sord.c --- old/sord-0.16.18/src/sord.c 2025-01-19 14:46:45.000000000 +0100 +++ new/sord-0.16.20/src/sord.c 2025-11-12 20:07:37.000000000 +0100 @@ -46,9 +46,8 @@ # define SORD_WRITE_LOG(...) #endif -#define NUM_ORDERS 12 -#define STATEMENT_LEN 3 -#define TUP_LEN (STATEMENT_LEN + 1) +#define NUM_ORDERS 12U +#define TUP_LEN 4U #define DEFAULT_ORDER SPO #define DEFAULT_GRAPH_ORDER GSPO @@ -58,7 +57,7 @@ TUP_FMT_ELEM((t)[0]), TUP_FMT_ELEM((t)[1]), TUP_FMT_ELEM((t)[2]), \ TUP_FMT_ELEM((t)[3]) -#define TUP_G 3 +#define TUP_G 3U /** Triple ordering */ typedef enum { @@ -96,7 +95,7 @@ Quads of indices for each order, from most to least significant (array indexed by SordOrder) */ -static const int orderings[NUM_ORDERS][TUP_LEN] = { +static const uint8_t orderings[NUM_ORDERS][TUP_LEN] = { {0, 1, 2, 3}, // SPO {0, 2, 1, 3}, // SOP {2, 1, 0, 3}, // OPS @@ -147,7 +146,7 @@ SordQuad pat; ///< Pattern (in ordering order) SordOrder order; ///< Store order (which index) SearchMode mode; ///< Iteration mode - int n_prefix; ///< Prefix for RANGE and FILTER_RANGE + uint8_t n_prefix; ///< Prefix for RANGE and FILTER_RANGE bool end; ///< True iff reached end bool skip_graphs; ///< Iteration should ignore graphs }; @@ -185,13 +184,13 @@ static bool sord_node_hash_equal(const SordNode* const a, const SordNode* const b) { - return (a == b) || - ((a->node.type == b->node.type) && - (a->node.type != SERD_LITERAL || - (a->meta.lit.datatype == b->meta.lit.datatype && - !strncmp( - a->meta.lit.lang, b->meta.lit.lang, sizeof(a->meta.lit.lang)))) && - (serd_node_equals(&a->node, &b->node))); + return ((a == b) || ((a->node.type == b->node.type) && + (a->node.type != SERD_LITERAL || + (a->meta.lit.datatype == b->meta.lit.datatype && + !strncmp(a->meta.lit.lang, + b->meta.lit.lang, + sizeof(a->meta.lit.lang)))) && + (serd_node_equals(&a->node, &b->node)))); } static SordNode* @@ -343,8 +342,10 @@ static inline bool sord_quad_match_inline(const SordQuad x, const SordQuad y) { - return sord_id_match(x[0], y[0]) && sord_id_match(x[1], y[1]) && - sord_id_match(x[2], y[2]) && sord_id_match(x[3], y[3]); + return (sord_id_match(x[0], y[0]) && // + sord_id_match(x[1], y[1]) && // + sord_id_match(x[2], y[2]) && // + sord_id_match(x[3], y[3])); } bool @@ -361,13 +362,13 @@ static int sord_quad_compare(const void* x_ptr, const void* y_ptr, const void* user_data) { - const int* const ordering = (const int*)user_data; + const uint8_t* const ordering = (const uint8_t*)user_data; const SordNode* const* const x = (const SordNode* const*)x_ptr; const SordNode* const* const y = (const SordNode* const*)y_ptr; - for (int i = 0; i < TUP_LEN; ++i) { - const int idx = ordering[i]; - const int cmp = sord_node_compare(x[idx], y[idx]); + for (uint8_t i = 0U; i < TUP_LEN; ++i) { + const uint8_t idx = ordering[i]; + const int cmp = sord_node_compare(x[idx], y[idx]); if (cmp) { return cmp; } @@ -435,8 +436,8 @@ return false; // Found match } - for (int i = 0; i < iter->n_prefix; ++i) { - const int idx = orderings[iter->order][i]; + for (uint8_t i = 0U; i < iter->n_prefix; ++i) { + const uint8_t idx = orderings[iter->order][i]; if (!sord_id_match(key[idx], iter->pat[idx])) { iter->end = true; // Reached end of valid range return true; @@ -453,7 +454,7 @@ const SordQuad pat, SordOrder order, SearchMode mode, - int n_prefix) + uint8_t n_prefix) { SordIter* iter = (SordIter*)malloc(sizeof(SordIter)); iter->sord = sord; @@ -463,7 +464,7 @@ iter->n_prefix = n_prefix; iter->end = false; iter->skip_graphs = order < GSPO; - for (int i = 0; i < TUP_LEN; ++i) { + for (uint8_t i = 0U; i < TUP_LEN; ++i) { iter->pat[i] = pat[i]; } @@ -500,14 +501,14 @@ const SordModel* sord_iter_get_model(SordIter* iter) { - return iter->sord; + return iter ? iter->sord : NULL; } void sord_iter_get(const SordIter* iter, SordQuad tup) { SordNode** key = (SordNode**)zix_btree_get(iter->cur); - for (int i = 0; i < TUP_LEN; ++i) { + for (uint8_t i = 0U; i < TUP_LEN; ++i) { tup[i] = key[i]; } } @@ -541,8 +542,8 @@ // At the end if the MSNs no longer match key = (const SordNode**)zix_btree_get(iter->cur); assert(key); - for (int i = 0; i < iter->n_prefix; ++i) { - const int idx = orderings[iter->order][i]; + for (uint8_t i = 0U; i < iter->n_prefix; ++i) { + const uint8_t idx = orderings[iter->order][i]; if (!sord_id_match(key[idx], iter->pat[idx])) { iter->end = true; SORD_ITER_LOG("%p reached non-match end\n", (void*)iter); @@ -580,7 +581,7 @@ bool sord_iter_next(SordIter* iter) { - if (iter->end) { + if (!iter || iter->end) { return true; } @@ -610,11 +611,14 @@ corresponding order with a G prepended (so G will be the MSN). */ static inline bool -sord_has_index(SordModel* model, SordOrder* order, int* n_prefix, bool graphs) +sord_has_index(const SordModel* model, + SordOrder* order, + uint8_t* n_prefix, + bool graphs) { if (graphs) { *order = (SordOrder)(*order + GSPO); - *n_prefix += 1; + ++*n_prefix; } return model->indices[*order]; @@ -628,15 +632,16 @@ (for `mode` == RANGE and `mode` == FILTER_RANGE) */ static inline SordOrder -sord_best_index(SordModel* sord, - const SordQuad pat, - SearchMode* mode, - int* n_prefix) +sord_best_index(const SordModel* sord, + const SordQuad pat, + SearchMode* mode, + uint8_t* n_prefix) { const bool graph_search = (pat[TUP_G] != 0); - const unsigned sig = (pat[0] ? 1 : 0) * 0x100U + (pat[1] ? 1 : 0) * 0x010U + - (pat[2] ? 1 : 0) * 0x001U; + const unsigned sig = (((pat[0] ? 1U : 0U) * 0x100U) + // + ((pat[1] ? 1U : 0U) * 0x010U) + // + ((pat[2] ? 1U : 0U) * 0x001U)); SordOrder good[2] = {(SordOrder)-1, (SordOrder)-1}; @@ -650,12 +655,12 @@ // Good orderings that don't require filtering *mode = RANGE; - *n_prefix = 0; + *n_prefix = 0U; switch (sig) { case 0x000: assert(graph_search); *mode = RANGE; - *n_prefix = 1; + *n_prefix = 1U; return DEFAULT_GRAPH_ORDER; case 0x111: *mode = SINGLE; @@ -697,7 +702,7 @@ if (graph_search) { *mode = FILTER_RANGE; - *n_prefix = 1; + *n_prefix = 1U; return DEFAULT_GRAPH_ORDER; } else { *mode = FILTER_ALL; @@ -708,27 +713,26 @@ SordModel* sord_new(SordWorld* world, unsigned indices, bool graphs) { + static const unsigned half = (NUM_ORDERS >> 1U); + SordModel* model = (SordModel*)malloc(sizeof(struct SordModelImpl)); model->world = world; model->n_quads = 0; model->n_iters = 0; - for (unsigned i = 0; i < (NUM_ORDERS / 2); ++i) { - const int* const ordering = orderings[i]; - const int* const g_ordering = orderings[i + (NUM_ORDERS / 2)]; - + for (unsigned i = 0; i < half; ++i) { if (indices & (1U << i)) { model->indices[i] = - zix_btree_new(NULL, sord_quad_compare, (void*)ordering); + zix_btree_new(NULL, sord_quad_compare, (void*)orderings[i]); if (graphs) { - model->indices[i + (NUM_ORDERS / 2)] = - zix_btree_new(NULL, sord_quad_compare, (void*)g_ordering); + model->indices[i + half] = + zix_btree_new(NULL, sord_quad_compare, (void*)orderings[i + half]); } else { - model->indices[i + (NUM_ORDERS / 2)] = NULL; + model->indices[i + half] = NULL; } } else { - model->indices[i] = NULL; - model->indices[i + (NUM_ORDERS / 2)] = NULL; + model->indices[i] = NULL; + model->indices[i + half] = NULL; } } @@ -808,7 +812,7 @@ SordIter* i = sord_begin(model); for (; !sord_iter_end(i); sord_iter_next(i)) { sord_iter_get(i, tup); - for (int t = 0; t < TUP_LEN; ++t) { + for (uint8_t t = 0U; t < TUP_LEN; ++t) { sord_drop_quad_ref(model, tup[t], (SordQuadIndex)t); } } @@ -839,7 +843,7 @@ size_t sord_num_quads(const SordModel* model) { - return model->n_quads; + return model ? model->n_quads : 0U; } size_t @@ -861,17 +865,17 @@ } SordIter* -sord_find(SordModel* model, const SordQuad pat) +sord_find(const SordModel* model, const SordQuad pat) { - if (!pat[0] && !pat[1] && !pat[2] && !pat[3]) { + if (!model || (!pat[0] && !pat[1] && !pat[2] && !pat[3])) { return sord_begin(model); } SearchMode mode = ALL; - int n_prefix = 0; + uint8_t n_prefix = 0U; const SordOrder index_order = sord_best_index(model, pat, &mode, &n_prefix); - SORD_FIND_LOG("Find " TUP_FMT " index=%s mode=%u n_prefix=%d\n", + SORD_FIND_LOG("Find " TUP_FMT " index=%s mode=%u n_prefix=%u\n", TUP_FMT_ARGS(pat), order_names[index_order], mode, @@ -881,9 +885,9 @@ mode = SINGLE; // No duplicate quads (Sord is a set) } - const int* const ordering = orderings[index_order]; - ZixBTree* const db = model->indices[index_order]; - ZixBTreeIter cur = zix_btree_end(db); + const uint8_t* const ordering = orderings[index_order]; + ZixBTree* const db = model->indices[index_order]; + ZixBTreeIter cur = zix_btree_end(db); if (mode == FILTER_ALL) { // No prefix shared with an index at all, linear search (worst case) @@ -892,7 +896,7 @@ /* Some prefix, but filtering still required. Build a search pattern with only the prefix to find the lower bound in log time. */ SordQuad prefix_pat = {NULL, NULL, NULL, NULL}; - for (int i = 0; i < n_prefix; ++i) { + for (uint8_t i = 0U; i < n_prefix; ++i) { prefix_pat[ordering[i]] = pat[ordering[i]]; } @@ -918,22 +922,22 @@ } SordIter* -sord_search(SordModel* model, - const SordNode* s, - const SordNode* p, - const SordNode* o, - const SordNode* g) +sord_search(const SordModel* model, + const SordNode* s, + const SordNode* p, + const SordNode* o, + const SordNode* g) { SordQuad pat = {s, p, o, g}; return sord_find(model, pat); } SordNode* -sord_get(SordModel* model, - const SordNode* s, - const SordNode* p, - const SordNode* o, - const SordNode* g) +sord_get(const SordModel* model, + const SordNode* s, + const SordNode* p, + const SordNode* o, + const SordNode* g) { if (!!s + !!p + !!o != 2) { return NULL; @@ -954,22 +958,22 @@ } bool -sord_ask(SordModel* model, - const SordNode* s, - const SordNode* p, - const SordNode* o, - const SordNode* g) +sord_ask(const SordModel* model, + const SordNode* s, + const SordNode* p, + const SordNode* o, + const SordNode* g) { SordQuad pat = {s, p, o, g}; return sord_contains(model, pat); } uint64_t -sord_count(SordModel* model, - const SordNode* s, - const SordNode* p, - const SordNode* o, - const SordNode* g) +sord_count(const SordModel* model, + const SordNode* s, + const SordNode* p, + const SordNode* o, + const SordNode* g) { SordIter* i = sord_search(model, s, p, o, g); uint64_t n = 0; @@ -981,7 +985,7 @@ } bool -sord_contains(SordModel* model, const SordQuad pat) +sord_contains(const SordModel* model, const SordQuad pat) { SordIter* iter = sord_find(model, pat); bool ret = (iter != NULL); @@ -1190,13 +1194,15 @@ return NULL; case SERD_LITERAL: datatype_node = sord_node_from_serd_node(world, env, datatype, NULL, NULL); - ret = sord_new_literal_counted(world, + + ret = sord_new_literal_counted(world, datatype_node, node->buf, node->n_bytes, node->n_chars, node->flags, lang ? (const char*)lang->buf : NULL); + sord_node_free(world, datatype_node); return ret; case SERD_URI: @@ -1302,7 +1308,7 @@ } } - for (int i = 0; i < TUP_LEN; ++i) { + for (uint8_t i = 0U; i < TUP_LEN; ++i) { sord_add_quad_ref(model, tup[i], (SordQuadIndex)i); } @@ -1331,7 +1337,7 @@ free(quad); - for (int i = 0; i < TUP_LEN; ++i) { + for (uint8_t i = 0U; i < TUP_LEN; ++i) { sord_drop_quad_ref(model, tup[i], (SordQuadIndex)i); } @@ -1368,7 +1374,7 @@ free(quad); - for (int i = 0; i < TUP_LEN; ++i) { + for (uint8_t i = 0U; i < TUP_LEN; ++i) { sord_drop_quad_ref(model, tup[i], (SordQuadIndex)i); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/src/sord_config.h new/sord-0.16.20/src/sord_config.h --- old/sord-0.16.18/src/sord_config.h 2025-01-19 14:46:45.000000000 +0100 +++ new/sord-0.16.20/src/sord_config.h 2025-11-12 20:07:37.000000000 +0100 @@ -16,7 +16,7 @@ #define SORD_CONFIG_H // Define version unconditionally so a warning will catch a mismatch -#define SORD_VERSION "0.16.18" +#define SORD_VERSION "0.16.20" #if !defined(SORD_NO_DEFAULT_CONFIG) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/src/sord_validate.c new/sord-0.16.20/src/sord_validate.c --- old/sord-0.16.18/src/sord_validate.c 2025-01-19 14:46:45.000000000 +0100 +++ new/sord-0.16.20/src/sord_validate.c 2025-11-12 20:07:37.000000000 +0100 @@ -1,9 +1,6 @@ // Copyright 2012-2021 David Robillard <[email protected]> // SPDX-License-Identifier: ISC -#define _BSD_SOURCE 1 // for realpath -#define _DEFAULT_SOURCE 1 // for realpath - #include "sord_config.h" #include <serd/serd.h> @@ -208,6 +205,8 @@ pcre2_code_free(re); return rc > 0; #else + (void)pattern; + (void)str; return true; #endif // USE_PCRE2 } @@ -395,13 +394,10 @@ return literal_is_valid(model, uris, quad, node, type); } } else if (sord_node_get_type(node) == SORD_URI) { - if (sord_node_equals(type, uris->foaf_Document)) { - return true; // Questionable... - } else if (is_descendant_of( - model, uris, type, uris->xsd_anyURI, uris->owl_onDatatype)) { - /* Type is any URI and this is a URI, so pass. Restrictions on - anyURI subtypes are not currently checked (very uncommon). */ - return true; // Type is anyURI, and this is a URI + if (sord_node_equals(type, uris->foaf_Document) || // Questionable... + is_descendant_of( + model, uris, type, uris->xsd_anyURI, uris->owl_onDatatype)) { + return true; // This is a URI, and type is Document or anyUri } else { SordIter* t = sord_search(model, node, uris->rdf_type, NULL, NULL); for (; !sord_iter_end(t); sord_iter_next(t)) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/src/sordmm_test.cpp new/sord-0.16.20/src/sordmm_test.cpp --- old/sord-0.16.18/src/sordmm_test.cpp 2025-01-19 14:46:45.000000000 +0100 +++ new/sord-0.16.20/src/sordmm_test.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,12 +0,0 @@ -// Copyright 2011 David Robillard <[email protected]> -// SPDX-License-Identifier: ISC - -#include <sord/sordmm.hpp> - -int -main() -{ - Sord::World world; - Sord::Model model(world, "http://example.org/"); - return 0; -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/src/syntax.c new/sord-0.16.20/src/syntax.c --- old/sord-0.16.18/src/syntax.c 2025-01-19 14:46:45.000000000 +0100 +++ new/sord-0.16.20/src/syntax.c 2025-11-12 20:07:37.000000000 +0100 @@ -80,10 +80,10 @@ } SORD_API SerdReader* -sord_new_reader(SordModel* model, - SerdEnv* env, - SerdSyntax syntax, - SordNode* graph) +sord_new_reader(SordModel* model, + SerdEnv* env, + SerdSyntax syntax, + const SordNode* graph) { SordInserter* inserter = sord_inserter_new(model, env); @@ -164,7 +164,7 @@ } bool -sord_write(SordModel* model, SerdWriter* writer, SordNode* graph) +sord_write(SordModel* model, SerdWriter* writer, const SordNode* graph) { SordQuad pat = {0, 0, 0, graph}; SordIter* iter = sord_find(model, pat); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/test/.clang-tidy new/sord-0.16.20/test/.clang-tidy --- old/sord-0.16.18/test/.clang-tidy 1970-01-01 01:00:00.000000000 +0100 +++ new/sord-0.16.20/test/.clang-tidy 2025-11-12 20:07:37.000000000 +0100 @@ -0,0 +1,21 @@ +# Copyright 2020-2025 David Robillard <[email protected]> +# SPDX-License-Identifier: 0BSD OR ISC + +Checks: > + -bugprone-assignment-in-if-condition, + -cert-err33-c, + -clang-analyzer-optin.core.EnumCastOutOfRange, + -cppcoreguidelines-avoid-magic-numbers, + -cppcoreguidelines-avoid-non-const-global-variables, + -cppcoreguidelines-macro-to-enum, + -hicpp-signed-bitwise, + -llvm-else-after-return, + -misc-include-cleaner, + -modernize-macro-to-enum, + -readability-else-after-return, + -readability-identifier-length, + -readability-magic-numbers, +CheckOptions: + - key: readability-function-cognitive-complexity.Threshold + value: '96' +InheritParentConfig: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/test/cpp/.clang-tidy new/sord-0.16.20/test/cpp/.clang-tidy --- old/sord-0.16.18/test/cpp/.clang-tidy 1970-01-01 01:00:00.000000000 +0100 +++ new/sord-0.16.20/test/cpp/.clang-tidy 2025-11-12 20:07:37.000000000 +0100 @@ -0,0 +1,40 @@ +# Copyright 2020-2025 David Robillard <[email protected]> +# SPDX-License-Identifier: 0BSD OR ISC + +Checks: > + -*-avoid-c-arrays, + -*-narrowing-conversions, + -*-use-default-member-init, + -abseil-string-find-str-contains, + -android-cloexec-fopen, + -cppcoreguidelines-avoid-const-or-ref-data-members, + -cppcoreguidelines-macro-usage, + -cppcoreguidelines-non-private-member-variables-in-classes, + -cppcoreguidelines-owning-memory, + -cppcoreguidelines-pro-bounds-array-to-pointer-decay, + -cppcoreguidelines-pro-type-reinterpret-cast, + -cppcoreguidelines-pro-type-vararg, + -cppcoreguidelines-special-member-functions, + -fuchsia-default-arguments-calls, + -fuchsia-default-arguments-declarations, + -fuchsia-overloaded-operator, + -google-explicit-constructor, + -hicpp-explicit-conversions, + -hicpp-no-array-decay, + -hicpp-special-member-functions, + -hicpp-vararg, + -misc-const-correctness, + -misc-non-private-member-variables-in-classes, + -modernize-return-braced-init-list, + -modernize-use-nodiscard, + -modernize-use-trailing-return-type, + -modernize-use-using, + -performance-avoid-endl, + -performance-enum-size, + -readability-implicit-bool-conversion, + -readability-redundant-inline-specifier, + -readability-redundant-member-init, +CheckOptions: + - key: readability-function-cognitive-complexity.Threshold + value: '6' +InheritParentConfig: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/test/cpp/meson.build new/sord-0.16.20/test/cpp/meson.build --- old/sord-0.16.18/test/cpp/meson.build 1970-01-01 01:00:00.000000000 +0100 +++ new/sord-0.16.20/test/cpp/meson.build 2025-11-12 20:07:37.000000000 +0100 @@ -0,0 +1,65 @@ +# Copyright 2021-2025 David Robillard <[email protected]> +# SPDX-License-Identifier: 0BSD OR ISC + +if add_languages(['cpp'], native: false, required: false) + cpp = meson.get_compiler('cpp') + + cpp_suppressions = [] + if cpp.get_id() == 'gcc' + if warning_level == 'everything' + cpp_suppressions += [ + '-Wno-abi-tag', + '-Wno-conversion', + '-Wno-effc++', + '-Wno-inline', + '-Wno-multiple-inheritance', + '-Wno-switch-enum', + ] + endif + elif cpp.get_id() == 'clang' + if warning_level == 'everything' + cpp_suppressions += [ + '-Wno-c++98-compat', + '-Wno-cast-function-type-strict', + '-Wno-documentation-unknown-command', + '-Wno-implicit-float-conversion', + '-Wno-poison-system-directories', + '-Wno-shorten-64-to-32', + '-Wno-switch-enum', + '-Wno-unsafe-buffer-usage', + ] + endif + elif cpp.get_id() == 'msvc' + if warning_level == 'everything' + cpp_suppressions += [ + '/wd4061', # enumerator in switch is not explicitly handled + '/wd4244', # lossy conversion from 'double' to 'float' + '/wd4514', # unreferenced inline function has been removed + '/wd4625', # copy constructor implicitly deleted + '/wd4626', # copy assignment operator implicitly deleted + '/wd4710', # function not inlined + '/wd4711', # function selected for automatic inline expansion + '/wd4820', # padding added after construct + ] + endif + + if warning_level in ['everything', '3', '2'] + cpp_suppressions += [ + '/wd4244', # lossy conversion from 'double' to 'float' + '/wd4996', # POSIX name for this item is deprecated + ] + endif + endif + + test( + 'sordmm', + executable( + 'sordmm_test', + files('sordmm_test.cpp'), + cpp_args: cpp_suppressions, + dependencies: sord_dep, + implicit_include_directories: false, + ), + suite: 'unit', + ) +endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/test/cpp/sordmm_test.cpp new/sord-0.16.20/test/cpp/sordmm_test.cpp --- old/sord-0.16.18/test/cpp/sordmm_test.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/sord-0.16.20/test/cpp/sordmm_test.cpp 2025-11-12 20:07:37.000000000 +0100 @@ -0,0 +1,12 @@ +// Copyright 2011 David Robillard <[email protected]> +// SPDX-License-Identifier: ISC + +#include <sord/sordmm.hpp> + +int +main() +{ + Sord::World world; + Sord::Model model(world, "http://example.org/"); + return 0; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/test/headers/.clang-tidy new/sord-0.16.20/test/headers/.clang-tidy --- old/sord-0.16.18/test/headers/.clang-tidy 1970-01-01 01:00:00.000000000 +0100 +++ new/sord-0.16.20/test/headers/.clang-tidy 2025-11-12 20:07:37.000000000 +0100 @@ -0,0 +1,15 @@ +# Copyright 2020-2025 David Robillard <[email protected]> +# SPDX-License-Identifier: 0BSD OR ISC + +Checks: > + *, + -altera-*, + -llvmlibc-*, +CheckOptions: + - key: readability-function-cognitive-complexity.Threshold + value: '0' + - key: readability-identifier-length.IgnoredParameterNames + value: '^(a)|(b)|(s)|(p)|(o)|(g)|(x)|(y)$' +WarningsAsErrors: '*' +HeaderFilterRegex: '.*' +FormatStyle: file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/test/headers/meson.build new/sord-0.16.20/test/headers/meson.build --- old/sord-0.16.18/test/headers/meson.build 1970-01-01 01:00:00.000000000 +0100 +++ new/sord-0.16.20/test/headers/meson.build 2025-11-12 20:07:37.000000000 +0100 @@ -0,0 +1,32 @@ +# Copyright 2020-2025 David Robillard <[email protected]> +# SPDX-License-Identifier: 0BSD OR ISC + +header_c_suppressions = [] + +if get_option('warning_level') == 'everything' + if cc.get_id() == 'clang' + if not meson.is_cross_build() + header_c_suppressions += ['-Wno-poison-system-directories'] + 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 + +test( + 'headers', + executable( + 'test_headers', + files('test_headers.c'), + c_args: header_c_suppressions, + dependencies: sord_dep, + implicit_include_directories: false, + ), + suite: 'unit', +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/test/headers/test_headers.c new/sord-0.16.20/test/headers/test_headers.c --- old/sord-0.16.18/test/headers/test_headers.c 1970-01-01 01:00:00.000000000 +0100 +++ new/sord-0.16.20/test/headers/test_headers.c 2025-11-12 20:07:37.000000000 +0100 @@ -0,0 +1,13 @@ +// Copyright 2022-2025 David Robillard <[email protected]> +// SPDX-License-Identifier: ISC + +#include <sord/sord.h> // IWYU pragma: keep + +#if defined(__GNUC__) +__attribute__((const)) +#endif +int +main(void) +{ + return 0; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sord-0.16.18/test/meson.build new/sord-0.16.20/test/meson.build --- old/sord-0.16.18/test/meson.build 2025-01-19 14:46:45.000000000 +0100 +++ new/sord-0.16.20/test/meson.build 2025-11-12 20:07:37.000000000 +0100 @@ -1,6 +1,12 @@ -# Copyright 2021-2022 David Robillard <[email protected]> +# Copyright 2021-2025 David Robillard <[email protected]> # SPDX-License-Identifier: 0BSD OR ISC +################### +# Header Warnings # +################### + +subdir('headers') + #################### # Project Metadata # #################### @@ -37,7 +43,16 @@ files('test_@[email protected]'.format(unit)), c_args: c_suppressions, dependencies: sord_dep, + implicit_include_directories: false, ), suite: 'unit', ) endforeach + +####### +# C++ # +####### + +if not get_option('bindings_cpp').disabled() + subdir('cpp') +endif
