From 31f94eb75c0c942c09992a2543b64e0c5604fe41 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 00:01:48 +0200 Subject: [PATCH 01/98] ignore build folder etc. --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 57286ba..b9f749a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .vscode/ -build.log +build/ qrcode.svg +.DS_Store From 5246828d4f3406c73792bf7fa29819259c4d2dd3 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 00:12:12 +0200 Subject: [PATCH 02/98] update version of action checkout --- .github/workflows/ci_build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 38188f7..7a3f330 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Run tests run: ./test/linux_run.sh @@ -26,7 +26,7 @@ jobs: runs-on: windows-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Run tests run: ./test/win_run.ps1 From 338bdf79c0d9417b3e0387e26642bac650c572a1 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 00:12:37 +0200 Subject: [PATCH 03/98] build libray using gcc --- .github/workflows/ci_build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 7a3f330..c993914 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -16,11 +16,11 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - name: Run tests - run: ./test/linux_run.sh + - name: Install build infrastructure + run: sudo apt-get install -y build-essential cmake ninja-build gcc-13 g++-13 libstdc++-13-dev - - name: Run conan demo - run: ./conan_demo/run.sh "Hello World!" + - name: Build + run: mkdir build && cd build && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../ && ninja ci_on_windows: runs-on: windows-latest From 1ae11fe0ab2332aee2a943aecba900a1924ff725 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 00:20:25 +0200 Subject: [PATCH 04/98] add missing include statement --- include/qrcode/code/byte_view.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/qrcode/code/byte_view.h b/include/qrcode/code/byte_view.h index 4901d2f..fc7cef6 100644 --- a/include/qrcode/code/byte_view.h +++ b/include/qrcode/code/byte_view.h @@ -31,6 +31,7 @@ #include #include #include +#include namespace qrcode::code::detail { From ceb0ca5de02df7ba93e93961c91bdf6b74da5c8f Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 00:20:59 +0200 Subject: [PATCH 05/98] disable windows run for now --- .github/workflows/ci_build.yml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index c993914..cfbead6 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -22,11 +22,12 @@ jobs: - name: Build run: mkdir build && cd build && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../ && ninja - ci_on_windows: - runs-on: windows-latest - - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - - name: Run tests - run: ./test/win_run.ps1 + # disabled for now + #ci_on_windows: + # runs-on: windows-latest +# + # steps: + # - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 +# + # - name: Run tests + # run: ./test/win_run.ps1 From c256e9da8ad3221ebb96f1f9bb33a98e9c211310 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 00:26:18 +0200 Subject: [PATCH 06/98] fix warning --- include/qrcode/micro_qr/symbol_designator.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/qrcode/micro_qr/symbol_designator.h b/include/qrcode/micro_qr/symbol_designator.h index e5f7b2a..3e0a9ab 100644 --- a/include/qrcode/micro_qr/symbol_designator.h +++ b/include/qrcode/micro_qr/symbol_designator.h @@ -46,7 +46,7 @@ namespace qrcode::micro_qr return designator.error_level; } - [[nodiscard]] friend constexpr auto make_designator( + friend constexpr auto make_designator( symbol_version version, std::optional error_level) noexcept -> std::optional; From f1a1625652a587014c0a5cea53ab850f59c89726 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 00:26:25 +0200 Subject: [PATCH 07/98] fix warning --- include/qrcode/code/sequence_permutation.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/qrcode/code/sequence_permutation.h b/include/qrcode/code/sequence_permutation.h index d0aa6f7..086489a 100644 --- a/include/qrcode/code/sequence_permutation.h +++ b/include/qrcode/code/sequence_permutation.h @@ -82,7 +82,7 @@ namespace qrcode::code::detail concept indexable_range = requires(T t) { { t[int{}] } -> std::convertible_to; - std::ranges::range; + requires std::ranges::range; }; template From ee607cabaa07374578e18ca8f217d343a6405a66 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 00:29:39 +0200 Subject: [PATCH 08/98] fix warning --- include/qrcode/code/bit_view.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/qrcode/code/bit_view.h b/include/qrcode/code/bit_view.h index ad3571c..f2efa19 100644 --- a/include/qrcode/code/bit_view.h +++ b/include/qrcode/code/bit_view.h @@ -97,7 +97,7 @@ namespace qrcode::code::detail constexpr bit_view_sentinel() noexcept = default; template - [[nodiscard]] friend constexpr auto operator==( + friend constexpr auto operator==( bit_view_iterator const& iterator, bit_view_sentinel const& sentinel) noexcept; From 96681f08d85ffa83e9cec402e132f8a11a7fc690 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 00:39:31 +0200 Subject: [PATCH 09/98] remove conan and docker as it adds too much complexity for a small header only library --- README.md | 32 +----- conan_demo/CMakeLists.txt | 41 ------- conan_demo/Dockerfile | 31 ----- conan_demo/conanfile.txt | 5 - conan_demo/demo.cpp | 235 -------------------------------------- conan_demo/run.sh | 7 -- conanfile.py | 22 ---- test/linux.Dockerfile | 20 ---- test/linux_run.sh | 7 -- test/win.Dockerfile | 19 --- test/win_run.ps1 | 11 -- 11 files changed, 6 insertions(+), 424 deletions(-) delete mode 100644 conan_demo/CMakeLists.txt delete mode 100644 conan_demo/Dockerfile delete mode 100644 conan_demo/conanfile.txt delete mode 100644 conan_demo/demo.cpp delete mode 100755 conan_demo/run.sh delete mode 100644 conanfile.py delete mode 100644 test/linux.Dockerfile delete mode 100755 test/linux_run.sh delete mode 100644 test/win.Dockerfile delete mode 100755 test/win_run.ps1 diff --git a/README.md b/README.md index b6cd8e7..ff6a387 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,6 @@ Features include: * Utilizes standard library only * Uses C++20 Ranges * No C++ exceptions (however) -* Supports Conan package manager # QR support Supported: @@ -29,13 +28,9 @@ Supported: * Encodings: Numeric, alphanumeric, byte and kanji encoding (where possible) # Usage -One can either use the conan recipe provided in this repository or directly integrate the library -into your project. As this libary is header-only, it should be quite easy to setup. -Add the libqrcode include directory to your project's header search path - In your project, just in include the header [`qrcode/qrcode.h`](include/qrcode/qrcode.h). -Micro QR api is located within namespace `micro_qr`. -QR api is located within namespace `qr`. +Micro QR API is located within namespace `micro_qr`. +QR API is located within namespace `qr`. #### Simple example ``` @@ -91,8 +86,8 @@ int main() # Requirements * C++20 compiler and standard library * Supported: - * gcc10 and libstdc++-10-dev or higher (see [`test/linux.Dockerfile`](test/linux.Dockerfile)) - * msvc: Visual Studio 2019 16.10.0 (see [`test/win.Dockerfile`](test/win.Dockerfile)) + * gcc10 and libstdc++-10-dev or higher + * msvc: Visual Studio 2019 16.10.0 * Not supported: * clang doesn't seem to support all featured of C++20 needed to make this work * macOS (due to lack of C++20 features), support will be added in the future @@ -110,20 +105,5 @@ If you would like to run the tests, one has to add the following cmake flag: `-D Building with tests enabled in _Debug_ configuration won't build due to an issue in _Microsoft_'s STL implementation. _Release_ configuration works though. # CI builds -CI builds usually consists of a test build and a conan demo build. -If and only if both builds were successful, the CI state is green. - -# Tests -All tests are usually built and run in docker containers. -See [`test/linux.Dockerfile`](test/linux.Dockerfile) for more info. -You can also hit [`test/linux_run.sh`](test/linux_run.sh) which creates and -runs the docker image for you. - -# Conan -The library supports _Conan_ out of the box. The [`conan_demo/Dockerfile`](conan_demo/Dockerfile) -and [`conan_demo/run.sh`](conan_demo/run.sh) are for demonstration purposes. -It creates a small command-line tool which can create QR symbols from a given text message. - -Please note: -The _Conan_ build is part of the CI checks. -The tool has to be compiled successfully in order to clear this stage. +CI builds consist of a test build for _Windows_ and _Linux_. +If and only if all builds were successful, the CI state is green. diff --git a/conan_demo/CMakeLists.txt b/conan_demo/CMakeLists.txt deleted file mode 100644 index 0176545..0000000 --- a/conan_demo/CMakeLists.txt +++ /dev/null @@ -1,41 +0,0 @@ -# -# The MIT License -# -# Copyright (c) 2021 Sebastian Bauer -# -# 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. -# -cmake_minimum_required(VERSION 3.15) - -function(enable_cxx version) - set(CMAKE_CXX_STANDARD ${version} PARENT_SCOPE) -endfunction() - -project(libqrcode_demo) - -enable_testing() -enable_cxx(20) - -set(CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) -find_package(libqrcode REQUIRED) - -add_executable(demo demo.cpp) -target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) -target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) -target_link_libraries(demo PRIVATE libqrcode::libqrcode) diff --git a/conan_demo/Dockerfile b/conan_demo/Dockerfile deleted file mode 100644 index b3d9bd0..0000000 --- a/conan_demo/Dockerfile +++ /dev/null @@ -1,31 +0,0 @@ -FROM ubuntu:20.04 - -RUN apt-get update && \ - apt-get upgrade -y && \ - DEBIAN_FRONTEND="noninteractive" apt-get install -y build-essential cmake ninja-build gcc-10 g++-10 libstdc++-10-dev && \ - update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10 && \ - update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 10 && \ - apt-get install -y python3-pip && pip3 install conan - -ARG user_name="container_user" -RUN useradd -m $user_name - -# library -RUN mkdir -p /home/$user_name/libqrcode/library && chown $user_name:$user_name /home/$user_name/libqrcode/library -COPY --chown=$user_name:$user_name CMakeLists.txt /home/$user_name/libqrcode/library/ -COPY --chown=$user_name:$user_name conanfile.py /home/$user_name/libqrcode/library/ -COPY --chown=$user_name:$user_name include/ /home/$user_name/libqrcode/library/include - -# conan demo -RUN mkdir -p /home/$user_name/libqrcode/demo/src && chown $user_name:$user_name /home/$user_name/libqrcode/demo/src && \ - mkdir -p /home/$user_name/libqrcode/demo/bin && chown $user_name:$user_name /home/$user_name/libqrcode/demo/bin -COPY --chown=$user_name:$user_name conan_demo/ /home/$user_name/libqrcode/demo/src - -USER $user_name -WORKDIR /home/$user_name/libqrcode/demo/bin -RUN conan create ../../library demo/test && \ - conan install ../src && \ - cmake -GNinja ../src && \ - ninja - -ENTRYPOINT [ "./demo" ] \ No newline at end of file diff --git a/conan_demo/conanfile.txt b/conan_demo/conanfile.txt deleted file mode 100644 index 020edfa..0000000 --- a/conan_demo/conanfile.txt +++ /dev/null @@ -1,5 +0,0 @@ -[requires] -libqrcode/v1.0@demo/test - -[generators] -cmake_find_package \ No newline at end of file diff --git a/conan_demo/demo.cpp b/conan_demo/demo.cpp deleted file mode 100644 index 198d568..0000000 --- a/conan_demo/demo.cpp +++ /dev/null @@ -1,235 +0,0 @@ - -#include -#include -#include - -#include -#include - -using namespace qrcode; -using namespace qrcode::qr; - -namespace -{ - struct arguments - { - error_correction error_level = error_correction::level_L; - std::optional version = std::nullopt; - std::optional eci_number; - std::string_view message; - }; - - [[nodiscard]] auto print_designator(std::ostream& stream, arguments const& options) - { - if (!options.version) - { - stream << "requested type (auto-detect)\n"; - return; - } - - auto const type = - symbol_designator{.version=*(options.version), .error_level=options.error_level}; - stream << "requested type " << type << "\n"; - } - - [[nodiscard]] auto print_eci_number(std::ostream& stream, arguments const& options) - { - if (!options.eci_number) - { - stream << "eci number (not set)\n"; - return; - } - stream << "eci number " << options.eci_number->value << "\n"; - } - - template - [[nodiscard]] auto print_message(std::ostream& stream, Message&& message) - { - stream << "message " << message << "\n"; - } - - [[nodiscard]] auto print_options(std::ostream& stream, arguments const& options) - { - print_designator(stream, options); - print_eci_number(stream, options); - } - - [[nodiscard]] auto print_usage(std::ostream& stream, std::string_view program_name) - { - stream - << "usage: " - << "echo \"Hello World\" | " - << program_name - << " [ ]\n"; - } - - [[nodiscard]] auto print_error(std::ostream& stream, error_code error) - { - switch(error) - { - case error_code::data_too_large: - stream << "data too large\n"; - break; - case error_code::version_does_not_support_given_data: - stream << "version does not support given data\n"; - break; - case error_code::version_and_error_level_not_supported: - stream << "version and error level not supported\n"; - break; - } - } - - [[nodiscard]] constexpr auto message_option(arguments options, char** current, char**) - -> std::optional> - { - options.message = std::string_view{*current}; - return std::pair{current, options}; - } - - [[nodiscard]] constexpr auto error_level_option(arguments options, char** current, char** next) - -> std::optional> - { - if (next == nullptr) - return std::nullopt; - - auto const level = **next; - switch(level) - { - case 'L': options.error_level = error_correction::level_L; break; - case 'M': options.error_level = error_correction::level_M; break; - case 'Q': options.error_level = error_correction::level_Q; break; - case 'H': options.error_level = error_correction::level_H; break; - default: return std::nullopt; - } - - ++current; - return std::pair{current, options}; - } - - [[nodiscard]] constexpr auto eci_number_option(arguments options, char** current, char** next) - -> std::optional> - { - if (next == nullptr) - return std::nullopt; - - auto const eci_number = std::atoi(*next); - if (eci_number < 0 || eci_number > 999999) - return std::nullopt; - - options.eci_number = eci::assignment_number{eci_number}; - ++current; - return std::pair{current, options}; - } - - [[nodiscard]] constexpr auto symbol_version_option( - arguments options, char** current, char** next - ) -> std::optional> - { - if (next == nullptr) - return std::nullopt; - - auto const version_number = std::atoi(*next); - if (version_number < 1 || version_number > 40) - return std::nullopt; - - options.version = symbol_version{version_number}; - ++current; - return std::pair{current, options}; - } - - [[nodiscard]] auto read_message(std::istream& in) - { - using view = std::ranges::basic_istream_view< - char, std::istream::char_type, std::istream::traits_type>; - - auto message = cx::vector{}; - for (auto i : view{in}) - message.push_back(i); - return message; - } - - [[nodiscard]] constexpr auto parse_command_line(int argc, char** argv) - -> std::optional - { - using callback_return_type = std::optional>; - using callback = callback_return_type(*)(arguments, char**, char**); - using namespace std::literals; - - auto options = arguments{}; - - auto const dispatch = std::array, 3>{{ - {"--error_level"sv, error_level_option}, - {"--symbol_version"sv, symbol_version_option}, - {"--eci_number"sv, eci_number_option} - }}; - - for (auto i = argv, e = argv + argc; i != e; ++i) - { - auto const found = std::ranges::find_if( - dispatch, - [current = std::string_view{*i}](auto i) { return i.first == current; }); - - auto const result = found == end(dispatch) - ? message_option(options, i, i+1) - : found->second(options, i, i+1); - - if (!result) - return std::nullopt; - - i = result->first; - options = result->second; - } - - return options; - } - - template - [[nodiscard]] constexpr auto do_create_symbol( - Message&& message, std::optional version, error_correction error_level) - { - return version - ? make_symbol(std::forward(message), *version, error_level) - : make_symbol(std::forward(message), error_level); - } - - template - [[nodiscard]] constexpr auto create_symbol(arguments const& args, Message const& message) - { - if (args.eci_number) - return do_create_symbol( - eci::view{*args.eci_number, message}, args.version, args.error_level); - - return do_create_symbol(message, args.version, args.error_level); - } -} - -int main(int argc, char** argv) -{ - auto const options = parse_command_line(argc-1, argv+1); - if (!options) - { - print_usage(std::cerr, std::string_view{argv[0]}); - return 1; - } - print_options(std::cerr, *options); - - auto message = options->message; - auto std_input = cx::vector{}; - if (empty(options->message)) - { - std_input = read_message(std::cin); - message = std::string_view{cx::begin(std_input), cx::end(std_input)}; - } - print_message(std::cerr, message); - - auto const symbol = create_symbol(*options, message); - if (!symbol) - { - print_error(std::cerr, symbol.error()); - return 1; - } - - auto s = symbol.value(); - std::cerr << "generated type " << designator(s) << "\n"; - svg(std::cout, symbol.value()); -} diff --git a/conan_demo/run.sh b/conan_demo/run.sh deleted file mode 100755 index 7b22491..0000000 --- a/conan_demo/run.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -ex - -cd "${0%/*}" - -container_name="libqrcode_demo_build" -docker build -t $container_name -f Dockerfile ../ >&2 -time docker run -i $container_name "$@" diff --git a/conanfile.py b/conanfile.py deleted file mode 100644 index 1d3dc2b..0000000 --- a/conanfile.py +++ /dev/null @@ -1,22 +0,0 @@ -from conans import ConanFile - -class LibqrcodeConan(ConanFile): - name = "libqrcode" - version = "v1.0" - exports_sources = "include/*" - no_copy_source = True - url = "https://github.com/yax-lakam-tuun/libqrcode" - license = "MIT License" - description = "A header-only C++20 library for generating QR Codes" - settings = "os" - - def build(self): - pass - - def package(self): - self.copy("*.h") - - def package_info(self): - if not self.settings.os == "Windows": - self.cpp_info.libs.append("stdc++") - self.cpp_info.libs.append("m") diff --git a/test/linux.Dockerfile b/test/linux.Dockerfile deleted file mode 100644 index 5c33088..0000000 --- a/test/linux.Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM ubuntu:20.04 - -RUN apt-get update && \ - apt-get upgrade -y && \ - DEBIAN_FRONTEND="noninteractive" apt-get install -y build-essential cmake ninja-build gcc-10 g++-10 libstdc++-10-dev && \ - update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10 && \ - update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 10 - -ARG user_name="container_user" -RUN useradd -m $user_name - -RUN mkdir -p /home/$user_name/libqrcode/src && chown $user_name:$user_name /home/$user_name/libqrcode/src && \ - mkdir -p /home/$user_name/libqrcode/bin && chown $user_name:$user_name /home/$user_name/libqrcode/bin -COPY --chown=$user_name:$user_name CMakeLists.txt /home/$user_name/libqrcode/src/ -COPY --chown=$user_name:$user_name include/ /home/$user_name/libqrcode/src/include -COPY --chown=$user_name:$user_name test/ /home/$user_name/libqrcode/src/test - -USER $user_name -WORKDIR /home/$user_name/libqrcode/bin -CMD [ "bash", "-c", "cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../src/ && ninja" ] \ No newline at end of file diff --git a/test/linux_run.sh b/test/linux_run.sh deleted file mode 100755 index 937c75e..0000000 --- a/test/linux_run.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -ex - -cd "${0%/*}" - -container_name="libqrcode_test_build" -docker build -t $container_name -f linux.Dockerfile ../ -time docker run --rm $container_name diff --git a/test/win.Dockerfile b/test/win.Dockerfile deleted file mode 100644 index 61eb4c7..0000000 --- a/test/win.Dockerfile +++ /dev/null @@ -1,19 +0,0 @@ -FROM mcr.microsoft.com/windows/servercore:ltsc2019 - -SHELL ["cmd", "/S", "/C"] -ADD https://download.visualstudio.microsoft.com/download/pr/cb1d5164-e767-4886-8955-2df3a7c816a8/b9ff67da6d68d6a653a612fd401283cc213b4ec4bae349dd3d9199659a7d9354/vs_BuildTools.exe C:/TEMP/vs_buildtools.exe -RUN C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache \ - --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended \ - --add Microsoft.VisualStudio.Component.VC.ATL \ - --add Microsoft.VisualStudio.Component.VC.ATLMFC \ - --installPath C:\BuildTools \ - || IF "%ERRORLEVEL%"=="3010" EXIT 0 - -COPY CMakeLists.txt C:/Code/libqrcode/src/ -COPY include/ C:/Code/libqrcode/src/include -COPY test/ C:/Code/libqrcode/src/test -RUN cd C:/Code/libqrcode && mkdir "C:/Code/libqrcode/bin" - -WORKDIR C:/Code/libqrcode/bin -ENTRYPOINT ["C:\\BuildTools\\Common7\\Tools\\VsDevCmd.bat", "&&", "powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"] -CMD [ "/c", "cmake -G\"Visual Studio 16 2019\" -DQRCODE_TESTS_ENABLED:BOOL=True ../src/; cmake --build ./ --config Release" ] diff --git a/test/win_run.ps1 b/test/win_run.ps1 deleted file mode 100755 index 7bde17e..0000000 --- a/test/win_run.ps1 +++ /dev/null @@ -1,11 +0,0 @@ - -Push-Location $PSScriptRoot - -try { - $ContainerName="libqrcode_test_build" - docker build -t $ContainerName -f win.Dockerfile ../ - docker run --rm $ContainerName -} -finally { - Pop-Location -} From 2a0c99670832010b17ca912f9922d3b3b73b91b4 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 00:45:24 +0200 Subject: [PATCH 10/98] enable windows again --- .github/workflows/ci_build.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index cfbead6..2f13f65 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -22,12 +22,12 @@ jobs: - name: Build run: mkdir build && cd build && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../ && ninja - # disabled for now - #ci_on_windows: - # runs-on: windows-latest -# - # steps: - # - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 -# - # - name: Run tests - # run: ./test/win_run.ps1 + ci_on_windows: + runs-on: windows-latest + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Build + shell: cmd + run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build && cd build && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../ && ninja' }} From 0f227bf8822bf1d4c4d646d5f3b7074f9f050fba Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 00:57:14 +0200 Subject: [PATCH 11/98] remove conan and docker as it adds too much complexity for a small header only library --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index ff6a387..e46bb56 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,6 @@ int main() * Since the library is header-only, building is actually not necessary. * Just put the `include` folder of this project into your header search path and it should just work. * However, if you'd like to run the tests, please select the top-level of the project in order to run _CMake_. -* For more information, please have a look at the _Dockerfile_ in the test folder and consider the remarks below. ## How to run the tests If you would like to run the tests, one has to add the following cmake flag: `-DQRCODE_TESTS_ENABLED:BOOL=True` From 9cf37d88ef1b60d8475d2d25a161c808cb6db05c Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 00:57:37 +0200 Subject: [PATCH 12/98] remove c++ latest for windows --- CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f94c725..9aae9bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -168,7 +168,6 @@ target_sources(qrcode INTERFACE target_include_directories(qrcode INTERFACE "include") target_link_libraries(qrcode INTERFACE $<$:stdc++ m>) target_link_libraries(qrcode INTERFACE $<$:stdc++ m>) -target_compile_options(qrcode INTERFACE $<$:/std:c++latest>) if (QRCODE_TESTS_ENABLED) add_subdirectory(test) From 65ad975bed634e44bc4efa7276259a8e3c5f364c Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 01:02:16 +0200 Subject: [PATCH 13/98] push to c++23 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9aae9bf..c23c6d7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,7 +30,7 @@ endfunction() project(libqrcode) enable_testing() -enable_cxx(20) +enable_cxx(23) add_library(qrcode INTERFACE) From 1f2103dfc3936f81a824e116df3626ae40a24808 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 01:06:26 +0200 Subject: [PATCH 14/98] readme polish --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e46bb56..cdcd180 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Features include: * Completely constexpr * Code is (unit-)tested with `static_asserts` during compile-time * Utilizes standard library only -* Uses C++20 Ranges +* Uses Ranges * No C++ exceptions (however) # QR support @@ -84,7 +84,7 @@ int main() ``` # Requirements -* C++20 compiler and standard library +* C++ compiler and standard library * Supported: * gcc10 and libstdc++-10-dev or higher * msvc: Visual Studio 2019 16.10.0 From ed6ce4776dfedf06f02e2a37fb9f75ada75f7e23 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 10:03:57 +0200 Subject: [PATCH 15/98] disable windows build as it still has problems --- .github/workflows/ci_build.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 2f13f65..968fa69 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -22,12 +22,12 @@ jobs: - name: Build run: mkdir build && cd build && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../ && ninja - ci_on_windows: - runs-on: windows-latest - - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - - name: Build - shell: cmd - run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build && cd build && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../ && ninja' }} + #ci_on_windows: + # runs-on: windows-latest +# + # steps: + # - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 +# + # - name: Build + # shell: cmd + # run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build && cd build && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../ && ninja' }} From ee94d0b39f39e5537895f881226994ce0dbf84c9 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 10:04:15 +0200 Subject: [PATCH 16/98] add demo --- .github/workflows/ci_build.yml | 7 +- demo/CMakeLists.txt | 42 ++++++ demo/demo.cpp | 235 +++++++++++++++++++++++++++++++++ 3 files changed, 282 insertions(+), 2 deletions(-) create mode 100644 demo/CMakeLists.txt create mode 100644 demo/demo.cpp diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 968fa69..4fabece 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -19,8 +19,11 @@ jobs: - name: Install build infrastructure run: sudo apt-get install -y build-essential cmake ninja-build gcc-13 g++-13 libstdc++-13-dev - - name: Build - run: mkdir build && cd build && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../ && ninja + - name: Build test + run: mkdir -p build/test && cd build/test && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../../ && ninja + + - name: Build demo + run: mkdir -p build/demo && cd build/demo && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../../demo && ninja #ci_on_windows: # runs-on: windows-latest diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt new file mode 100644 index 0000000..809f04b --- /dev/null +++ b/demo/CMakeLists.txt @@ -0,0 +1,42 @@ +# +# The MIT License +# +# Copyright (c) 2025 Melissa Bauer +# +# 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. +# +cmake_minimum_required(VERSION 3.15) + +function(enable_cxx version) + set(CMAKE_CXX_STANDARD ${version} PARENT_SCOPE) +endfunction() + +project(libqrcode_demo) + +enable_testing() +enable_cxx(20) + +set(CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) +find_package(libqrcode REQUIRED) + +add_executable(demo demo.cpp) +target_include_directories(demo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../include) +target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) +target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) +target_link_libraries(demo PRIVATE libqrcode::libqrcode) diff --git a/demo/demo.cpp b/demo/demo.cpp new file mode 100644 index 0000000..198d568 --- /dev/null +++ b/demo/demo.cpp @@ -0,0 +1,235 @@ + +#include +#include +#include + +#include +#include + +using namespace qrcode; +using namespace qrcode::qr; + +namespace +{ + struct arguments + { + error_correction error_level = error_correction::level_L; + std::optional version = std::nullopt; + std::optional eci_number; + std::string_view message; + }; + + [[nodiscard]] auto print_designator(std::ostream& stream, arguments const& options) + { + if (!options.version) + { + stream << "requested type (auto-detect)\n"; + return; + } + + auto const type = + symbol_designator{.version=*(options.version), .error_level=options.error_level}; + stream << "requested type " << type << "\n"; + } + + [[nodiscard]] auto print_eci_number(std::ostream& stream, arguments const& options) + { + if (!options.eci_number) + { + stream << "eci number (not set)\n"; + return; + } + stream << "eci number " << options.eci_number->value << "\n"; + } + + template + [[nodiscard]] auto print_message(std::ostream& stream, Message&& message) + { + stream << "message " << message << "\n"; + } + + [[nodiscard]] auto print_options(std::ostream& stream, arguments const& options) + { + print_designator(stream, options); + print_eci_number(stream, options); + } + + [[nodiscard]] auto print_usage(std::ostream& stream, std::string_view program_name) + { + stream + << "usage: " + << "echo \"Hello World\" | " + << program_name + << " [ ]\n"; + } + + [[nodiscard]] auto print_error(std::ostream& stream, error_code error) + { + switch(error) + { + case error_code::data_too_large: + stream << "data too large\n"; + break; + case error_code::version_does_not_support_given_data: + stream << "version does not support given data\n"; + break; + case error_code::version_and_error_level_not_supported: + stream << "version and error level not supported\n"; + break; + } + } + + [[nodiscard]] constexpr auto message_option(arguments options, char** current, char**) + -> std::optional> + { + options.message = std::string_view{*current}; + return std::pair{current, options}; + } + + [[nodiscard]] constexpr auto error_level_option(arguments options, char** current, char** next) + -> std::optional> + { + if (next == nullptr) + return std::nullopt; + + auto const level = **next; + switch(level) + { + case 'L': options.error_level = error_correction::level_L; break; + case 'M': options.error_level = error_correction::level_M; break; + case 'Q': options.error_level = error_correction::level_Q; break; + case 'H': options.error_level = error_correction::level_H; break; + default: return std::nullopt; + } + + ++current; + return std::pair{current, options}; + } + + [[nodiscard]] constexpr auto eci_number_option(arguments options, char** current, char** next) + -> std::optional> + { + if (next == nullptr) + return std::nullopt; + + auto const eci_number = std::atoi(*next); + if (eci_number < 0 || eci_number > 999999) + return std::nullopt; + + options.eci_number = eci::assignment_number{eci_number}; + ++current; + return std::pair{current, options}; + } + + [[nodiscard]] constexpr auto symbol_version_option( + arguments options, char** current, char** next + ) -> std::optional> + { + if (next == nullptr) + return std::nullopt; + + auto const version_number = std::atoi(*next); + if (version_number < 1 || version_number > 40) + return std::nullopt; + + options.version = symbol_version{version_number}; + ++current; + return std::pair{current, options}; + } + + [[nodiscard]] auto read_message(std::istream& in) + { + using view = std::ranges::basic_istream_view< + char, std::istream::char_type, std::istream::traits_type>; + + auto message = cx::vector{}; + for (auto i : view{in}) + message.push_back(i); + return message; + } + + [[nodiscard]] constexpr auto parse_command_line(int argc, char** argv) + -> std::optional + { + using callback_return_type = std::optional>; + using callback = callback_return_type(*)(arguments, char**, char**); + using namespace std::literals; + + auto options = arguments{}; + + auto const dispatch = std::array, 3>{{ + {"--error_level"sv, error_level_option}, + {"--symbol_version"sv, symbol_version_option}, + {"--eci_number"sv, eci_number_option} + }}; + + for (auto i = argv, e = argv + argc; i != e; ++i) + { + auto const found = std::ranges::find_if( + dispatch, + [current = std::string_view{*i}](auto i) { return i.first == current; }); + + auto const result = found == end(dispatch) + ? message_option(options, i, i+1) + : found->second(options, i, i+1); + + if (!result) + return std::nullopt; + + i = result->first; + options = result->second; + } + + return options; + } + + template + [[nodiscard]] constexpr auto do_create_symbol( + Message&& message, std::optional version, error_correction error_level) + { + return version + ? make_symbol(std::forward(message), *version, error_level) + : make_symbol(std::forward(message), error_level); + } + + template + [[nodiscard]] constexpr auto create_symbol(arguments const& args, Message const& message) + { + if (args.eci_number) + return do_create_symbol( + eci::view{*args.eci_number, message}, args.version, args.error_level); + + return do_create_symbol(message, args.version, args.error_level); + } +} + +int main(int argc, char** argv) +{ + auto const options = parse_command_line(argc-1, argv+1); + if (!options) + { + print_usage(std::cerr, std::string_view{argv[0]}); + return 1; + } + print_options(std::cerr, *options); + + auto message = options->message; + auto std_input = cx::vector{}; + if (empty(options->message)) + { + std_input = read_message(std::cin); + message = std::string_view{cx::begin(std_input), cx::end(std_input)}; + } + print_message(std::cerr, message); + + auto const symbol = create_symbol(*options, message); + if (!symbol) + { + print_error(std::cerr, symbol.error()); + return 1; + } + + auto s = symbol.value(); + std::cerr << "generated type " << designator(s) << "\n"; + svg(std::cout, symbol.value()); +} From 2337878f0c44f5f8093f8c2d0f3fb28275d3e25c Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 10:09:26 +0200 Subject: [PATCH 17/98] add demo --- .github/workflows/ci_build.yml | 2 +- demo/CMakeLists.txt | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 4fabece..1e6ce18 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -23,7 +23,7 @@ jobs: run: mkdir -p build/test && cd build/test && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../../ && ninja - name: Build demo - run: mkdir -p build/demo && cd build/demo && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../../demo && ninja + run: mkdir -p build/demo && cd build/demo && cmake -GNinja -DLIBQRCODE_INCLUDE=include/ ../../demo && ninja #ci_on_windows: # runs-on: windows-latest diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index 809f04b..3979501 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -32,11 +32,12 @@ project(libqrcode_demo) enable_testing() enable_cxx(20) -set(CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) -find_package(libqrcode REQUIRED) +if not ${LIBQRCODE_INCLUDE} + message(FATAL_ERROR "Please specify location of libqrcode include folder") +endif() add_executable(demo demo.cpp) -target_include_directories(demo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../include) +target_include_directories(demo PRIVATE ${LIBQRCODE_INCLUDE}) target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) target_link_libraries(demo PRIVATE libqrcode::libqrcode) From 83992ff55cfb5f8ad3d0b609b2e973117bae87fc Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 10:11:36 +0200 Subject: [PATCH 18/98] add demo --- demo/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index 3979501..81dc772 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -32,7 +32,7 @@ project(libqrcode_demo) enable_testing() enable_cxx(20) -if not ${LIBQRCODE_INCLUDE} +if(not ${LIBQRCODE_INCLUDE}) message(FATAL_ERROR "Please specify location of libqrcode include folder") endif() From 88b6b5ee8d07e5cd4ca6166737675a33fbcdf331 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 10:14:30 +0200 Subject: [PATCH 19/98] add demo --- demo/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index 81dc772..3ec6f0e 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -32,7 +32,7 @@ project(libqrcode_demo) enable_testing() enable_cxx(20) -if(not ${LIBQRCODE_INCLUDE}) +if(not LIBQRCODE_INCLUDE) message(FATAL_ERROR "Please specify location of libqrcode include folder") endif() From a53da4ac6f4422fd00631f4af29d12db69142908 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 10:16:36 +0200 Subject: [PATCH 20/98] add demo --- demo/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index 3ec6f0e..56d4519 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -32,7 +32,7 @@ project(libqrcode_demo) enable_testing() enable_cxx(20) -if(not LIBQRCODE_INCLUDE) +if(not defined LIBQRCODE_INCLUDE) message(FATAL_ERROR "Please specify location of libqrcode include folder") endif() From ad7d3d06a4082a4e0d02a5245cc68a9196218b0f Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:33:47 +0200 Subject: [PATCH 21/98] add demo --- demo/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index 56d4519..d66b04b 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -32,7 +32,7 @@ project(libqrcode_demo) enable_testing() enable_cxx(20) -if(not defined LIBQRCODE_INCLUDE) +if(NOT DEFINED LIBQRCODE_INCLUDE) message(FATAL_ERROR "Please specify location of libqrcode include folder") endif() From 617e3a58811b62132f9b18ecc73e1769199da59e Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:36:44 +0200 Subject: [PATCH 22/98] add demo --- .github/workflows/ci_build.yml | 2 +- demo/CMakeLists.txt | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 1e6ce18..4bb3ed2 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -23,7 +23,7 @@ jobs: run: mkdir -p build/test && cd build/test && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../../ && ninja - name: Build demo - run: mkdir -p build/demo && cd build/demo && cmake -GNinja -DLIBQRCODE_INCLUDE=include/ ../../demo && ninja + run: mkdir -p build/demo && cd build/demo && cmake -GNinja -DLIBQRCODE_INCLUDE_DIR=include/ ../../demo && ninja #ci_on_windows: # runs-on: windows-latest diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index d66b04b..5d554fb 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -32,12 +32,11 @@ project(libqrcode_demo) enable_testing() enable_cxx(20) -if(NOT DEFINED LIBQRCODE_INCLUDE) +if(NOT DEFINED LIBQRCODE_INCLUDE_DIR) message(FATAL_ERROR "Please specify location of libqrcode include folder") endif() add_executable(demo demo.cpp) -target_include_directories(demo PRIVATE ${LIBQRCODE_INCLUDE}) +target_include_directories(demo PRIVATE ${LIBQRCODE_INCLUDE_DIR_DIR}) target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) -target_link_libraries(demo PRIVATE libqrcode::libqrcode) From 63d2cd3d9446b5544497ea2eb33938d187c7a9f9 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:38:21 +0200 Subject: [PATCH 23/98] add demo --- demo/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index 5d554fb..ce5524e 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -37,6 +37,6 @@ if(NOT DEFINED LIBQRCODE_INCLUDE_DIR) endif() add_executable(demo demo.cpp) -target_include_directories(demo PRIVATE ${LIBQRCODE_INCLUDE_DIR_DIR}) +target_include_directories(demo PRIVATE ${LIBQRCODE_INCLUDE_DIR}) target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) From 06eaa5a1031b247cc050fe710d50d652dcb8636b Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:40:18 +0200 Subject: [PATCH 24/98] add demo --- .github/workflows/ci_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 4bb3ed2..1e17f56 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -23,7 +23,7 @@ jobs: run: mkdir -p build/test && cd build/test && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../../ && ninja - name: Build demo - run: mkdir -p build/demo && cd build/demo && cmake -GNinja -DLIBQRCODE_INCLUDE_DIR=include/ ../../demo && ninja + run: mkdir -p build/demo && cd build/demo && cmake -GNinja -DLIBQRCODE_INCLUDE_DIR=../../include/ ../../demo && ninja #ci_on_windows: # runs-on: windows-latest From 534a36cb12ee965873f11ebd830f84e56fa7afcf Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:51:15 +0200 Subject: [PATCH 25/98] add demo --- .github/workflows/ci_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 1e17f56..8421f6e 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -23,7 +23,7 @@ jobs: run: mkdir -p build/test && cd build/test && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../../ && ninja - name: Build demo - run: mkdir -p build/demo && cd build/demo && cmake -GNinja -DLIBQRCODE_INCLUDE_DIR=../../include/ ../../demo && ninja + run: mkdir -p build/demo && cd build/demo && cmake -GNinja -DLIBQRCODE_INCLUDE_DIR=$GITHUB_WORKSPACE/include/ ../../demo && ninja #ci_on_windows: # runs-on: windows-latest From 9a1d14a2de8707f2c1f8c566fac6fb0a9f832158 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 00:30:14 +0200 Subject: [PATCH 26/98] add demo --- .github/workflows/ci_build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 8421f6e..98a7653 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -25,6 +25,9 @@ jobs: - name: Build demo run: mkdir -p build/demo && cd build/demo && cmake -GNinja -DLIBQRCODE_INCLUDE_DIR=$GITHUB_WORKSPACE/include/ ../../demo && ninja + - name: Run demo + run: build/demo/demo "Hello World!" + #ci_on_windows: # runs-on: windows-latest # From 4a44f649045c1f76a4ae2a1146c99c71f14e0774 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 03:02:57 +0200 Subject: [PATCH 27/98] clang build: fix initialization issues --- .../qrcode/structure/cartesian_product_view.h | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/include/qrcode/structure/cartesian_product_view.h b/include/qrcode/structure/cartesian_product_view.h index 50081e0..1416584 100644 --- a/include/qrcode/structure/cartesian_product_view.h +++ b/include/qrcode/structure/cartesian_product_view.h @@ -173,11 +173,10 @@ namespace qrcode::structure::test auto range = cartesian_product_view{std::array{1,2,3,4}, std::array{6,7,8}}; - using positions = std::initializer_list; - return std::ranges::equal(range, positions{ - {1,6},{2,6},{3,6},{4,6}, - {1,7},{2,7},{3,7},{4,7}, - {1,8},{2,8},{3,8},{4,8} + return std::ranges::equal(range, std::array{ + position{1,6}, position{2,6}, position{3,6}, position{4,6}, + position{1,7}, position{2,7}, position{3,7}, position{4,7}, + position{1,8}, position{2,8}, position{3,8}, position{4,8} }); }; static_assert(f()); @@ -190,12 +189,14 @@ namespace qrcode::structure::test auto const range = cartesian_product_view{std::array{1,2,3,4}, std::array{6,7,8}}; - using positions = std::initializer_list; - return std::ranges::equal(range, positions{ - {1,6},{2,6},{3,6},{4,6}, - {1,7},{2,7},{3,7},{4,7}, - {1,8},{2,8},{3,8},{4,8} - }); + return std::ranges::equal( + range, + std::array{ + position{1,6}, position{2,6}, position{3,6}, position{4,6}, + position{1,7}, position{2,7}, position{3,7}, position{4,7}, + position{1,8}, position{2,8}, position{3,8}, position{4,8} + } + ); }; static_assert(f()); } @@ -207,8 +208,13 @@ namespace qrcode::structure::test auto const range = views::cartesian_product(std::array{1,2}, std::array{6,7,8}); - using positions = std::initializer_list; - return std::ranges::equal(range, positions{{1,6},{2,6},{1,7},{2,7},{1,8},{2,8}}); + return std::ranges::equal( + range, + std::array{ + position{1,6}, position{2,6}, position{1,7}, + position{2,7},position{1,8},position{2,8} + } + ); }; static_assert(f()); } @@ -221,8 +227,10 @@ namespace qrcode::structure::test views::cartesian_product(std::array{1,2}, std::array{6,7,8}) | std::views::filter([](auto point) { return point.y > 6; }); - using positions = std::initializer_list; - return std::ranges::equal(range, positions{{1,7},{2,7},{1,8},{2,8}}); + return std::ranges::equal( + range, + std::array{position{1,7},position{2,7},position{1,8},position{2,8}} + ); }; static_assert(f()); } From f2f42d054f136e6e66546b7e85b779bbb4ccdbf2 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 03:03:41 +0200 Subject: [PATCH 28/98] clang build: comparison operator needs explicit bool declaration otherwise std::sentinel_for fails --- include/qrcode/code/bit_view.h | 4 ++-- include/qrcode/code/padding_view.h | 8 ++++---- include/qrcode/code/polynomial_view.h | 4 ++-- include/qrcode/structure/cartesian_product_view.h | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/qrcode/code/bit_view.h b/include/qrcode/code/bit_view.h index f2efa19..59e1a25 100644 --- a/include/qrcode/code/bit_view.h +++ b/include/qrcode/code/bit_view.h @@ -99,7 +99,7 @@ namespace qrcode::code::detail template friend constexpr auto operator==( bit_view_iterator const& iterator, - bit_view_sentinel const& sentinel) noexcept; + bit_view_sentinel const& sentinel) noexcept -> bool; private: template @@ -115,7 +115,7 @@ namespace qrcode::code::detail template [[nodiscard]] constexpr auto operator==( bit_view_iterator const& iterator, - bit_view_sentinel const& sentinel) noexcept + bit_view_sentinel const& sentinel) noexcept -> bool { return sentinel.equal(iterator); } diff --git a/include/qrcode/code/padding_view.h b/include/qrcode/code/padding_view.h index de14fff..a2a0823 100644 --- a/include/qrcode/code/padding_view.h +++ b/include/qrcode/code/padding_view.h @@ -80,7 +80,7 @@ namespace qrcode::code::detail } [[nodiscard]] friend constexpr auto operator==( - padding_view_iterator const& a, padding_view_iterator const& b) noexcept + padding_view_iterator const& a, padding_view_iterator const& b) noexcept -> bool { return a.iterator == b.iterator && a.padding == b.padding @@ -88,7 +88,7 @@ namespace qrcode::code::detail } [[nodiscard]] friend constexpr auto operator==( - padding_view_iterator const& iterator, std::default_sentinel_t const&) noexcept + padding_view_iterator const& iterator, std::default_sentinel_t const&) noexcept -> bool { return iterator.iterator == iterator.sentinel && !iterator.current_padding.has_value(); @@ -105,7 +105,7 @@ namespace qrcode::code::detail template [[nodiscard]] constexpr auto operator!=( padding_view_iterator const& a, - padding_view_iterator const& b) noexcept + padding_view_iterator const& b) noexcept -> bool { return !(*a == b); } @@ -113,7 +113,7 @@ namespace qrcode::code::detail template [[nodiscard]] constexpr auto operator!=( padding_view_iterator const& iterator, - std::default_sentinel_t const& sentinel) noexcept + std::default_sentinel_t const& sentinel) noexcept -> bool { return !(*iterator == sentinel); } diff --git a/include/qrcode/code/polynomial_view.h b/include/qrcode/code/polynomial_view.h index 0dd9016..80ebab7 100644 --- a/include/qrcode/code/polynomial_view.h +++ b/include/qrcode/code/polynomial_view.h @@ -110,7 +110,7 @@ namespace qrcode::code::detail } [[nodiscard]] friend constexpr auto operator==( - polynomial_view_iterator const& a, polynomial_view_iterator const& b) noexcept + polynomial_view_iterator const& a, polynomial_view_iterator const& b) noexcept -> bool { return a.iterator == b.iterator && a.polynomial_info == b.polynomial_info @@ -118,7 +118,7 @@ namespace qrcode::code::detail } [[nodiscard]] friend constexpr auto operator==( - polynomial_view_iterator const& iterator, std::default_sentinel_t) noexcept + polynomial_view_iterator const& iterator, std::default_sentinel_t) noexcept -> bool { return !iterator.current_value.has_value(); } diff --git a/include/qrcode/structure/cartesian_product_view.h b/include/qrcode/structure/cartesian_product_view.h index 1416584..96ae030 100644 --- a/include/qrcode/structure/cartesian_product_view.h +++ b/include/qrcode/structure/cartesian_product_view.h @@ -86,7 +86,7 @@ namespace qrcode::structure::detail } [[nodiscard]] friend constexpr auto operator==( - cartesian_iterator const& iterator, std::default_sentinel_t) noexcept + cartesian_iterator const& iterator, std::default_sentinel_t) noexcept -> bool { using std::ranges::end; return iterator.i1 == end(*(iterator.range1)); From 349493e93a2e1920a9b8254c79307debe4e6cde4 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 03:04:00 +0200 Subject: [PATCH 29/98] clang build: add missing include --- include/cx/vector.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/cx/vector.h b/include/cx/vector.h index 61b648e..8969c67 100644 --- a/include/cx/vector.h +++ b/include/cx/vector.h @@ -26,6 +26,7 @@ #include #include #include +#include namespace cx { From 908081c4dc1bc49ff45ca39aa7a9905a4f902cd7 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 03:17:48 +0200 Subject: [PATCH 30/98] clang build: comparison operator needs explicit bool declaration otherwise std::sentinel_for fails --- include/qrcode/code/byte_view.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/qrcode/code/byte_view.h b/include/qrcode/code/byte_view.h index fc7cef6..8865103 100644 --- a/include/qrcode/code/byte_view.h +++ b/include/qrcode/code/byte_view.h @@ -91,13 +91,13 @@ namespace qrcode::code::detail } [[nodiscard]] friend constexpr auto operator==( - byte_view_iterator const& iterator, std::default_sentinel_t const&) noexcept + byte_view_iterator const& iterator, std::default_sentinel_t const&) noexcept -> bool { return !iterator.current_value.has_value(); } [[nodiscard]] friend constexpr auto operator==( - byte_view_iterator const& a, byte_view_iterator const& b) noexcept + byte_view_iterator const& a, byte_view_iterator const& b) noexcept -> bool { return a.bit_iterator == b.bit_iterator && a.current_value == b.current_value; From 044ca367c86929d3cb5be4e536c7c9b9f176908f Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 03:18:13 +0200 Subject: [PATCH 31/98] clang build: some more fixes --- include/qrcode/qr/alignment_pattern.h | 2 +- include/qrcode/structure/place_data.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/qrcode/qr/alignment_pattern.h b/include/qrcode/qr/alignment_pattern.h index 6ff4a68..4322706 100644 --- a/include/qrcode/qr/alignment_pattern.h +++ b/include/qrcode/qr/alignment_pattern.h @@ -262,7 +262,7 @@ namespace qrcode::qr::detail::test constexpr auto alignment_positions_returns_all_positions_of_center_modules_of_alignment_patterns() { static_assert(std::ranges::equal(alignment_positions(dimension{21,21}), std::array{})); - static_assert(std::ranges::equal(alignment_positions(dimension{25,25}), std::array{{18,18}})); + static_assert(std::ranges::equal(alignment_positions(dimension{25,25}), std::array{position{18,18}})); static_assert(std::ranges::equal(alignment_positions( dimension{45,45}), std::array{{{22,6},{6,22},{22,22},{38,22},{22,38},{38,38}}})); } diff --git a/include/qrcode/structure/place_data.h b/include/qrcode/structure/place_data.h index a839a25..7e54d59 100644 --- a/include/qrcode/structure/place_data.h +++ b/include/qrcode/structure/place_data.h @@ -57,7 +57,7 @@ namespace qrcode::structure *i = *d; assert(d == end(data)); - std::fill(i, end(range), module_traits::make_data(0)); + std::ranges::fill(i, end(range), module_traits::make_data(0)); } } From 0b2ec018d3d21a919a7a65a8ffc0006111abda6f Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 03:18:50 +0200 Subject: [PATCH 32/98] clang build: better compile option switches --- CMakeLists.txt | 4 ++-- demo/CMakeLists.txt | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c23c6d7..52853ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -166,8 +166,8 @@ target_sources(qrcode INTERFACE ) target_include_directories(qrcode INTERFACE "include") -target_link_libraries(qrcode INTERFACE $<$:stdc++ m>) -target_link_libraries(qrcode INTERFACE $<$:stdc++ m>) +target_link_libraries(qrcode INTERFACE $<$:stdc++ m>) +target_link_libraries(qrcode INTERFACE $<$:m>) if (QRCODE_TESTS_ENABLED) add_subdirectory(test) diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index ce5524e..0605691 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -38,5 +38,6 @@ endif() add_executable(demo demo.cpp) target_include_directories(demo PRIVATE ${LIBQRCODE_INCLUDE_DIR}) -target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) -target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) +target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) +target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) +target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) From bab405f3cd9a7eb9d4d8dcdc4b08229582864699 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 03:19:03 +0200 Subject: [PATCH 33/98] clang build: better compile option switches --- test/CMakeLists.txt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index fa899fa..05941b7 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -29,13 +29,12 @@ endfunction() add_executable(libqrcode_test main.cpp) -target_compile_options(libqrcode_test PRIVATE $<$:-Wall -Wextra -Wpedantic>) -target_compile_options(libqrcode_test PRIVATE $<$:-Wall -Wextra -Wpedantic>) - target_compile_options(libqrcode_test PRIVATE $<$: - -fconstexpr-depth=9999999 -fconstexpr-ops-limit=9999999999 -fconcepts-diagnostics-depth=10>) + -Wall -Wextra -Wpedantic -fconstexpr-depth=9999999 -fconstexpr-ops-limit=9999999999 -fconcepts-diagnostics-depth=10>) target_compile_options(libqrcode_test PRIVATE $<$: - -fconstexpr-steps=999999999>) + -Wall -Wextra -Wpedantic -fconstexpr-steps=999999999>) +target_compile_options(libqrcode_test PRIVATE $<$: + -Wall -Wextra -Wpedantic -fconstexpr-steps=999999999>) target_compile_options(libqrcode_test PRIVATE $<$: /constexpr:steps999999999>) From cd39db78417c243506034fb212c3555347e040af Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 03:20:11 +0200 Subject: [PATCH 34/98] don't run test file as part of a post link step, confuses xcode during compilation/signing process --- test/CMakeLists.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 05941b7..e370357 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -23,10 +23,6 @@ # cmake_minimum_required(VERSION 3.15) -function(run_after_build target) - add_custom_command(TARGET ${target} POST_BUILD COMMAND ${target}) -endfunction() - add_executable(libqrcode_test main.cpp) target_compile_options(libqrcode_test PRIVATE $<$: @@ -41,6 +37,4 @@ target_compile_options(libqrcode_test PRIVATE $<$: target_compile_options(libqrcode_test PRIVATE -DQRCODE_TESTS_ENABLED) target_link_libraries(libqrcode_test PRIVATE qrcode) -run_after_build(libqrcode_test) - add_test(NAME libqrcode_test COMMAND libqrcode_test) From b3896f32bbc71ef9e50bf4574a7135ae686b85ed Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 11:42:01 +0200 Subject: [PATCH 35/98] enable c++23 for demo --- demo/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index 0605691..962aa03 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -30,7 +30,7 @@ endfunction() project(libqrcode_demo) enable_testing() -enable_cxx(20) +enable_cxx(23) if(NOT DEFINED LIBQRCODE_INCLUDE_DIR) message(FATAL_ERROR "Please specify location of libqrcode include folder") From 4c9486f565b57a6503d45aec523fd89076c98de9 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 11:42:22 +0200 Subject: [PATCH 36/98] add clang build --- .github/workflows/ci_build.yml | 46 +++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 98a7653..acfde7d 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -10,7 +10,7 @@ on: workflow_dispatch: jobs: - ci_on_linux: + GCC: runs-on: ubuntu-latest steps: @@ -20,10 +20,50 @@ jobs: run: sudo apt-get install -y build-essential cmake ninja-build gcc-13 g++-13 libstdc++-13-dev - name: Build test - run: mkdir -p build/test && cd build/test && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../../ && ninja + run: | + mkdir -p build/test + cd build/test + cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../../ + ninja + + - name: Run test + run: build/test/libqrcode_test "Hello World!" + + - name: Build demo + run: | + mkdir -p build/demo + cd build/demo + cmake -GNinja -DLIBQRCODE_INCLUDE_DIR=$GITHUB_WORKSPACE/include/ ../../demo + ninja + + - name: Run demo + run: build/demo/demo "Hello World!" + + Clang: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Install build infrastructure + run: sudo apt-get install -y build-essential cmake ninja-build clang-15 libstdc++-13-dev + + - name: Build test + run: | + mkdir -p build/test + cd build/test + cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../../ + ninja + + - name: Run test + run: build/test/libqrcode_test "Hello World!" - name: Build demo - run: mkdir -p build/demo && cd build/demo && cmake -GNinja -DLIBQRCODE_INCLUDE_DIR=$GITHUB_WORKSPACE/include/ ../../demo && ninja + run: | + mkdir -p build/demo + cd build/demo + cmake -GNinja -DLIBQRCODE_INCLUDE_DIR=$GITHUB_WORKSPACE/include/ ../../demo + ninja - name: Run demo run: build/demo/demo "Hello World!" From f4233dfceed4515facb723bb9b4b85f60eb38c83 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 11:49:43 +0200 Subject: [PATCH 37/98] fix run stage and compare svg result --- .github/workflows/ci_build.yml | 6 +- demo/qrcode.svg | 231 +++++++++++++++++++++++++++++++++ 2 files changed, 235 insertions(+), 2 deletions(-) create mode 100755 demo/qrcode.svg diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index acfde7d..9382b36 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -37,7 +37,9 @@ jobs: ninja - name: Run demo - run: build/demo/demo "Hello World!" + run: | + $GITHUB_WORKSPACE/build/demo/demo "Hello World!" >> result.svg + cmp demo/qrcode.svg result.svg Clang: runs-on: ubuntu-latest @@ -66,7 +68,7 @@ jobs: ninja - name: Run demo - run: build/demo/demo "Hello World!" + run: $GITHUB_WORKSPACE/build/demo/demo "Hello World!" #ci_on_windows: # runs-on: windows-latest diff --git a/demo/qrcode.svg b/demo/qrcode.svg new file mode 100755 index 0000000..1a1c7e0 --- /dev/null +++ b/demo/qrcode.svg @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From b78203923ff0c8f38f9ee8158e63ec1580ea6a2d Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 11:54:08 +0200 Subject: [PATCH 38/98] fix stages --- .github/workflows/ci_build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 9382b36..0e96fca 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -27,7 +27,7 @@ jobs: ninja - name: Run test - run: build/test/libqrcode_test "Hello World!" + run: build/test/test/libqrcode_test - name: Build demo run: | @@ -58,7 +58,7 @@ jobs: ninja - name: Run test - run: build/test/libqrcode_test "Hello World!" + run: build/test/test/libqrcode_test - name: Build demo run: | From 66413f8c8f981d260e77ad067c7271dd6380e328 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 11:54:24 +0200 Subject: [PATCH 39/98] remove unused ignore line --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index b9f749a..a1753c6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ .vscode/ build/ -qrcode.svg .DS_Store From d4279582bb1476ca21627b59cc03e3f1770982ec Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 11:55:53 +0200 Subject: [PATCH 40/98] shorter file name for workflow --- .github/workflows/{ci_build.yml => ci.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{ci_build.yml => ci.yml} (100%) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci.yml similarity index 100% rename from .github/workflows/ci_build.yml rename to .github/workflows/ci.yml From dc46d5beba1ec0a8dd5a504ed7bc51592643a0e8 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 11:56:21 +0200 Subject: [PATCH 41/98] state c++23 instead of c++20 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cdcd180..bf49112 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Introduction -libqrcode is C++20 header-only library for generating QR/Micro QR Codes. +libqrcode is C++23 header-only library for generating QR/Micro QR Codes. Features include: * Header-only library From 1f12f4aa3fc89684ac64583a6b642a25ce16dcdd Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:01:05 +0200 Subject: [PATCH 42/98] use diff instead of cmp and ignore space etc. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0e96fca..14fd337 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,7 +39,7 @@ jobs: - name: Run demo run: | $GITHUB_WORKSPACE/build/demo/demo "Hello World!" >> result.svg - cmp demo/qrcode.svg result.svg + diff -u --ignore-space-change --strip-trailing-cr --ignore-blank-lines demo/qrcode.svg result.svg Clang: runs-on: ubuntu-latest From f11fdcaf7c723feadf0115219234a85a198f8829 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:04:03 +0200 Subject: [PATCH 43/98] compare svg in clang as-well --- .github/workflows/ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 14fd337..511dcfd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,7 +68,9 @@ jobs: ninja - name: Run demo - run: $GITHUB_WORKSPACE/build/demo/demo "Hello World!" + run: | + $GITHUB_WORKSPACE/build/demo/demo "Hello World!" >> result.svg + diff -u --ignore-space-change --strip-trailing-cr --ignore-blank-lines demo/qrcode.svg result.svg #ci_on_windows: # runs-on: windows-latest From 85a3cba594a3f041c0bedc4a3fc8ce13e47228e7 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:05:45 +0200 Subject: [PATCH 44/98] add macos support --- .github/workflows/ci.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 511dcfd..e1d49c9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,6 +72,37 @@ jobs: $GITHUB_WORKSPACE/build/demo/demo "Hello World!" >> result.svg diff -u --ignore-space-change --strip-trailing-cr --ignore-blank-lines demo/qrcode.svg result.svg + AppleClang: + runs-on: macos-latest + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + #- name: Install build infrastructure + # run: sudo apt-get install -y build-essential cmake ninja-build clang-15 libstdc++-13-dev + + - name: Build test + run: | + mkdir -p build/test + cd build/test + cmake -GXcode -DQRCODE_TESTS_ENABLED:BOOL=True ../../ + xcodebuild -scheme ALL_BUILD build + + - name: Run test + run: build/test/test/libqrcode_test + + - name: Build demo + run: | + mkdir -p build/demo + cd build/demo + cmake -GXcode -DLIBQRCODE_INCLUDE_DIR=$GITHUB_WORKSPACE/include/ ../../demo + xcodebuild -scheme ALL_BUILD build + + - name: Run demo + run: | + $GITHUB_WORKSPACE/build/demo/demo "Hello World!" >> result.svg + diff -u --ignore-space-change --strip-trailing-cr --ignore-blank-lines demo/qrcode.svg result.svg + #ci_on_windows: # runs-on: windows-latest # From 4aee8764577293a86c6e67dc7c639c215b243d41 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:09:30 +0200 Subject: [PATCH 45/98] pin operating system versions --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e1d49c9..18ab28e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ on: jobs: GCC: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -42,7 +42,7 @@ jobs: diff -u --ignore-space-change --strip-trailing-cr --ignore-blank-lines demo/qrcode.svg result.svg Clang: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -73,7 +73,7 @@ jobs: diff -u --ignore-space-change --strip-trailing-cr --ignore-blank-lines demo/qrcode.svg result.svg AppleClang: - runs-on: macos-latest + runs-on: macos-15 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -104,7 +104,7 @@ jobs: diff -u --ignore-space-change --strip-trailing-cr --ignore-blank-lines demo/qrcode.svg result.svg #ci_on_windows: - # runs-on: windows-latest + # runs-on: windows-2022 # # steps: # - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 From b58adf3590f700e3a4a14a83e2c523347a069097 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:21:16 +0200 Subject: [PATCH 46/98] build release --- .github/workflows/ci.yml | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 18ab28e..8588c7a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: run: | mkdir -p build/test cd build/test - cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../../ + cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DQRCODE_TESTS_ENABLED:BOOL=True ../../ ninja - name: Run test @@ -33,7 +33,7 @@ jobs: run: | mkdir -p build/demo cd build/demo - cmake -GNinja -DLIBQRCODE_INCLUDE_DIR=$GITHUB_WORKSPACE/include/ ../../demo + cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR=$GITHUB_WORKSPACE/include/ ../../demo ninja - name: Run demo @@ -54,7 +54,7 @@ jobs: run: | mkdir -p build/test cd build/test - cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../../ + cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DQRCODE_TESTS_ENABLED:BOOL=True ../../ ninja - name: Run test @@ -64,7 +64,7 @@ jobs: run: | mkdir -p build/demo cd build/demo - cmake -GNinja -DLIBQRCODE_INCLUDE_DIR=$GITHUB_WORKSPACE/include/ ../../demo + cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR=$GITHUB_WORKSPACE/include/ ../../demo ninja - name: Run demo @@ -78,29 +78,26 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - #- name: Install build infrastructure - # run: sudo apt-get install -y build-essential cmake ninja-build clang-15 libstdc++-13-dev - - name: Build test run: | mkdir -p build/test cd build/test cmake -GXcode -DQRCODE_TESTS_ENABLED:BOOL=True ../../ - xcodebuild -scheme ALL_BUILD build + xcodebuild -scheme ALL_BUILD -configuration Release build - name: Run test - run: build/test/test/libqrcode_test + run: build/test/test/Release/libqrcode_test - name: Build demo run: | mkdir -p build/demo cd build/demo cmake -GXcode -DLIBQRCODE_INCLUDE_DIR=$GITHUB_WORKSPACE/include/ ../../demo - xcodebuild -scheme ALL_BUILD build + xcodebuild -scheme ALL_BUILD -configuration Release build - name: Run demo run: | - $GITHUB_WORKSPACE/build/demo/demo "Hello World!" >> result.svg + $GITHUB_WORKSPACE/build/demo/Release/demo "Hello World!" >> result.svg diff -u --ignore-space-change --strip-trailing-cr --ignore-blank-lines demo/qrcode.svg result.svg #ci_on_windows: From ebb2b299b886e68bec8a97b4145e1fdd5585c9be Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:21:46 +0200 Subject: [PATCH 47/98] update supported compiler list --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index bf49112..781cbd5 100644 --- a/README.md +++ b/README.md @@ -86,11 +86,10 @@ int main() # Requirements * C++ compiler and standard library * Supported: - * gcc10 and libstdc++-10-dev or higher - * msvc: Visual Studio 2019 16.10.0 -* Not supported: - * clang doesn't seem to support all featured of C++20 needed to make this work - * macOS (due to lack of C++20 features), support will be added in the future + * gcc13 and libstdc++-13-dev + * clang15 and libstdc++-13-dev + * msvc: Visual Studio 2022 17.14.9 + * macos: AppleClang 16.0.0 # How to build * Since the library is header-only, building is actually not necessary. From 51ffa31a6402207b53864d3941162774cd424337 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:30:02 +0200 Subject: [PATCH 48/98] change author name --- CMakeLists.txt | 2 +- LICENSE | 2 +- include/cx/cmath.h | 2 +- include/cx/vector.h | 2 +- include/qrcode/code/bit_view.h | 2 +- include/qrcode/code/block_info.h | 2 +- include/qrcode/code/byte_view.h | 2 +- include/qrcode/code/code_block.h | 2 +- include/qrcode/code/code_capacity.h | 2 +- include/qrcode/code/codeword_view.h | 2 +- include/qrcode/code/error_correction_code.h | 2 +- include/qrcode/code/error_correction_polynomial.h | 2 +- include/qrcode/code/extended_remainder.h | 2 +- include/qrcode/code/format_encoding.h | 2 +- include/qrcode/code/gf2p8.h | 2 +- include/qrcode/code/lfsr.h | 2 +- include/qrcode/code/padding_view.h | 2 +- include/qrcode/code/polynomial.h | 2 +- include/qrcode/code/polynomial_view.h | 2 +- include/qrcode/code/sequence.h | 2 +- include/qrcode/code/sequence_description.h | 2 +- include/qrcode/code/sequence_permutation.h | 2 +- include/qrcode/code/sequence_view.h | 2 +- include/qrcode/data/alphanumeric.h | 2 +- include/qrcode/data/alphanumeric_encoder.h | 2 +- include/qrcode/data/alphanumeric_encoding.h | 2 +- include/qrcode/data/best_fit/best_encoder.h | 2 +- include/qrcode/data/best_fit/data_encoding.h | 2 +- include/qrcode/data/best_fit/data_length.h | 2 +- include/qrcode/data/bit_stream.h | 2 +- include/qrcode/data/byte.h | 2 +- include/qrcode/data/byte_encoder.h | 2 +- include/qrcode/data/encoders.h | 2 +- include/qrcode/data/indicator.h | 2 +- include/qrcode/data/kanji.h | 2 +- include/qrcode/data/kanji_encoder.h | 2 +- include/qrcode/data/kanji_encoding.h | 2 +- include/qrcode/data/numeric.h | 2 +- include/qrcode/data/numeric_encoder.h | 2 +- include/qrcode/data/numeric_encoding.h | 2 +- include/qrcode/data/optimizer/data_encoding.h | 2 +- include/qrcode/data/optimizer/data_length.h | 2 +- include/qrcode/data/optimizer/determine_mode.h | 2 +- include/qrcode/data/optimizer/dispatch_mode.h | 2 +- include/qrcode/data/optimizer/mode.h | 2 +- include/qrcode/data/optimizer/optimize.h | 2 +- include/qrcode/data/optimizer/optimizer_state.h | 2 +- include/qrcode/eci/assignment_number.h | 2 +- include/qrcode/eci/message_header.h | 2 +- include/qrcode/eci/view.h | 2 +- include/qrcode/micro_qr/best_version.h | 2 +- include/qrcode/micro_qr/code_bits.h | 2 +- include/qrcode/micro_qr/code_capacity.h | 2 +- include/qrcode/micro_qr/encoders.h | 2 +- include/qrcode/micro_qr/error_correction.h | 2 +- include/qrcode/micro_qr/finalize_symbol.h | 2 +- include/qrcode/micro_qr/finder_pattern.h | 2 +- include/qrcode/micro_qr/format_information.h | 2 +- include/qrcode/micro_qr/generator_degree.h | 2 +- include/qrcode/micro_qr/mask_pattern.h | 2 +- include/qrcode/micro_qr/micro_qr.h | 2 +- include/qrcode/micro_qr/penalty_score.h | 2 +- include/qrcode/micro_qr/raw_code.h | 2 +- include/qrcode/micro_qr/separator_pattern.h | 2 +- include/qrcode/micro_qr/symbol_designator.h | 2 +- include/qrcode/micro_qr/symbol_number.h | 2 +- include/qrcode/micro_qr/symbol_version.h | 2 +- include/qrcode/micro_qr/timing_pattern.h | 2 +- include/qrcode/micro_qr/total_data_bits.h | 2 +- include/qrcode/qr/adjacent_score.h | 2 +- include/qrcode/qr/alignment_pattern.h | 2 +- include/qrcode/qr/best_version.h | 2 +- include/qrcode/qr/code_bits.h | 2 +- include/qrcode/qr/code_capacity.h | 2 +- include/qrcode/qr/dark_module_score.h | 2 +- include/qrcode/qr/data_encoding.h | 2 +- include/qrcode/qr/data_length.h | 2 +- include/qrcode/qr/encoders.h | 2 +- include/qrcode/qr/error_correction.h | 2 +- include/qrcode/qr/finalize_symbol.h | 2 +- include/qrcode/qr/finder_like_score.h | 2 +- include/qrcode/qr/finder_pattern.h | 2 +- include/qrcode/qr/fit_version.h | 2 +- include/qrcode/qr/format_information.h | 2 +- include/qrcode/qr/generator_degree.h | 2 +- include/qrcode/qr/mask_pattern.h | 2 +- include/qrcode/qr/optimized_data_encoding.h | 2 +- include/qrcode/qr/optimized_data_length.h | 2 +- include/qrcode/qr/penalty_score.h | 2 +- include/qrcode/qr/penalty_weight.h | 2 +- include/qrcode/qr/qr.h | 2 +- include/qrcode/qr/raw_code.h | 2 +- include/qrcode/qr/same_color_score.h | 2 +- include/qrcode/qr/separator_pattern.h | 2 +- include/qrcode/qr/symbol_designator.h | 2 +- include/qrcode/qr/symbol_version.h | 2 +- include/qrcode/qr/timing_pattern.h | 2 +- include/qrcode/qr/total_blocks.h | 2 +- include/qrcode/qr/total_data_bits.h | 2 +- include/qrcode/qr/version_category.h | 2 +- include/qrcode/qr/version_information.h | 2 +- include/qrcode/qrcode.h | 2 +- include/qrcode/result.h | 2 +- include/qrcode/structure/apply_mask.h | 2 +- include/qrcode/structure/cartesian_product_view.h | 2 +- include/qrcode/structure/data_masking.h | 2 +- include/qrcode/structure/dimension.h | 2 +- include/qrcode/structure/element_view.h | 2 +- include/qrcode/structure/horizontal_view.h | 2 +- include/qrcode/structure/make_matrix.h | 2 +- include/qrcode/structure/matrix.h | 2 +- include/qrcode/structure/module.h | 2 +- include/qrcode/structure/module_traits.h | 2 +- include/qrcode/structure/occupied_columns.h | 2 +- include/qrcode/structure/place_data.h | 2 +- include/qrcode/structure/position.h | 2 +- include/qrcode/structure/separator_pattern.h | 2 +- include/qrcode/structure/skip_column_view.h | 2 +- include/qrcode/structure/timing_pattern.h | 2 +- include/qrcode/structure/vertical_view.h | 2 +- include/qrcode/structure/zigzag_view.h | 2 +- include/qrcode/svg.h | 2 +- include/qrcode/symbol.h | 2 +- test/CMakeLists.txt | 2 +- test/main.cpp | 2 +- 125 files changed, 125 insertions(+), 125 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 52853ac..77cd6e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ # # The MIT License # -# Copyright (c) 2021 Sebastian Bauer +# Copyright (c) 2021 Melissa Bauer # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal diff --git a/LICENSE b/LICENSE index a6ec1e9..8ed425e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ -Copyright (c) 2021 Sebastian Bauer +Copyright (c) 2021 Melissa Bauer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/include/cx/cmath.h b/include/cx/cmath.h index 4fa09ef..545c0d6 100644 --- a/include/cx/cmath.h +++ b/include/cx/cmath.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/cx/vector.h b/include/cx/vector.h index 8969c67..1367d61 100644 --- a/include/cx/vector.h +++ b/include/cx/vector.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/bit_view.h b/include/qrcode/code/bit_view.h index 59e1a25..ac9801c 100644 --- a/include/qrcode/code/bit_view.h +++ b/include/qrcode/code/bit_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/block_info.h b/include/qrcode/code/block_info.h index 8269325..5d1924e 100644 --- a/include/qrcode/code/block_info.h +++ b/include/qrcode/code/block_info.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/byte_view.h b/include/qrcode/code/byte_view.h index 8865103..1a6a821 100644 --- a/include/qrcode/code/byte_view.h +++ b/include/qrcode/code/byte_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/code_block.h b/include/qrcode/code/code_block.h index 7e1e7fa..95797c9 100644 --- a/include/qrcode/code/code_block.h +++ b/include/qrcode/code/code_block.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/code_capacity.h b/include/qrcode/code/code_capacity.h index 50b818e..6227abb 100644 --- a/include/qrcode/code/code_capacity.h +++ b/include/qrcode/code/code_capacity.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/codeword_view.h b/include/qrcode/code/codeword_view.h index 5a0040c..b2049de 100644 --- a/include/qrcode/code/codeword_view.h +++ b/include/qrcode/code/codeword_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/error_correction_code.h b/include/qrcode/code/error_correction_code.h index 33cf3d8..739ca99 100644 --- a/include/qrcode/code/error_correction_code.h +++ b/include/qrcode/code/error_correction_code.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/error_correction_polynomial.h b/include/qrcode/code/error_correction_polynomial.h index a84cbb1..72fdf90 100644 --- a/include/qrcode/code/error_correction_polynomial.h +++ b/include/qrcode/code/error_correction_polynomial.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/extended_remainder.h b/include/qrcode/code/extended_remainder.h index f05d4bf..cffd340 100644 --- a/include/qrcode/code/extended_remainder.h +++ b/include/qrcode/code/extended_remainder.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/format_encoding.h b/include/qrcode/code/format_encoding.h index 8af5629..bcedc05 100644 --- a/include/qrcode/code/format_encoding.h +++ b/include/qrcode/code/format_encoding.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/gf2p8.h b/include/qrcode/code/gf2p8.h index d694a0a..62a7c38 100644 --- a/include/qrcode/code/gf2p8.h +++ b/include/qrcode/code/gf2p8.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/lfsr.h b/include/qrcode/code/lfsr.h index 2e361fc..0d40ee5 100644 --- a/include/qrcode/code/lfsr.h +++ b/include/qrcode/code/lfsr.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/padding_view.h b/include/qrcode/code/padding_view.h index a2a0823..6470120 100644 --- a/include/qrcode/code/padding_view.h +++ b/include/qrcode/code/padding_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/polynomial.h b/include/qrcode/code/polynomial.h index 927a51b..7c9521e 100644 --- a/include/qrcode/code/polynomial.h +++ b/include/qrcode/code/polynomial.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/polynomial_view.h b/include/qrcode/code/polynomial_view.h index 80ebab7..30d4533 100644 --- a/include/qrcode/code/polynomial_view.h +++ b/include/qrcode/code/polynomial_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/sequence.h b/include/qrcode/code/sequence.h index a5fe209..e9a5882 100644 --- a/include/qrcode/code/sequence.h +++ b/include/qrcode/code/sequence.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/sequence_description.h b/include/qrcode/code/sequence_description.h index 9173733..4630970 100644 --- a/include/qrcode/code/sequence_description.h +++ b/include/qrcode/code/sequence_description.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/sequence_permutation.h b/include/qrcode/code/sequence_permutation.h index 086489a..784e357 100644 --- a/include/qrcode/code/sequence_permutation.h +++ b/include/qrcode/code/sequence_permutation.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/sequence_view.h b/include/qrcode/code/sequence_view.h index 8c0c078..bae703d 100644 --- a/include/qrcode/code/sequence_view.h +++ b/include/qrcode/code/sequence_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/alphanumeric.h b/include/qrcode/data/alphanumeric.h index bff7263..5153bfb 100644 --- a/include/qrcode/data/alphanumeric.h +++ b/include/qrcode/data/alphanumeric.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/alphanumeric_encoder.h b/include/qrcode/data/alphanumeric_encoder.h index dd3f065..3375831 100644 --- a/include/qrcode/data/alphanumeric_encoder.h +++ b/include/qrcode/data/alphanumeric_encoder.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/alphanumeric_encoding.h b/include/qrcode/data/alphanumeric_encoding.h index 77cbb70..c95bc05 100644 --- a/include/qrcode/data/alphanumeric_encoding.h +++ b/include/qrcode/data/alphanumeric_encoding.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/best_fit/best_encoder.h b/include/qrcode/data/best_fit/best_encoder.h index 2356b48..842f814 100644 --- a/include/qrcode/data/best_fit/best_encoder.h +++ b/include/qrcode/data/best_fit/best_encoder.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/best_fit/data_encoding.h b/include/qrcode/data/best_fit/data_encoding.h index 4e20ddf..a13c76b 100644 --- a/include/qrcode/data/best_fit/data_encoding.h +++ b/include/qrcode/data/best_fit/data_encoding.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/best_fit/data_length.h b/include/qrcode/data/best_fit/data_length.h index 9d1fa32..fa07dc0 100644 --- a/include/qrcode/data/best_fit/data_length.h +++ b/include/qrcode/data/best_fit/data_length.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/bit_stream.h b/include/qrcode/data/bit_stream.h index 9309abd..2c05b64 100644 --- a/include/qrcode/data/bit_stream.h +++ b/include/qrcode/data/bit_stream.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/byte.h b/include/qrcode/data/byte.h index b6a34c6..8308f51 100644 --- a/include/qrcode/data/byte.h +++ b/include/qrcode/data/byte.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/byte_encoder.h b/include/qrcode/data/byte_encoder.h index 6b1d2f9..0c1d280 100644 --- a/include/qrcode/data/byte_encoder.h +++ b/include/qrcode/data/byte_encoder.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/encoders.h b/include/qrcode/data/encoders.h index 5e19c40..b4bf697 100644 --- a/include/qrcode/data/encoders.h +++ b/include/qrcode/data/encoders.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/indicator.h b/include/qrcode/data/indicator.h index 9549842..2a6b549 100644 --- a/include/qrcode/data/indicator.h +++ b/include/qrcode/data/indicator.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/kanji.h b/include/qrcode/data/kanji.h index e4f8b37..1a9976d 100644 --- a/include/qrcode/data/kanji.h +++ b/include/qrcode/data/kanji.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/kanji_encoder.h b/include/qrcode/data/kanji_encoder.h index 89f70e2..c672c5f 100644 --- a/include/qrcode/data/kanji_encoder.h +++ b/include/qrcode/data/kanji_encoder.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/kanji_encoding.h b/include/qrcode/data/kanji_encoding.h index 0dbf749..412e846 100644 --- a/include/qrcode/data/kanji_encoding.h +++ b/include/qrcode/data/kanji_encoding.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/numeric.h b/include/qrcode/data/numeric.h index 8983996..10e4753 100644 --- a/include/qrcode/data/numeric.h +++ b/include/qrcode/data/numeric.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/numeric_encoder.h b/include/qrcode/data/numeric_encoder.h index a2eedd4..c4897d0 100644 --- a/include/qrcode/data/numeric_encoder.h +++ b/include/qrcode/data/numeric_encoder.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/numeric_encoding.h b/include/qrcode/data/numeric_encoding.h index d0cc5ed..427c0bf 100644 --- a/include/qrcode/data/numeric_encoding.h +++ b/include/qrcode/data/numeric_encoding.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/optimizer/data_encoding.h b/include/qrcode/data/optimizer/data_encoding.h index 45dda32..d130450 100644 --- a/include/qrcode/data/optimizer/data_encoding.h +++ b/include/qrcode/data/optimizer/data_encoding.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/optimizer/data_length.h b/include/qrcode/data/optimizer/data_length.h index b002614..395f413 100644 --- a/include/qrcode/data/optimizer/data_length.h +++ b/include/qrcode/data/optimizer/data_length.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/optimizer/determine_mode.h b/include/qrcode/data/optimizer/determine_mode.h index 3802c36..f756c89 100644 --- a/include/qrcode/data/optimizer/determine_mode.h +++ b/include/qrcode/data/optimizer/determine_mode.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/optimizer/dispatch_mode.h b/include/qrcode/data/optimizer/dispatch_mode.h index 6ebce1f..dc5e708 100644 --- a/include/qrcode/data/optimizer/dispatch_mode.h +++ b/include/qrcode/data/optimizer/dispatch_mode.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/optimizer/mode.h b/include/qrcode/data/optimizer/mode.h index ecae7a2..b029549 100644 --- a/include/qrcode/data/optimizer/mode.h +++ b/include/qrcode/data/optimizer/mode.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/optimizer/optimize.h b/include/qrcode/data/optimizer/optimize.h index f1da3fc..2123fc7 100644 --- a/include/qrcode/data/optimizer/optimize.h +++ b/include/qrcode/data/optimizer/optimize.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/optimizer/optimizer_state.h b/include/qrcode/data/optimizer/optimizer_state.h index 0087518..e85f443 100644 --- a/include/qrcode/data/optimizer/optimizer_state.h +++ b/include/qrcode/data/optimizer/optimizer_state.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/eci/assignment_number.h b/include/qrcode/eci/assignment_number.h index 37ebeff..1bb430a 100644 --- a/include/qrcode/eci/assignment_number.h +++ b/include/qrcode/eci/assignment_number.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/eci/message_header.h b/include/qrcode/eci/message_header.h index 8167c6d..cdf6d97 100644 --- a/include/qrcode/eci/message_header.h +++ b/include/qrcode/eci/message_header.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/eci/view.h b/include/qrcode/eci/view.h index 7d61cf2..c2e33f3 100644 --- a/include/qrcode/eci/view.h +++ b/include/qrcode/eci/view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/best_version.h b/include/qrcode/micro_qr/best_version.h index 3e514a6..8cb3110 100644 --- a/include/qrcode/micro_qr/best_version.h +++ b/include/qrcode/micro_qr/best_version.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/code_bits.h b/include/qrcode/micro_qr/code_bits.h index ce8fcf4..6130f1c 100644 --- a/include/qrcode/micro_qr/code_bits.h +++ b/include/qrcode/micro_qr/code_bits.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/code_capacity.h b/include/qrcode/micro_qr/code_capacity.h index 9623687..c410790 100644 --- a/include/qrcode/micro_qr/code_capacity.h +++ b/include/qrcode/micro_qr/code_capacity.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/encoders.h b/include/qrcode/micro_qr/encoders.h index 7c6a4b3..1f4a7ba 100644 --- a/include/qrcode/micro_qr/encoders.h +++ b/include/qrcode/micro_qr/encoders.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/error_correction.h b/include/qrcode/micro_qr/error_correction.h index 8a4b196..11edd83 100644 --- a/include/qrcode/micro_qr/error_correction.h +++ b/include/qrcode/micro_qr/error_correction.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/finalize_symbol.h b/include/qrcode/micro_qr/finalize_symbol.h index 4c74988..cbb0217 100644 --- a/include/qrcode/micro_qr/finalize_symbol.h +++ b/include/qrcode/micro_qr/finalize_symbol.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/finder_pattern.h b/include/qrcode/micro_qr/finder_pattern.h index a4bc6e4..a045c77 100644 --- a/include/qrcode/micro_qr/finder_pattern.h +++ b/include/qrcode/micro_qr/finder_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/format_information.h b/include/qrcode/micro_qr/format_information.h index cf281fd..adc28b8 100644 --- a/include/qrcode/micro_qr/format_information.h +++ b/include/qrcode/micro_qr/format_information.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/generator_degree.h b/include/qrcode/micro_qr/generator_degree.h index f6538c0..84c5594 100644 --- a/include/qrcode/micro_qr/generator_degree.h +++ b/include/qrcode/micro_qr/generator_degree.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/mask_pattern.h b/include/qrcode/micro_qr/mask_pattern.h index 8f74ad3..7464156 100644 --- a/include/qrcode/micro_qr/mask_pattern.h +++ b/include/qrcode/micro_qr/mask_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/micro_qr.h b/include/qrcode/micro_qr/micro_qr.h index e301c81..4c787c0 100644 --- a/include/qrcode/micro_qr/micro_qr.h +++ b/include/qrcode/micro_qr/micro_qr.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/penalty_score.h b/include/qrcode/micro_qr/penalty_score.h index 9dd41ee..f1db1d3 100644 --- a/include/qrcode/micro_qr/penalty_score.h +++ b/include/qrcode/micro_qr/penalty_score.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/raw_code.h b/include/qrcode/micro_qr/raw_code.h index 7e969e7..1a7011c 100644 --- a/include/qrcode/micro_qr/raw_code.h +++ b/include/qrcode/micro_qr/raw_code.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/separator_pattern.h b/include/qrcode/micro_qr/separator_pattern.h index 1276910..b3713e1 100644 --- a/include/qrcode/micro_qr/separator_pattern.h +++ b/include/qrcode/micro_qr/separator_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/symbol_designator.h b/include/qrcode/micro_qr/symbol_designator.h index 3e0a9ab..272c4c9 100644 --- a/include/qrcode/micro_qr/symbol_designator.h +++ b/include/qrcode/micro_qr/symbol_designator.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/symbol_number.h b/include/qrcode/micro_qr/symbol_number.h index ca6371f..f06528e 100644 --- a/include/qrcode/micro_qr/symbol_number.h +++ b/include/qrcode/micro_qr/symbol_number.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/symbol_version.h b/include/qrcode/micro_qr/symbol_version.h index 1bbca9b..5c5dcbd 100644 --- a/include/qrcode/micro_qr/symbol_version.h +++ b/include/qrcode/micro_qr/symbol_version.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/timing_pattern.h b/include/qrcode/micro_qr/timing_pattern.h index 153d778..174dfe9 100644 --- a/include/qrcode/micro_qr/timing_pattern.h +++ b/include/qrcode/micro_qr/timing_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/total_data_bits.h b/include/qrcode/micro_qr/total_data_bits.h index dc31e98..a2174d5 100644 --- a/include/qrcode/micro_qr/total_data_bits.h +++ b/include/qrcode/micro_qr/total_data_bits.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/adjacent_score.h b/include/qrcode/qr/adjacent_score.h index 6b75fda..f0e7c3b 100644 --- a/include/qrcode/qr/adjacent_score.h +++ b/include/qrcode/qr/adjacent_score.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/alignment_pattern.h b/include/qrcode/qr/alignment_pattern.h index 4322706..6abc7b7 100644 --- a/include/qrcode/qr/alignment_pattern.h +++ b/include/qrcode/qr/alignment_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/best_version.h b/include/qrcode/qr/best_version.h index cbeabd4..e112d82 100644 --- a/include/qrcode/qr/best_version.h +++ b/include/qrcode/qr/best_version.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/code_bits.h b/include/qrcode/qr/code_bits.h index 2ccd715..6ee7eaa 100644 --- a/include/qrcode/qr/code_bits.h +++ b/include/qrcode/qr/code_bits.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/code_capacity.h b/include/qrcode/qr/code_capacity.h index 3f16f71..7e821d3 100644 --- a/include/qrcode/qr/code_capacity.h +++ b/include/qrcode/qr/code_capacity.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/dark_module_score.h b/include/qrcode/qr/dark_module_score.h index 76d967f..75bc5a9 100644 --- a/include/qrcode/qr/dark_module_score.h +++ b/include/qrcode/qr/dark_module_score.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/data_encoding.h b/include/qrcode/qr/data_encoding.h index 7bfb52b..7679d43 100644 --- a/include/qrcode/qr/data_encoding.h +++ b/include/qrcode/qr/data_encoding.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/data_length.h b/include/qrcode/qr/data_length.h index 1604416..30ca862 100644 --- a/include/qrcode/qr/data_length.h +++ b/include/qrcode/qr/data_length.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/encoders.h b/include/qrcode/qr/encoders.h index 56213ee..e2f77b1 100644 --- a/include/qrcode/qr/encoders.h +++ b/include/qrcode/qr/encoders.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/error_correction.h b/include/qrcode/qr/error_correction.h index bd1e06c..568c603 100644 --- a/include/qrcode/qr/error_correction.h +++ b/include/qrcode/qr/error_correction.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/finalize_symbol.h b/include/qrcode/qr/finalize_symbol.h index a047f9c..750d494 100644 --- a/include/qrcode/qr/finalize_symbol.h +++ b/include/qrcode/qr/finalize_symbol.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/finder_like_score.h b/include/qrcode/qr/finder_like_score.h index d7cd4f9..357bf0a 100644 --- a/include/qrcode/qr/finder_like_score.h +++ b/include/qrcode/qr/finder_like_score.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/finder_pattern.h b/include/qrcode/qr/finder_pattern.h index 8fb00d1..77fc6ce 100644 --- a/include/qrcode/qr/finder_pattern.h +++ b/include/qrcode/qr/finder_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/fit_version.h b/include/qrcode/qr/fit_version.h index 0712e4d..e5b6ca6 100644 --- a/include/qrcode/qr/fit_version.h +++ b/include/qrcode/qr/fit_version.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/format_information.h b/include/qrcode/qr/format_information.h index 47b5634..a391ccb 100644 --- a/include/qrcode/qr/format_information.h +++ b/include/qrcode/qr/format_information.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/generator_degree.h b/include/qrcode/qr/generator_degree.h index 712703d..7d43323 100644 --- a/include/qrcode/qr/generator_degree.h +++ b/include/qrcode/qr/generator_degree.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/mask_pattern.h b/include/qrcode/qr/mask_pattern.h index fb4985f..89fc733 100644 --- a/include/qrcode/qr/mask_pattern.h +++ b/include/qrcode/qr/mask_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/optimized_data_encoding.h b/include/qrcode/qr/optimized_data_encoding.h index 0d010b3..8acadd0 100644 --- a/include/qrcode/qr/optimized_data_encoding.h +++ b/include/qrcode/qr/optimized_data_encoding.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/optimized_data_length.h b/include/qrcode/qr/optimized_data_length.h index f02e984..a2b5c46 100644 --- a/include/qrcode/qr/optimized_data_length.h +++ b/include/qrcode/qr/optimized_data_length.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/penalty_score.h b/include/qrcode/qr/penalty_score.h index 8306ee9..ce3faf6 100644 --- a/include/qrcode/qr/penalty_score.h +++ b/include/qrcode/qr/penalty_score.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/penalty_weight.h b/include/qrcode/qr/penalty_weight.h index 2b90752..b75558a 100644 --- a/include/qrcode/qr/penalty_weight.h +++ b/include/qrcode/qr/penalty_weight.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/qr.h b/include/qrcode/qr/qr.h index c8b0ce4..99c02ae 100644 --- a/include/qrcode/qr/qr.h +++ b/include/qrcode/qr/qr.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/raw_code.h b/include/qrcode/qr/raw_code.h index e22bfd0..ba06378 100644 --- a/include/qrcode/qr/raw_code.h +++ b/include/qrcode/qr/raw_code.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/same_color_score.h b/include/qrcode/qr/same_color_score.h index ee69d17..00e21be 100644 --- a/include/qrcode/qr/same_color_score.h +++ b/include/qrcode/qr/same_color_score.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/separator_pattern.h b/include/qrcode/qr/separator_pattern.h index 3addf06..416e105 100644 --- a/include/qrcode/qr/separator_pattern.h +++ b/include/qrcode/qr/separator_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/symbol_designator.h b/include/qrcode/qr/symbol_designator.h index 62827b0..6b360fd 100644 --- a/include/qrcode/qr/symbol_designator.h +++ b/include/qrcode/qr/symbol_designator.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/symbol_version.h b/include/qrcode/qr/symbol_version.h index 811a680..b2f960c 100644 --- a/include/qrcode/qr/symbol_version.h +++ b/include/qrcode/qr/symbol_version.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/timing_pattern.h b/include/qrcode/qr/timing_pattern.h index fa9c794..1d5aa28 100644 --- a/include/qrcode/qr/timing_pattern.h +++ b/include/qrcode/qr/timing_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/total_blocks.h b/include/qrcode/qr/total_blocks.h index 00e2512..f4e4af3 100644 --- a/include/qrcode/qr/total_blocks.h +++ b/include/qrcode/qr/total_blocks.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/total_data_bits.h b/include/qrcode/qr/total_data_bits.h index a8446b8..6ac3bf7 100644 --- a/include/qrcode/qr/total_data_bits.h +++ b/include/qrcode/qr/total_data_bits.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/version_category.h b/include/qrcode/qr/version_category.h index c657257..3d69cd0 100644 --- a/include/qrcode/qr/version_category.h +++ b/include/qrcode/qr/version_category.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/version_information.h b/include/qrcode/qr/version_information.h index a4e7011..562a622 100644 --- a/include/qrcode/qr/version_information.h +++ b/include/qrcode/qr/version_information.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qrcode.h b/include/qrcode/qrcode.h index e9291b7..abf6bea 100644 --- a/include/qrcode/qrcode.h +++ b/include/qrcode/qrcode.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/result.h b/include/qrcode/result.h index 5bf6c9f..5595569 100644 --- a/include/qrcode/result.h +++ b/include/qrcode/result.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/apply_mask.h b/include/qrcode/structure/apply_mask.h index a3825a4..75bc9c4 100644 --- a/include/qrcode/structure/apply_mask.h +++ b/include/qrcode/structure/apply_mask.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/cartesian_product_view.h b/include/qrcode/structure/cartesian_product_view.h index 96ae030..fbd4015 100644 --- a/include/qrcode/structure/cartesian_product_view.h +++ b/include/qrcode/structure/cartesian_product_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/data_masking.h b/include/qrcode/structure/data_masking.h index 48a334b..dd84eeb 100644 --- a/include/qrcode/structure/data_masking.h +++ b/include/qrcode/structure/data_masking.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/dimension.h b/include/qrcode/structure/dimension.h index db4e82f..25fdc8b 100644 --- a/include/qrcode/structure/dimension.h +++ b/include/qrcode/structure/dimension.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/element_view.h b/include/qrcode/structure/element_view.h index 740477c..405111f 100644 --- a/include/qrcode/structure/element_view.h +++ b/include/qrcode/structure/element_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/horizontal_view.h b/include/qrcode/structure/horizontal_view.h index db08f93..d322399 100644 --- a/include/qrcode/structure/horizontal_view.h +++ b/include/qrcode/structure/horizontal_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/make_matrix.h b/include/qrcode/structure/make_matrix.h index a4ec9d4..79d4437 100644 --- a/include/qrcode/structure/make_matrix.h +++ b/include/qrcode/structure/make_matrix.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/matrix.h b/include/qrcode/structure/matrix.h index 57e5480..c13b201 100644 --- a/include/qrcode/structure/matrix.h +++ b/include/qrcode/structure/matrix.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/module.h b/include/qrcode/structure/module.h index e8f4ecd..7e0b59c 100644 --- a/include/qrcode/structure/module.h +++ b/include/qrcode/structure/module.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/module_traits.h b/include/qrcode/structure/module_traits.h index 639608e..db3588a 100644 --- a/include/qrcode/structure/module_traits.h +++ b/include/qrcode/structure/module_traits.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/occupied_columns.h b/include/qrcode/structure/occupied_columns.h index 975c1c3..8b78e20 100644 --- a/include/qrcode/structure/occupied_columns.h +++ b/include/qrcode/structure/occupied_columns.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/place_data.h b/include/qrcode/structure/place_data.h index 7e54d59..e3f9279 100644 --- a/include/qrcode/structure/place_data.h +++ b/include/qrcode/structure/place_data.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/position.h b/include/qrcode/structure/position.h index 3c0d4b8..626c412 100644 --- a/include/qrcode/structure/position.h +++ b/include/qrcode/structure/position.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/separator_pattern.h b/include/qrcode/structure/separator_pattern.h index 8ac84b3..5c81f16 100644 --- a/include/qrcode/structure/separator_pattern.h +++ b/include/qrcode/structure/separator_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/skip_column_view.h b/include/qrcode/structure/skip_column_view.h index a9492d2..10e523d 100644 --- a/include/qrcode/structure/skip_column_view.h +++ b/include/qrcode/structure/skip_column_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/timing_pattern.h b/include/qrcode/structure/timing_pattern.h index 7d103a0..65f008c 100644 --- a/include/qrcode/structure/timing_pattern.h +++ b/include/qrcode/structure/timing_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/vertical_view.h b/include/qrcode/structure/vertical_view.h index 9de210f..45bddc2 100644 --- a/include/qrcode/structure/vertical_view.h +++ b/include/qrcode/structure/vertical_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/zigzag_view.h b/include/qrcode/structure/zigzag_view.h index 4ccfcb5..3cd2ec6 100644 --- a/include/qrcode/structure/zigzag_view.h +++ b/include/qrcode/structure/zigzag_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/svg.h b/include/qrcode/svg.h index 543d357..0cc3a09 100644 --- a/include/qrcode/svg.h +++ b/include/qrcode/svg.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/symbol.h b/include/qrcode/symbol.h index c66a7cd..e08ac26 100644 --- a/include/qrcode/symbol.h +++ b/include/qrcode/symbol.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index e370357..11e99db 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,7 +1,7 @@ # # The MIT License # -# Copyright (c) 2021 Sebastian Bauer +# Copyright (c) 2021 Melissa Bauer # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal diff --git a/test/main.cpp b/test/main.cpp index f17377a..3eaa810 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Sebastian Bauer + * Copyright (c) 2021 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal From 14af87d0ac4dd3ef6b4ce998a73a072826b66301 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:31:11 +0200 Subject: [PATCH 49/98] update copyright --- CMakeLists.txt | 2 +- LICENSE | 2 +- include/cx/cmath.h | 2 +- include/cx/vector.h | 2 +- include/qrcode/code/bit_view.h | 2 +- include/qrcode/code/block_info.h | 2 +- include/qrcode/code/byte_view.h | 2 +- include/qrcode/code/code_block.h | 2 +- include/qrcode/code/code_capacity.h | 2 +- include/qrcode/code/codeword_view.h | 2 +- include/qrcode/code/error_correction_code.h | 2 +- include/qrcode/code/error_correction_polynomial.h | 2 +- include/qrcode/code/extended_remainder.h | 2 +- include/qrcode/code/format_encoding.h | 2 +- include/qrcode/code/gf2p8.h | 2 +- include/qrcode/code/lfsr.h | 2 +- include/qrcode/code/padding_view.h | 2 +- include/qrcode/code/polynomial.h | 2 +- include/qrcode/code/polynomial_view.h | 2 +- include/qrcode/code/sequence.h | 2 +- include/qrcode/code/sequence_description.h | 2 +- include/qrcode/code/sequence_permutation.h | 2 +- include/qrcode/code/sequence_view.h | 2 +- include/qrcode/data/alphanumeric.h | 2 +- include/qrcode/data/alphanumeric_encoder.h | 2 +- include/qrcode/data/alphanumeric_encoding.h | 2 +- include/qrcode/data/best_fit/best_encoder.h | 2 +- include/qrcode/data/best_fit/data_encoding.h | 2 +- include/qrcode/data/best_fit/data_length.h | 2 +- include/qrcode/data/bit_stream.h | 2 +- include/qrcode/data/byte.h | 2 +- include/qrcode/data/byte_encoder.h | 2 +- include/qrcode/data/encoders.h | 2 +- include/qrcode/data/indicator.h | 2 +- include/qrcode/data/kanji.h | 2 +- include/qrcode/data/kanji_encoder.h | 2 +- include/qrcode/data/kanji_encoding.h | 2 +- include/qrcode/data/numeric.h | 2 +- include/qrcode/data/numeric_encoder.h | 2 +- include/qrcode/data/numeric_encoding.h | 2 +- include/qrcode/data/optimizer/data_encoding.h | 2 +- include/qrcode/data/optimizer/data_length.h | 2 +- include/qrcode/data/optimizer/determine_mode.h | 2 +- include/qrcode/data/optimizer/dispatch_mode.h | 2 +- include/qrcode/data/optimizer/mode.h | 2 +- include/qrcode/data/optimizer/optimize.h | 2 +- include/qrcode/data/optimizer/optimizer_state.h | 2 +- include/qrcode/eci/assignment_number.h | 2 +- include/qrcode/eci/message_header.h | 2 +- include/qrcode/eci/view.h | 2 +- include/qrcode/micro_qr/best_version.h | 2 +- include/qrcode/micro_qr/code_bits.h | 2 +- include/qrcode/micro_qr/code_capacity.h | 2 +- include/qrcode/micro_qr/encoders.h | 2 +- include/qrcode/micro_qr/error_correction.h | 2 +- include/qrcode/micro_qr/finalize_symbol.h | 2 +- include/qrcode/micro_qr/finder_pattern.h | 2 +- include/qrcode/micro_qr/format_information.h | 2 +- include/qrcode/micro_qr/generator_degree.h | 2 +- include/qrcode/micro_qr/mask_pattern.h | 2 +- include/qrcode/micro_qr/micro_qr.h | 2 +- include/qrcode/micro_qr/penalty_score.h | 2 +- include/qrcode/micro_qr/raw_code.h | 2 +- include/qrcode/micro_qr/separator_pattern.h | 2 +- include/qrcode/micro_qr/symbol_designator.h | 2 +- include/qrcode/micro_qr/symbol_number.h | 2 +- include/qrcode/micro_qr/symbol_version.h | 2 +- include/qrcode/micro_qr/timing_pattern.h | 2 +- include/qrcode/micro_qr/total_data_bits.h | 2 +- include/qrcode/qr/adjacent_score.h | 2 +- include/qrcode/qr/alignment_pattern.h | 2 +- include/qrcode/qr/best_version.h | 2 +- include/qrcode/qr/code_bits.h | 2 +- include/qrcode/qr/code_capacity.h | 2 +- include/qrcode/qr/dark_module_score.h | 2 +- include/qrcode/qr/data_encoding.h | 2 +- include/qrcode/qr/data_length.h | 2 +- include/qrcode/qr/encoders.h | 2 +- include/qrcode/qr/error_correction.h | 2 +- include/qrcode/qr/finalize_symbol.h | 2 +- include/qrcode/qr/finder_like_score.h | 2 +- include/qrcode/qr/finder_pattern.h | 2 +- include/qrcode/qr/fit_version.h | 2 +- include/qrcode/qr/format_information.h | 2 +- include/qrcode/qr/generator_degree.h | 2 +- include/qrcode/qr/mask_pattern.h | 2 +- include/qrcode/qr/optimized_data_encoding.h | 2 +- include/qrcode/qr/optimized_data_length.h | 2 +- include/qrcode/qr/penalty_score.h | 2 +- include/qrcode/qr/penalty_weight.h | 2 +- include/qrcode/qr/qr.h | 2 +- include/qrcode/qr/raw_code.h | 2 +- include/qrcode/qr/same_color_score.h | 2 +- include/qrcode/qr/separator_pattern.h | 2 +- include/qrcode/qr/symbol_designator.h | 2 +- include/qrcode/qr/symbol_version.h | 2 +- include/qrcode/qr/timing_pattern.h | 2 +- include/qrcode/qr/total_blocks.h | 2 +- include/qrcode/qr/total_data_bits.h | 2 +- include/qrcode/qr/version_category.h | 2 +- include/qrcode/qr/version_information.h | 2 +- include/qrcode/qrcode.h | 2 +- include/qrcode/result.h | 2 +- include/qrcode/structure/apply_mask.h | 2 +- include/qrcode/structure/cartesian_product_view.h | 2 +- include/qrcode/structure/data_masking.h | 2 +- include/qrcode/structure/dimension.h | 2 +- include/qrcode/structure/element_view.h | 2 +- include/qrcode/structure/horizontal_view.h | 2 +- include/qrcode/structure/make_matrix.h | 2 +- include/qrcode/structure/matrix.h | 2 +- include/qrcode/structure/module.h | 2 +- include/qrcode/structure/module_traits.h | 2 +- include/qrcode/structure/occupied_columns.h | 2 +- include/qrcode/structure/place_data.h | 2 +- include/qrcode/structure/position.h | 2 +- include/qrcode/structure/separator_pattern.h | 2 +- include/qrcode/structure/skip_column_view.h | 2 +- include/qrcode/structure/timing_pattern.h | 2 +- include/qrcode/structure/vertical_view.h | 2 +- include/qrcode/structure/zigzag_view.h | 2 +- include/qrcode/svg.h | 2 +- include/qrcode/symbol.h | 2 +- test/CMakeLists.txt | 2 +- test/main.cpp | 2 +- 125 files changed, 125 insertions(+), 125 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 77cd6e9..4c921b3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ # # The MIT License # -# Copyright (c) 2021 Melissa Bauer +# Copyright (c) 2025 Melissa Bauer # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal diff --git a/LICENSE b/LICENSE index 8ed425e..08b8a55 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ -Copyright (c) 2021 Melissa Bauer +Copyright (c) 2025 Melissa Bauer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/include/cx/cmath.h b/include/cx/cmath.h index 545c0d6..9084ea9 100644 --- a/include/cx/cmath.h +++ b/include/cx/cmath.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/cx/vector.h b/include/cx/vector.h index 1367d61..8a9f22a 100644 --- a/include/cx/vector.h +++ b/include/cx/vector.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/bit_view.h b/include/qrcode/code/bit_view.h index ac9801c..04a6ac6 100644 --- a/include/qrcode/code/bit_view.h +++ b/include/qrcode/code/bit_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/block_info.h b/include/qrcode/code/block_info.h index 5d1924e..981b0da 100644 --- a/include/qrcode/code/block_info.h +++ b/include/qrcode/code/block_info.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/byte_view.h b/include/qrcode/code/byte_view.h index 1a6a821..7f0576d 100644 --- a/include/qrcode/code/byte_view.h +++ b/include/qrcode/code/byte_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/code_block.h b/include/qrcode/code/code_block.h index 95797c9..0aa72ae 100644 --- a/include/qrcode/code/code_block.h +++ b/include/qrcode/code/code_block.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/code_capacity.h b/include/qrcode/code/code_capacity.h index 6227abb..f9c3a5d 100644 --- a/include/qrcode/code/code_capacity.h +++ b/include/qrcode/code/code_capacity.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/codeword_view.h b/include/qrcode/code/codeword_view.h index b2049de..1eeea9f 100644 --- a/include/qrcode/code/codeword_view.h +++ b/include/qrcode/code/codeword_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/error_correction_code.h b/include/qrcode/code/error_correction_code.h index 739ca99..0159432 100644 --- a/include/qrcode/code/error_correction_code.h +++ b/include/qrcode/code/error_correction_code.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/error_correction_polynomial.h b/include/qrcode/code/error_correction_polynomial.h index 72fdf90..ee30099 100644 --- a/include/qrcode/code/error_correction_polynomial.h +++ b/include/qrcode/code/error_correction_polynomial.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/extended_remainder.h b/include/qrcode/code/extended_remainder.h index cffd340..025d186 100644 --- a/include/qrcode/code/extended_remainder.h +++ b/include/qrcode/code/extended_remainder.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/format_encoding.h b/include/qrcode/code/format_encoding.h index bcedc05..3fdc2de 100644 --- a/include/qrcode/code/format_encoding.h +++ b/include/qrcode/code/format_encoding.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/gf2p8.h b/include/qrcode/code/gf2p8.h index 62a7c38..5b7da4a 100644 --- a/include/qrcode/code/gf2p8.h +++ b/include/qrcode/code/gf2p8.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/lfsr.h b/include/qrcode/code/lfsr.h index 0d40ee5..380aebf 100644 --- a/include/qrcode/code/lfsr.h +++ b/include/qrcode/code/lfsr.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/padding_view.h b/include/qrcode/code/padding_view.h index 6470120..1d769ec 100644 --- a/include/qrcode/code/padding_view.h +++ b/include/qrcode/code/padding_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/polynomial.h b/include/qrcode/code/polynomial.h index 7c9521e..932a776 100644 --- a/include/qrcode/code/polynomial.h +++ b/include/qrcode/code/polynomial.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/polynomial_view.h b/include/qrcode/code/polynomial_view.h index 30d4533..7ebda76 100644 --- a/include/qrcode/code/polynomial_view.h +++ b/include/qrcode/code/polynomial_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/sequence.h b/include/qrcode/code/sequence.h index e9a5882..e1e6aa5 100644 --- a/include/qrcode/code/sequence.h +++ b/include/qrcode/code/sequence.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/sequence_description.h b/include/qrcode/code/sequence_description.h index 4630970..65f02b5 100644 --- a/include/qrcode/code/sequence_description.h +++ b/include/qrcode/code/sequence_description.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/sequence_permutation.h b/include/qrcode/code/sequence_permutation.h index 784e357..71a148b 100644 --- a/include/qrcode/code/sequence_permutation.h +++ b/include/qrcode/code/sequence_permutation.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/code/sequence_view.h b/include/qrcode/code/sequence_view.h index bae703d..a4794df 100644 --- a/include/qrcode/code/sequence_view.h +++ b/include/qrcode/code/sequence_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/alphanumeric.h b/include/qrcode/data/alphanumeric.h index 5153bfb..05c1637 100644 --- a/include/qrcode/data/alphanumeric.h +++ b/include/qrcode/data/alphanumeric.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/alphanumeric_encoder.h b/include/qrcode/data/alphanumeric_encoder.h index 3375831..e9c0526 100644 --- a/include/qrcode/data/alphanumeric_encoder.h +++ b/include/qrcode/data/alphanumeric_encoder.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/alphanumeric_encoding.h b/include/qrcode/data/alphanumeric_encoding.h index c95bc05..a1a78b5 100644 --- a/include/qrcode/data/alphanumeric_encoding.h +++ b/include/qrcode/data/alphanumeric_encoding.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/best_fit/best_encoder.h b/include/qrcode/data/best_fit/best_encoder.h index 842f814..869e90a 100644 --- a/include/qrcode/data/best_fit/best_encoder.h +++ b/include/qrcode/data/best_fit/best_encoder.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/best_fit/data_encoding.h b/include/qrcode/data/best_fit/data_encoding.h index a13c76b..56ac127 100644 --- a/include/qrcode/data/best_fit/data_encoding.h +++ b/include/qrcode/data/best_fit/data_encoding.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/best_fit/data_length.h b/include/qrcode/data/best_fit/data_length.h index fa07dc0..b571d86 100644 --- a/include/qrcode/data/best_fit/data_length.h +++ b/include/qrcode/data/best_fit/data_length.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/bit_stream.h b/include/qrcode/data/bit_stream.h index 2c05b64..3a4050d 100644 --- a/include/qrcode/data/bit_stream.h +++ b/include/qrcode/data/bit_stream.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/byte.h b/include/qrcode/data/byte.h index 8308f51..d5cec8b 100644 --- a/include/qrcode/data/byte.h +++ b/include/qrcode/data/byte.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/byte_encoder.h b/include/qrcode/data/byte_encoder.h index 0c1d280..cd15bc6 100644 --- a/include/qrcode/data/byte_encoder.h +++ b/include/qrcode/data/byte_encoder.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/encoders.h b/include/qrcode/data/encoders.h index b4bf697..742fc97 100644 --- a/include/qrcode/data/encoders.h +++ b/include/qrcode/data/encoders.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/indicator.h b/include/qrcode/data/indicator.h index 2a6b549..d20599e 100644 --- a/include/qrcode/data/indicator.h +++ b/include/qrcode/data/indicator.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/kanji.h b/include/qrcode/data/kanji.h index 1a9976d..0af02e3 100644 --- a/include/qrcode/data/kanji.h +++ b/include/qrcode/data/kanji.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/kanji_encoder.h b/include/qrcode/data/kanji_encoder.h index c672c5f..df58796 100644 --- a/include/qrcode/data/kanji_encoder.h +++ b/include/qrcode/data/kanji_encoder.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/kanji_encoding.h b/include/qrcode/data/kanji_encoding.h index 412e846..e10ca87 100644 --- a/include/qrcode/data/kanji_encoding.h +++ b/include/qrcode/data/kanji_encoding.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/numeric.h b/include/qrcode/data/numeric.h index 10e4753..293b9ec 100644 --- a/include/qrcode/data/numeric.h +++ b/include/qrcode/data/numeric.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/numeric_encoder.h b/include/qrcode/data/numeric_encoder.h index c4897d0..2bdfbce 100644 --- a/include/qrcode/data/numeric_encoder.h +++ b/include/qrcode/data/numeric_encoder.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/numeric_encoding.h b/include/qrcode/data/numeric_encoding.h index 427c0bf..289195d 100644 --- a/include/qrcode/data/numeric_encoding.h +++ b/include/qrcode/data/numeric_encoding.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/optimizer/data_encoding.h b/include/qrcode/data/optimizer/data_encoding.h index d130450..1b6e1d6 100644 --- a/include/qrcode/data/optimizer/data_encoding.h +++ b/include/qrcode/data/optimizer/data_encoding.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/optimizer/data_length.h b/include/qrcode/data/optimizer/data_length.h index 395f413..9a80414 100644 --- a/include/qrcode/data/optimizer/data_length.h +++ b/include/qrcode/data/optimizer/data_length.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/optimizer/determine_mode.h b/include/qrcode/data/optimizer/determine_mode.h index f756c89..3d0bf9c 100644 --- a/include/qrcode/data/optimizer/determine_mode.h +++ b/include/qrcode/data/optimizer/determine_mode.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/optimizer/dispatch_mode.h b/include/qrcode/data/optimizer/dispatch_mode.h index dc5e708..6b288a8 100644 --- a/include/qrcode/data/optimizer/dispatch_mode.h +++ b/include/qrcode/data/optimizer/dispatch_mode.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/optimizer/mode.h b/include/qrcode/data/optimizer/mode.h index b029549..88069c6 100644 --- a/include/qrcode/data/optimizer/mode.h +++ b/include/qrcode/data/optimizer/mode.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/optimizer/optimize.h b/include/qrcode/data/optimizer/optimize.h index 2123fc7..29f3d2e 100644 --- a/include/qrcode/data/optimizer/optimize.h +++ b/include/qrcode/data/optimizer/optimize.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/data/optimizer/optimizer_state.h b/include/qrcode/data/optimizer/optimizer_state.h index e85f443..18f3a83 100644 --- a/include/qrcode/data/optimizer/optimizer_state.h +++ b/include/qrcode/data/optimizer/optimizer_state.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/eci/assignment_number.h b/include/qrcode/eci/assignment_number.h index 1bb430a..77d99b8 100644 --- a/include/qrcode/eci/assignment_number.h +++ b/include/qrcode/eci/assignment_number.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/eci/message_header.h b/include/qrcode/eci/message_header.h index cdf6d97..17b3405 100644 --- a/include/qrcode/eci/message_header.h +++ b/include/qrcode/eci/message_header.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/eci/view.h b/include/qrcode/eci/view.h index c2e33f3..a68e37e 100644 --- a/include/qrcode/eci/view.h +++ b/include/qrcode/eci/view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/best_version.h b/include/qrcode/micro_qr/best_version.h index 8cb3110..10b4299 100644 --- a/include/qrcode/micro_qr/best_version.h +++ b/include/qrcode/micro_qr/best_version.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/code_bits.h b/include/qrcode/micro_qr/code_bits.h index 6130f1c..e5e4566 100644 --- a/include/qrcode/micro_qr/code_bits.h +++ b/include/qrcode/micro_qr/code_bits.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/code_capacity.h b/include/qrcode/micro_qr/code_capacity.h index c410790..e0e6fda 100644 --- a/include/qrcode/micro_qr/code_capacity.h +++ b/include/qrcode/micro_qr/code_capacity.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/encoders.h b/include/qrcode/micro_qr/encoders.h index 1f4a7ba..2105f70 100644 --- a/include/qrcode/micro_qr/encoders.h +++ b/include/qrcode/micro_qr/encoders.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/error_correction.h b/include/qrcode/micro_qr/error_correction.h index 11edd83..e4889e0 100644 --- a/include/qrcode/micro_qr/error_correction.h +++ b/include/qrcode/micro_qr/error_correction.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/finalize_symbol.h b/include/qrcode/micro_qr/finalize_symbol.h index cbb0217..a5ca7f9 100644 --- a/include/qrcode/micro_qr/finalize_symbol.h +++ b/include/qrcode/micro_qr/finalize_symbol.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/finder_pattern.h b/include/qrcode/micro_qr/finder_pattern.h index a045c77..bbce990 100644 --- a/include/qrcode/micro_qr/finder_pattern.h +++ b/include/qrcode/micro_qr/finder_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/format_information.h b/include/qrcode/micro_qr/format_information.h index adc28b8..cea8523 100644 --- a/include/qrcode/micro_qr/format_information.h +++ b/include/qrcode/micro_qr/format_information.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/generator_degree.h b/include/qrcode/micro_qr/generator_degree.h index 84c5594..067e13e 100644 --- a/include/qrcode/micro_qr/generator_degree.h +++ b/include/qrcode/micro_qr/generator_degree.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/mask_pattern.h b/include/qrcode/micro_qr/mask_pattern.h index 7464156..e872869 100644 --- a/include/qrcode/micro_qr/mask_pattern.h +++ b/include/qrcode/micro_qr/mask_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/micro_qr.h b/include/qrcode/micro_qr/micro_qr.h index 4c787c0..773819d 100644 --- a/include/qrcode/micro_qr/micro_qr.h +++ b/include/qrcode/micro_qr/micro_qr.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/penalty_score.h b/include/qrcode/micro_qr/penalty_score.h index f1db1d3..35cda6a 100644 --- a/include/qrcode/micro_qr/penalty_score.h +++ b/include/qrcode/micro_qr/penalty_score.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/raw_code.h b/include/qrcode/micro_qr/raw_code.h index 1a7011c..f4b7bbc 100644 --- a/include/qrcode/micro_qr/raw_code.h +++ b/include/qrcode/micro_qr/raw_code.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/separator_pattern.h b/include/qrcode/micro_qr/separator_pattern.h index b3713e1..1a809d0 100644 --- a/include/qrcode/micro_qr/separator_pattern.h +++ b/include/qrcode/micro_qr/separator_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/symbol_designator.h b/include/qrcode/micro_qr/symbol_designator.h index 272c4c9..4155888 100644 --- a/include/qrcode/micro_qr/symbol_designator.h +++ b/include/qrcode/micro_qr/symbol_designator.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/symbol_number.h b/include/qrcode/micro_qr/symbol_number.h index f06528e..050fbb5 100644 --- a/include/qrcode/micro_qr/symbol_number.h +++ b/include/qrcode/micro_qr/symbol_number.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/symbol_version.h b/include/qrcode/micro_qr/symbol_version.h index 5c5dcbd..5949fc3 100644 --- a/include/qrcode/micro_qr/symbol_version.h +++ b/include/qrcode/micro_qr/symbol_version.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/timing_pattern.h b/include/qrcode/micro_qr/timing_pattern.h index 174dfe9..2ed8a9a 100644 --- a/include/qrcode/micro_qr/timing_pattern.h +++ b/include/qrcode/micro_qr/timing_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/micro_qr/total_data_bits.h b/include/qrcode/micro_qr/total_data_bits.h index a2174d5..e485324 100644 --- a/include/qrcode/micro_qr/total_data_bits.h +++ b/include/qrcode/micro_qr/total_data_bits.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/adjacent_score.h b/include/qrcode/qr/adjacent_score.h index f0e7c3b..9e634b4 100644 --- a/include/qrcode/qr/adjacent_score.h +++ b/include/qrcode/qr/adjacent_score.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/alignment_pattern.h b/include/qrcode/qr/alignment_pattern.h index 6abc7b7..fa1e244 100644 --- a/include/qrcode/qr/alignment_pattern.h +++ b/include/qrcode/qr/alignment_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/best_version.h b/include/qrcode/qr/best_version.h index e112d82..23a0ba7 100644 --- a/include/qrcode/qr/best_version.h +++ b/include/qrcode/qr/best_version.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/code_bits.h b/include/qrcode/qr/code_bits.h index 6ee7eaa..2bc2ef7 100644 --- a/include/qrcode/qr/code_bits.h +++ b/include/qrcode/qr/code_bits.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/code_capacity.h b/include/qrcode/qr/code_capacity.h index 7e821d3..9e149b9 100644 --- a/include/qrcode/qr/code_capacity.h +++ b/include/qrcode/qr/code_capacity.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/dark_module_score.h b/include/qrcode/qr/dark_module_score.h index 75bc5a9..262b00c 100644 --- a/include/qrcode/qr/dark_module_score.h +++ b/include/qrcode/qr/dark_module_score.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/data_encoding.h b/include/qrcode/qr/data_encoding.h index 7679d43..0c63bce 100644 --- a/include/qrcode/qr/data_encoding.h +++ b/include/qrcode/qr/data_encoding.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/data_length.h b/include/qrcode/qr/data_length.h index 30ca862..2b03555 100644 --- a/include/qrcode/qr/data_length.h +++ b/include/qrcode/qr/data_length.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/encoders.h b/include/qrcode/qr/encoders.h index e2f77b1..bd6de52 100644 --- a/include/qrcode/qr/encoders.h +++ b/include/qrcode/qr/encoders.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/error_correction.h b/include/qrcode/qr/error_correction.h index 568c603..bb6d2ae 100644 --- a/include/qrcode/qr/error_correction.h +++ b/include/qrcode/qr/error_correction.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/finalize_symbol.h b/include/qrcode/qr/finalize_symbol.h index 750d494..eb2905c 100644 --- a/include/qrcode/qr/finalize_symbol.h +++ b/include/qrcode/qr/finalize_symbol.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/finder_like_score.h b/include/qrcode/qr/finder_like_score.h index 357bf0a..7a36ce3 100644 --- a/include/qrcode/qr/finder_like_score.h +++ b/include/qrcode/qr/finder_like_score.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/finder_pattern.h b/include/qrcode/qr/finder_pattern.h index 77fc6ce..c3b8992 100644 --- a/include/qrcode/qr/finder_pattern.h +++ b/include/qrcode/qr/finder_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/fit_version.h b/include/qrcode/qr/fit_version.h index e5b6ca6..5cd3d1d 100644 --- a/include/qrcode/qr/fit_version.h +++ b/include/qrcode/qr/fit_version.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/format_information.h b/include/qrcode/qr/format_information.h index a391ccb..2f1da10 100644 --- a/include/qrcode/qr/format_information.h +++ b/include/qrcode/qr/format_information.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/generator_degree.h b/include/qrcode/qr/generator_degree.h index 7d43323..0a879b6 100644 --- a/include/qrcode/qr/generator_degree.h +++ b/include/qrcode/qr/generator_degree.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/mask_pattern.h b/include/qrcode/qr/mask_pattern.h index 89fc733..a01ef1a 100644 --- a/include/qrcode/qr/mask_pattern.h +++ b/include/qrcode/qr/mask_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/optimized_data_encoding.h b/include/qrcode/qr/optimized_data_encoding.h index 8acadd0..8cad218 100644 --- a/include/qrcode/qr/optimized_data_encoding.h +++ b/include/qrcode/qr/optimized_data_encoding.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/optimized_data_length.h b/include/qrcode/qr/optimized_data_length.h index a2b5c46..64920d1 100644 --- a/include/qrcode/qr/optimized_data_length.h +++ b/include/qrcode/qr/optimized_data_length.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/penalty_score.h b/include/qrcode/qr/penalty_score.h index ce3faf6..bae5d39 100644 --- a/include/qrcode/qr/penalty_score.h +++ b/include/qrcode/qr/penalty_score.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/penalty_weight.h b/include/qrcode/qr/penalty_weight.h index b75558a..ab79428 100644 --- a/include/qrcode/qr/penalty_weight.h +++ b/include/qrcode/qr/penalty_weight.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/qr.h b/include/qrcode/qr/qr.h index 99c02ae..2a3ca0a 100644 --- a/include/qrcode/qr/qr.h +++ b/include/qrcode/qr/qr.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/raw_code.h b/include/qrcode/qr/raw_code.h index ba06378..4029e36 100644 --- a/include/qrcode/qr/raw_code.h +++ b/include/qrcode/qr/raw_code.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/same_color_score.h b/include/qrcode/qr/same_color_score.h index 00e21be..5a53b46 100644 --- a/include/qrcode/qr/same_color_score.h +++ b/include/qrcode/qr/same_color_score.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/separator_pattern.h b/include/qrcode/qr/separator_pattern.h index 416e105..de3ece6 100644 --- a/include/qrcode/qr/separator_pattern.h +++ b/include/qrcode/qr/separator_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/symbol_designator.h b/include/qrcode/qr/symbol_designator.h index 6b360fd..56ae311 100644 --- a/include/qrcode/qr/symbol_designator.h +++ b/include/qrcode/qr/symbol_designator.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/symbol_version.h b/include/qrcode/qr/symbol_version.h index b2f960c..d514716 100644 --- a/include/qrcode/qr/symbol_version.h +++ b/include/qrcode/qr/symbol_version.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/timing_pattern.h b/include/qrcode/qr/timing_pattern.h index 1d5aa28..4967b50 100644 --- a/include/qrcode/qr/timing_pattern.h +++ b/include/qrcode/qr/timing_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/total_blocks.h b/include/qrcode/qr/total_blocks.h index f4e4af3..fcbb3eb 100644 --- a/include/qrcode/qr/total_blocks.h +++ b/include/qrcode/qr/total_blocks.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/total_data_bits.h b/include/qrcode/qr/total_data_bits.h index 6ac3bf7..3900dc2 100644 --- a/include/qrcode/qr/total_data_bits.h +++ b/include/qrcode/qr/total_data_bits.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/version_category.h b/include/qrcode/qr/version_category.h index 3d69cd0..858ae61 100644 --- a/include/qrcode/qr/version_category.h +++ b/include/qrcode/qr/version_category.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qr/version_information.h b/include/qrcode/qr/version_information.h index 562a622..664d723 100644 --- a/include/qrcode/qr/version_information.h +++ b/include/qrcode/qr/version_information.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/qrcode.h b/include/qrcode/qrcode.h index abf6bea..977fa14 100644 --- a/include/qrcode/qrcode.h +++ b/include/qrcode/qrcode.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/result.h b/include/qrcode/result.h index 5595569..f473722 100644 --- a/include/qrcode/result.h +++ b/include/qrcode/result.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/apply_mask.h b/include/qrcode/structure/apply_mask.h index 75bc9c4..22a15f4 100644 --- a/include/qrcode/structure/apply_mask.h +++ b/include/qrcode/structure/apply_mask.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/cartesian_product_view.h b/include/qrcode/structure/cartesian_product_view.h index fbd4015..c7413d0 100644 --- a/include/qrcode/structure/cartesian_product_view.h +++ b/include/qrcode/structure/cartesian_product_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/data_masking.h b/include/qrcode/structure/data_masking.h index dd84eeb..33a5f16 100644 --- a/include/qrcode/structure/data_masking.h +++ b/include/qrcode/structure/data_masking.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/dimension.h b/include/qrcode/structure/dimension.h index 25fdc8b..aecbc9d 100644 --- a/include/qrcode/structure/dimension.h +++ b/include/qrcode/structure/dimension.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/element_view.h b/include/qrcode/structure/element_view.h index 405111f..98ec555 100644 --- a/include/qrcode/structure/element_view.h +++ b/include/qrcode/structure/element_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/horizontal_view.h b/include/qrcode/structure/horizontal_view.h index d322399..7f5a177 100644 --- a/include/qrcode/structure/horizontal_view.h +++ b/include/qrcode/structure/horizontal_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/make_matrix.h b/include/qrcode/structure/make_matrix.h index 79d4437..69ffbd7 100644 --- a/include/qrcode/structure/make_matrix.h +++ b/include/qrcode/structure/make_matrix.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/matrix.h b/include/qrcode/structure/matrix.h index c13b201..166afbe 100644 --- a/include/qrcode/structure/matrix.h +++ b/include/qrcode/structure/matrix.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/module.h b/include/qrcode/structure/module.h index 7e0b59c..081b418 100644 --- a/include/qrcode/structure/module.h +++ b/include/qrcode/structure/module.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/module_traits.h b/include/qrcode/structure/module_traits.h index db3588a..70d5b6a 100644 --- a/include/qrcode/structure/module_traits.h +++ b/include/qrcode/structure/module_traits.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/occupied_columns.h b/include/qrcode/structure/occupied_columns.h index 8b78e20..0d6bf32 100644 --- a/include/qrcode/structure/occupied_columns.h +++ b/include/qrcode/structure/occupied_columns.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/place_data.h b/include/qrcode/structure/place_data.h index e3f9279..5ae0374 100644 --- a/include/qrcode/structure/place_data.h +++ b/include/qrcode/structure/place_data.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/position.h b/include/qrcode/structure/position.h index 626c412..511e98c 100644 --- a/include/qrcode/structure/position.h +++ b/include/qrcode/structure/position.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/separator_pattern.h b/include/qrcode/structure/separator_pattern.h index 5c81f16..344466a 100644 --- a/include/qrcode/structure/separator_pattern.h +++ b/include/qrcode/structure/separator_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/skip_column_view.h b/include/qrcode/structure/skip_column_view.h index 10e523d..2496c5f 100644 --- a/include/qrcode/structure/skip_column_view.h +++ b/include/qrcode/structure/skip_column_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/timing_pattern.h b/include/qrcode/structure/timing_pattern.h index 65f008c..b7c5d66 100644 --- a/include/qrcode/structure/timing_pattern.h +++ b/include/qrcode/structure/timing_pattern.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/vertical_view.h b/include/qrcode/structure/vertical_view.h index 45bddc2..f928914 100644 --- a/include/qrcode/structure/vertical_view.h +++ b/include/qrcode/structure/vertical_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/structure/zigzag_view.h b/include/qrcode/structure/zigzag_view.h index 3cd2ec6..31a8e45 100644 --- a/include/qrcode/structure/zigzag_view.h +++ b/include/qrcode/structure/zigzag_view.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/svg.h b/include/qrcode/svg.h index 0cc3a09..a3300a5 100644 --- a/include/qrcode/svg.h +++ b/include/qrcode/svg.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/include/qrcode/symbol.h b/include/qrcode/symbol.h index e08ac26..74f74d1 100644 --- a/include/qrcode/symbol.h +++ b/include/qrcode/symbol.h @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 11e99db..2c9b5e8 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,7 +1,7 @@ # # The MIT License # -# Copyright (c) 2021 Melissa Bauer +# Copyright (c) 2025 Melissa Bauer # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal diff --git a/test/main.cpp b/test/main.cpp index 3eaa810..55788b4 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright (c) 2021 Melissa Bauer + * Copyright (c) 2025 Melissa Bauer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal From f6acc5f300cd64503db423e1629c04e46f158a9e Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:33:25 +0200 Subject: [PATCH 50/98] enable windows build --- .github/workflows/ci.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8588c7a..535d8c0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -100,12 +100,12 @@ jobs: $GITHUB_WORKSPACE/build/demo/Release/demo "Hello World!" >> result.svg diff -u --ignore-space-change --strip-trailing-cr --ignore-blank-lines demo/qrcode.svg result.svg - #ci_on_windows: - # runs-on: windows-2022 -# - # steps: - # - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 -# - # - name: Build - # shell: cmd - # run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build && cd build && cmake -GNinja -DQRCODE_TESTS_ENABLED:BOOL=True ../ && ninja' }} + MSVC: + runs-on: windows-2022 + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Build test + shell: cmd + run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build && cd build && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DQRCODE_TESTS_ENABLED:BOOL=True ../ && ninja' }} From 2eb1d0eb1e041051dd74f09ee1d73103d9efc6e7 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 13:20:13 +0200 Subject: [PATCH 51/98] some fixes for msvc --- include/cx/vector.h | 2 +- include/qrcode/qr/alignment_pattern.h | 5 +++++ include/qrcode/qr/finder_pattern.h | 7 +++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/include/cx/vector.h b/include/cx/vector.h index 8a9f22a..3dcc56f 100644 --- a/include/cx/vector.h +++ b/include/cx/vector.h @@ -413,7 +413,7 @@ namespace cx::test v.erase(begin(v), begin(v)+1); auto i = begin(v); - for (auto& n : {only_move_assignable{1}, only_move_assignable{4}}) + for (auto& n : std::array{only_move_assignable{1}, only_move_assignable{4}}) if (!(*(i++) == n)) return false; diff --git a/include/qrcode/qr/alignment_pattern.h b/include/qrcode/qr/alignment_pattern.h index fa1e244..5995f13 100644 --- a/include/qrcode/qr/alignment_pattern.h +++ b/include/qrcode/qr/alignment_pattern.h @@ -128,6 +128,11 @@ namespace qrcode::qr::detail std::ranges::copy(bits, begin(range)); } }; + + [[nodiscard]] constexpr auto size(alignment_pattern const& pattern) noexcept + { + return pattern.size(); + } } namespace qrcode::qr diff --git a/include/qrcode/qr/finder_pattern.h b/include/qrcode/qr/finder_pattern.h index c3b8992..9b23cfd 100644 --- a/include/qrcode/qr/finder_pattern.h +++ b/include/qrcode/qr/finder_pattern.h @@ -74,11 +74,14 @@ namespace qrcode::qr } }; - using std::size; + [[nodiscard]] constexpr auto size(finder_pattern const& pattern) noexcept + { + return pattern.size(); + } [[nodiscard]] constexpr auto finder_locations(dimension symbol_size) noexcept { - constexpr auto pattern = size(finder_pattern{}); + auto const pattern = size(finder_pattern{}); auto const left = width(symbol_size) - width(pattern); auto const bottom = height(symbol_size) - height(pattern); return std::array{{{0,0}, {left,0}, {0, bottom}}}; From 52fc1c22b8dffd181b26c5f032eea6b4ab7777db Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 13:29:43 +0200 Subject: [PATCH 52/98] more steps for msvc build --- .github/workflows/ci.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 535d8c0..8e9ddec 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -109,3 +109,15 @@ jobs: - name: Build test shell: cmd run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build && cd build && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DQRCODE_TESTS_ENABLED:BOOL=True ../ && ninja' }} + + - name: Run test + run: build/test/test/libqrcode_test + + - name: Build demo + run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build && cd build && cmake -GNinja -DCMAKE_BUILD_TYPE=Release ../demo && ninja' }} + + - name: Run test + run: | + build/demo/demo "Hello World!" >> result.svg + diff -u --ignore-space-change --strip-trailing-cr --ignore-blank-lines demo/qrcode.svg result.svg + From a64114f481da23d366025207863d5dc49ae86ca4 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 13:30:11 +0200 Subject: [PATCH 53/98] simplified paths --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e9ddec..56f8b9a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,7 +38,7 @@ jobs: - name: Run demo run: | - $GITHUB_WORKSPACE/build/demo/demo "Hello World!" >> result.svg + $build/demo/demo "Hello World!" >> result.svg diff -u --ignore-space-change --strip-trailing-cr --ignore-blank-lines demo/qrcode.svg result.svg Clang: @@ -69,7 +69,7 @@ jobs: - name: Run demo run: | - $GITHUB_WORKSPACE/build/demo/demo "Hello World!" >> result.svg + build/demo/demo "Hello World!" >> result.svg diff -u --ignore-space-change --strip-trailing-cr --ignore-blank-lines demo/qrcode.svg result.svg AppleClang: @@ -97,7 +97,7 @@ jobs: - name: Run demo run: | - $GITHUB_WORKSPACE/build/demo/Release/demo "Hello World!" >> result.svg + build/demo/Release/demo "Hello World!" >> result.svg diff -u --ignore-space-change --strip-trailing-cr --ignore-blank-lines demo/qrcode.svg result.svg MSVC: From 365d9d6bb6a3b566cea7c45c0a8adf0c37ce188e Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 14:02:50 +0200 Subject: [PATCH 54/98] fix stages --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 56f8b9a..8fb4a64 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,7 +38,7 @@ jobs: - name: Run demo run: | - $build/demo/demo "Hello World!" >> result.svg + build/demo/demo "Hello World!" >> result.svg diff -u --ignore-space-change --strip-trailing-cr --ignore-blank-lines demo/qrcode.svg result.svg Clang: @@ -117,6 +117,7 @@ jobs: run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build && cd build && cmake -GNinja -DCMAKE_BUILD_TYPE=Release ../demo && ninja' }} - name: Run test + shell: cmd run: | build/demo/demo "Hello World!" >> result.svg diff -u --ignore-space-change --strip-trailing-cr --ignore-blank-lines demo/qrcode.svg result.svg From 393bd082c913d0c433e32a78cc3ce32d97253cbc Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 14:09:33 +0200 Subject: [PATCH 55/98] fix windows build --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8fb4a64..151efd2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -108,13 +108,13 @@ jobs: - name: Build test shell: cmd - run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build && cd build && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DQRCODE_TESTS_ENABLED:BOOL=True ../ && ninja' }} + run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build/test && cd build/test && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DQRCODE_TESTS_ENABLED:BOOL=True ../../ && ninja' }} - name: Run test run: build/test/test/libqrcode_test - name: Build demo - run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build && cd build && cmake -GNinja -DCMAKE_BUILD_TYPE=Release ../demo && ninja' }} + run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build/demo && cd build/demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release ../../demo && ninja' }} - name: Run test shell: cmd From ac16d24fc98cf47c00bbcb1d64cb07a5e72385a8 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 14:11:29 +0200 Subject: [PATCH 56/98] fix windows build --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 151efd2..c190d4e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -108,13 +108,13 @@ jobs: - name: Build test shell: cmd - run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build/test && cd build/test && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DQRCODE_TESTS_ENABLED:BOOL=True ../../ && ninja' }} + run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\test && cd build\test && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DQRCODE_TESTS_ENABLED:BOOL=True ../../ && ninja' }} - name: Run test run: build/test/test/libqrcode_test - name: Build demo - run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build/demo && cd build/demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release ../../demo && ninja' }} + run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release ../../demo && ninja' }} - name: Run test shell: cmd From d300e2738c1ec1d472e257f55e2215e290893a96 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 14:16:53 +0200 Subject: [PATCH 57/98] readme adjustments --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 781cbd5..6feafec 100644 --- a/README.md +++ b/README.md @@ -93,15 +93,16 @@ int main() # How to build * Since the library is header-only, building is actually not necessary. -* Just put the `include` folder of this project into your header search path and it should just work. +* Just place the `include` folder of this project into your header search path. * However, if you'd like to run the tests, please select the top-level of the project in order to run _CMake_. ## How to run the tests -If you would like to run the tests, one has to add the following cmake flag: `-DQRCODE_TESTS_ENABLED:BOOL=True` +If you would like to run the tests, one has to add the following _CMake_ flag: `-DQRCODE_TESTS_ENABLED:BOOL=True` ## Debug builds using MSVC -Building with tests enabled in _Debug_ configuration won't build due to an issue in _Microsoft_'s STL implementation. _Release_ configuration works though. +Building with tests enabled in _Debug_ configuration won't build due to an issue in _Microsoft_'s STL implementation. +_Release_ configuration works though. # CI builds -CI builds consist of a test build for _Windows_ and _Linux_. +The CI pipeline consist of test builds and demo builds for _GCC_, _Clang_, _AppleClang_ and _MSVC_. If and only if all builds were successful, the CI state is green. From 9161336e54f970a5bf72a2687f0fe4fb3b8f7fd9 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 14:18:35 +0200 Subject: [PATCH 58/98] fix windows build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c190d4e..269e6a3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -114,7 +114,7 @@ jobs: run: build/test/test/libqrcode_test - name: Build demo - run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release ../../demo && ninja' }} + run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR=$GITHUB_WORKSPACE/include/ ../../demo && ninja' }} - name: Run test shell: cmd From 0c8cb233280e7a46e48991f6dbccff6670a25dfc Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 14:25:06 +0200 Subject: [PATCH 59/98] fix windows build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 269e6a3..1f6528c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -114,7 +114,7 @@ jobs: run: build/test/test/libqrcode_test - name: Build demo - run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR=$GITHUB_WORKSPACE/include/ ../../demo && ninja' }} + run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR=${GITHUB_WORKSPACE}/include/ ../../demo && ninja' }} - name: Run test shell: cmd From 7d024e5a6b3be730a17b5d608aeb36fb8c2a0152 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 14:31:29 +0200 Subject: [PATCH 60/98] fix windows build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1f6528c..3d62c33 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -114,7 +114,7 @@ jobs: run: build/test/test/libqrcode_test - name: Build demo - run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR=${GITHUB_WORKSPACE}/include/ ../../demo && ninja' }} + run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR=../../include/ ../../demo && ninja' }} - name: Run test shell: cmd From 2addd51870ea628b4ffbf189716acc4c52d3ee6f Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 14:35:24 +0200 Subject: [PATCH 61/98] fix windows build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3d62c33..3223699 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -114,7 +114,7 @@ jobs: run: build/test/test/libqrcode_test - name: Build demo - run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR=../../include/ ../../demo && ninja' }} + run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR="../../include/" ../../demo && ninja' }} - name: Run test shell: cmd From 4c4813a051b1d63ceba4860cc66f3697e9cef556 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 14:45:08 +0200 Subject: [PATCH 62/98] fix windows build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3223699..8c87abb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -114,7 +114,7 @@ jobs: run: build/test/test/libqrcode_test - name: Build demo - run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR="../../include/" ../../demo && ninja' }} + run: ${{ format('"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR={0} ../../demo && ninja', $GITHUB_WORKSPACE/include/) }} - name: Run test shell: cmd From 7b7ebecadf5e1dfc2e9ae47e94b0cbfc3c0feeec Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 14:51:14 +0200 Subject: [PATCH 63/98] fix windows build --- .github/workflows/ci.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8c87abb..8e1b991 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -114,7 +114,14 @@ jobs: run: build/test/test/libqrcode_test - name: Build demo - run: ${{ format('"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR={0} ../../demo && ninja', $GITHUB_WORKSPACE/include/) }} + run: >- + ${{ format(' + "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" + && mkdir build\demo + && cd build\demo + && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR={0} ../../demo + && ninja', $GITHUB_WORKSPACE/include/) + }} - name: Run test shell: cmd From eece0dea82043ae013c1059478bec58181ce3622 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 14:53:10 +0200 Subject: [PATCH 64/98] fix windows build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e1b991..11e9017 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -120,7 +120,7 @@ jobs: && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR={0} ../../demo - && ninja', $GITHUB_WORKSPACE/include/) + && ninja', ${GITHUB_WORKSPACE}/include/) }} - name: Run test From a5a56ecff644e3ee290fbb9c9500e555deb82590 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 15:04:55 +0200 Subject: [PATCH 65/98] fix windows build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 11e9017..dab9097 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -120,7 +120,7 @@ jobs: && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR={0} ../../demo - && ninja', ${GITHUB_WORKSPACE}/include/) + && ninja', foo) }} - name: Run test From 76f0d1d0d5e32664c5bf1ce15888935e496b8815 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 15:09:08 +0200 Subject: [PATCH 66/98] fix windows build --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dab9097..80d4160 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -115,12 +115,12 @@ jobs: - name: Build demo run: >- - ${{ format(' + ${{ "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo - && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR={0} ../../demo - && ninja', foo) + && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR=$GITHUB_WORKSPACE/include/ ../../demo + && ninja }} - name: Run test From d22c556601bf713c59afe2ed3df20fa1d45a068e Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 15:12:41 +0200 Subject: [PATCH 67/98] fix windows build --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 80d4160..d0a4a25 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -115,12 +115,12 @@ jobs: - name: Build demo run: >- - ${{ - "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" + ${{ format(' + {{"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo - && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR=$GITHUB_WORKSPACE/include/ ../../demo - && ninja + && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR={0} ../../demo + && ninja}}', ${GITHUB_WORKSPACE}/include/) }} - name: Run test From d6b47ab73544129289cfd893c79a3c6c99d1f56f Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 15:14:31 +0200 Subject: [PATCH 68/98] fix windows build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d0a4a25..8280908 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -120,7 +120,7 @@ jobs: && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR={0} ../../demo - && ninja}}', ${GITHUB_WORKSPACE}/include/) + && ninja}}', "$GITHUB_WORKSPACE/include/") }} - name: Run test From f6bc4d56b6080959aa24b1fac2ffa5618553169d Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 15:15:21 +0200 Subject: [PATCH 69/98] fix windows build --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8280908..250ad1c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -116,11 +116,11 @@ jobs: - name: Build demo run: >- ${{ format(' - {{"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" + "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR={0} ../../demo - && ninja}}', "$GITHUB_WORKSPACE/include/") + && ninja') }} - name: Run test From ab9c16923109003a63ad096eb6b546355bc5d446 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 15:23:06 +0200 Subject: [PATCH 70/98] fix windows build --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 250ad1c..5e001a3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -120,8 +120,7 @@ jobs: && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR={0} ../../demo - && ninja') - }} + && ninja', blabla) }} - name: Run test shell: cmd From edf1f4db1714ce7b662ddea4ed60dbf5045e0399 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 15:25:40 +0200 Subject: [PATCH 71/98] fix windows build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5e001a3..72d0ed5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -120,7 +120,7 @@ jobs: && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR={0} ../../demo - && ninja', blabla) }} + && ninja', ${{ $GITHUB_WORKSPACE/include/ }}) }} - name: Run test shell: cmd From 6cab932315c0b8124641e1be0579ef8ebd6394b8 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 15:32:13 +0200 Subject: [PATCH 72/98] fix windows build --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 72d0ed5..2808603 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -115,12 +115,12 @@ jobs: - name: Build demo run: >- - ${{ format(' - "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" + ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo - && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR={0} ../../demo - && ninja', ${{ $GITHUB_WORKSPACE/include/ }}) }} + && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR=%cd%/../../include ../../demo + && ninja' + }} - name: Run test shell: cmd From 35e2f2a05ab8c69d22e61f90440b662bf8ee8c62 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 15:36:48 +0200 Subject: [PATCH 73/98] fix windows build --- .github/workflows/ci.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2808603..bed5c44 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -114,13 +114,7 @@ jobs: run: build/test/test/libqrcode_test - name: Build demo - run: >- - ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" - && mkdir build\demo - && cd build\demo - && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR=%cd%/../../include ../../demo - && ninja' - }} + run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR=%cd%/../../include ../../demo && ninja' }} - name: Run test shell: cmd From b2e2d837bb756b7ab77520b5257226fb6037f2e6 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 15:41:22 +0200 Subject: [PATCH 74/98] fix windows build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bed5c44..65a313e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -114,7 +114,7 @@ jobs: run: build/test/test/libqrcode_test - name: Build demo - run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR=%cd%/../../include ../../demo && ninja' }} + run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR="%cd%/../../include" ../../demo && ninja' }} - name: Run test shell: cmd From 4dff87f9937e9223bfe846cc659c377f56c33b92 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 17:25:36 +0200 Subject: [PATCH 75/98] fix windows build --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 65a313e..c953075 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -119,6 +119,6 @@ jobs: - name: Run test shell: cmd run: | - build/demo/demo "Hello World!" >> result.svg - diff -u --ignore-space-change --strip-trailing-cr --ignore-blank-lines demo/qrcode.svg result.svg + . build/demo/demo "Hello World!" >> result.svg + Compare-Object (Get-Content demo/qrcode.svg) (Get-Content result.svg) From 8cac37a7e544886ed345abec37058fa3bd841f57 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 17:37:47 +0200 Subject: [PATCH 76/98] fix windows build --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c953075..ca424ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -117,7 +117,6 @@ jobs: run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR="%cd%/../../include" ../../demo && ninja' }} - name: Run test - shell: cmd run: | . build/demo/demo "Hello World!" >> result.svg Compare-Object (Get-Content demo/qrcode.svg) (Get-Content result.svg) From fc6866a1fa1980723c69b62e5af52b32dc7b6817 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 17:38:05 +0200 Subject: [PATCH 77/98] enable all warnings, treat them as errors --- demo/CMakeLists.txt | 7 ++++--- test/CMakeLists.txt | 12 ++++++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index 962aa03..c4324b5 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -38,6 +38,7 @@ endif() add_executable(demo demo.cpp) target_include_directories(demo PRIVATE ${LIBQRCODE_INCLUDE_DIR}) -target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) -target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) -target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic>) +target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic -Werror>) +target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic -Werror>) +target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic -Werror>) +target_compile_options(demo PRIVATE $<$:/Wall /WX>) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 2c9b5e8..97859c8 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -26,13 +26,17 @@ cmake_minimum_required(VERSION 3.15) add_executable(libqrcode_test main.cpp) target_compile_options(libqrcode_test PRIVATE $<$: - -Wall -Wextra -Wpedantic -fconstexpr-depth=9999999 -fconstexpr-ops-limit=9999999999 -fconcepts-diagnostics-depth=10>) + -Wall -Wextra -Wpedantic -Werror + -fconstexpr-depth=9999999 -fconstexpr-ops-limit=9999999999 -fconcepts-diagnostics-depth=10>) + target_compile_options(libqrcode_test PRIVATE $<$: - -Wall -Wextra -Wpedantic -fconstexpr-steps=999999999>) + -Wall -Wextra -Wpedantic -Werror -fconstexpr-steps=999999999>) + target_compile_options(libqrcode_test PRIVATE $<$: - -Wall -Wextra -Wpedantic -fconstexpr-steps=999999999>) + -Wall -Wextra -Wpedantic -Werror -fconstexpr-steps=999999999>) + target_compile_options(libqrcode_test PRIVATE $<$: - /constexpr:steps999999999>) + /Wall /WX /constexpr:steps999999999>) target_compile_options(libqrcode_test PRIVATE -DQRCODE_TESTS_ENABLED) target_link_libraries(libqrcode_test PRIVATE qrcode) From 2913f1372b24d12426a4076632897be2d2bb48b2 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 18:04:29 +0200 Subject: [PATCH 78/98] cosmetics --- test/CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 97859c8..6b9defd 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -30,10 +30,12 @@ target_compile_options(libqrcode_test PRIVATE $<$: -fconstexpr-depth=9999999 -fconstexpr-ops-limit=9999999999 -fconcepts-diagnostics-depth=10>) target_compile_options(libqrcode_test PRIVATE $<$: - -Wall -Wextra -Wpedantic -Werror -fconstexpr-steps=999999999>) + -Wall -Wextra -Wpedantic -Werror + -fconstexpr-steps=999999999>) target_compile_options(libqrcode_test PRIVATE $<$: - -Wall -Wextra -Wpedantic -Werror -fconstexpr-steps=999999999>) + -Wall -Wextra -Wpedantic -Werror + -fconstexpr-steps=999999999>) target_compile_options(libqrcode_test PRIVATE $<$: /Wall /WX /constexpr:steps999999999>) From e3431cfb31abdd4210c90e5489e840113f450771 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 18:05:04 +0200 Subject: [PATCH 79/98] disable brance initialization warning when using msvc --- test/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 6b9defd..560ae99 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -38,7 +38,8 @@ target_compile_options(libqrcode_test PRIVATE $<$: -fconstexpr-steps=999999999>) target_compile_options(libqrcode_test PRIVATE $<$: - /Wall /WX /constexpr:steps999999999>) + /Wall /WX /wd5246 + /constexpr:steps999999999>) target_compile_options(libqrcode_test PRIVATE -DQRCODE_TESTS_ENABLED) target_link_libraries(libqrcode_test PRIVATE qrcode) From 84d7b8d481314867a32251d6f1e852e691f9b78a Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 18:06:57 +0200 Subject: [PATCH 80/98] fix signed/unsigned mismatch --- include/cx/vector.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/cx/vector.h b/include/cx/vector.h index 3dcc56f..f16afed 100644 --- a/include/cx/vector.h +++ b/include/cx/vector.h @@ -46,7 +46,7 @@ namespace cx } constexpr vector(std::size_t count, T value = T{}) noexcept - : current_size{count} + : current_size{static_cast(count)} , elements{} { for (auto i = begin(); i != begin()+count; ++i) @@ -54,7 +54,7 @@ namespace cx } constexpr vector(std::initializer_list values) noexcept - : current_size{std::ranges::size(values)} + : current_size{std::ranges::ssize(values)} , elements{} { using std::ranges::begin; @@ -80,7 +80,7 @@ namespace cx using const_reverse_iterator = typename container::const_reverse_iterator; using value_type = T; - [[nodiscard]] constexpr auto size() const noexcept { return current_size; } + [[nodiscard]] constexpr auto size() const noexcept { return static_cast(current_size); } [[nodiscard]] constexpr auto empty() const noexcept { return current_size == 0; } [[nodiscard]] constexpr auto begin() noexcept { using std::ranges::begin; return begin(elements); } @@ -157,7 +157,7 @@ namespace cx push_back(*i); } - std::size_t current_size; + std::ptrdiff_t current_size; container elements; }; From 405b0ff91350d9ae66f01ca00045f1a2b0537412 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 18:19:51 +0200 Subject: [PATCH 81/98] relax warnings for msvc --- demo/CMakeLists.txt | 1 - include/cx/vector.h | 8 ++++---- test/CMakeLists.txt | 1 - 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index c4324b5..8b024d3 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -41,4 +41,3 @@ target_include_directories(demo PRIVATE ${LIBQRCODE_INCLUDE_DIR}) target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic -Werror>) target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic -Werror>) target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic -Werror>) -target_compile_options(demo PRIVATE $<$:/Wall /WX>) diff --git a/include/cx/vector.h b/include/cx/vector.h index f16afed..3dcc56f 100644 --- a/include/cx/vector.h +++ b/include/cx/vector.h @@ -46,7 +46,7 @@ namespace cx } constexpr vector(std::size_t count, T value = T{}) noexcept - : current_size{static_cast(count)} + : current_size{count} , elements{} { for (auto i = begin(); i != begin()+count; ++i) @@ -54,7 +54,7 @@ namespace cx } constexpr vector(std::initializer_list values) noexcept - : current_size{std::ranges::ssize(values)} + : current_size{std::ranges::size(values)} , elements{} { using std::ranges::begin; @@ -80,7 +80,7 @@ namespace cx using const_reverse_iterator = typename container::const_reverse_iterator; using value_type = T; - [[nodiscard]] constexpr auto size() const noexcept { return static_cast(current_size); } + [[nodiscard]] constexpr auto size() const noexcept { return current_size; } [[nodiscard]] constexpr auto empty() const noexcept { return current_size == 0; } [[nodiscard]] constexpr auto begin() noexcept { using std::ranges::begin; return begin(elements); } @@ -157,7 +157,7 @@ namespace cx push_back(*i); } - std::ptrdiff_t current_size; + std::size_t current_size; container elements; }; diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 560ae99..1a8bca0 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -38,7 +38,6 @@ target_compile_options(libqrcode_test PRIVATE $<$: -fconstexpr-steps=999999999>) target_compile_options(libqrcode_test PRIVATE $<$: - /Wall /WX /wd5246 /constexpr:steps999999999>) target_compile_options(libqrcode_test PRIVATE -DQRCODE_TESTS_ENABLED) From fb73976316c18cd06f849bd611cb0860955cdd05 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 18:24:54 +0200 Subject: [PATCH 82/98] fix step description --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ca424ae..99481f3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -116,7 +116,7 @@ jobs: - name: Build demo run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR="%cd%/../../include" ../../demo && ninja' }} - - name: Run test + - name: Run demo run: | . build/demo/demo "Hello World!" >> result.svg Compare-Object (Get-Content demo/qrcode.svg) (Get-Content result.svg) From ef61a57d4e8df6f352f0316b3643a5a706039f7b Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 18:27:14 +0200 Subject: [PATCH 83/98] add missing shell definition in windows build --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 99481f3..15695b0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -114,6 +114,7 @@ jobs: run: build/test/test/libqrcode_test - name: Build demo + shell: cmd run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR="%cd%/../../include" ../../demo && ninja' }} - name: Run demo From 3c0ce081d8374bb64f236f8e9b7b9113cadacb1d Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 18:32:26 +0200 Subject: [PATCH 84/98] add missing shell definition in windows build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 15695b0..2708616 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -115,7 +115,7 @@ jobs: - name: Build demo shell: cmd - run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR="%cd%/../../include" ../../demo && ninja' }} + run: ${{ '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && mkdir build\demo && cd build\demo && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLIBQRCODE_INCLUDE_DIR="%cd%/include" ../../demo && ninja' }} - name: Run demo run: | From 09960a7a821e9ef18e0af0c9bd6149c911e7ea6f Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Thu, 31 Jul 2025 18:47:35 +0200 Subject: [PATCH 85/98] test --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2708616..f203ac1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -119,6 +119,6 @@ jobs: - name: Run demo run: | - . build/demo/demo "Hello World!" >> result.svg + . build/demo/demo "Hello World!" Compare-Object (Get-Content demo/qrcode.svg) (Get-Content result.svg) From b253e74850eda3b6b596944ac3a3c93fb995e4ca Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Fri, 1 Aug 2025 01:00:38 +0200 Subject: [PATCH 86/98] test --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f203ac1..fdd614b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -120,5 +120,5 @@ jobs: - name: Run demo run: | . build/demo/demo "Hello World!" - Compare-Object (Get-Content demo/qrcode.svg) (Get-Content result.svg) + # Compare-Object (Get-Content demo/qrcode.svg) (Get-Content result.svg) From 6f13d97a6bc744a41ab5e1d88d1c339049351505 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Fri, 1 Aug 2025 01:46:00 +0200 Subject: [PATCH 87/98] ignore some vs stuff --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index a1753c6..0619ec0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ .vscode/ build/ +out/ +.vs/ .DS_Store +CMakeSettings.json \ No newline at end of file From 0fc13f2fdddd2b59ce9fad14bac437958359dbc7 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Fri, 1 Aug 2025 01:46:30 +0200 Subject: [PATCH 88/98] pre-define include directory for demo --- demo/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index 8b024d3..a573c8b 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -32,7 +32,8 @@ project(libqrcode_demo) enable_testing() enable_cxx(23) -if(NOT DEFINED LIBQRCODE_INCLUDE_DIR) +set(LIBQRCODE_INCLUDE_DIR CACHE PATH "Path to libqrcode include directory") +if(NOT LIBQRCODE_INCLUDE_DIR) message(FATAL_ERROR "Please specify location of libqrcode include folder") endif() From 45bbbb390bf6723aff9c8c13760a2b904e462b14 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Fri, 1 Aug 2025 01:47:00 +0200 Subject: [PATCH 89/98] windows needs a bigger stack size in order to work properly --- demo/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index a573c8b..7bfb843 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -42,3 +42,4 @@ target_include_directories(demo PRIVATE ${LIBQRCODE_INCLUDE_DIR}) target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic -Werror>) target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic -Werror>) target_compile_options(demo PRIVATE $<$:-Wall -Wextra -Wpedantic -Werror>) +target_link_options(demo PRIVATE $<$:/STACK:16777216>) \ No newline at end of file From 2dd1dc30c8915bea5a711d60adce98c41ba83033 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer <75776786+yax-lakam-tuun@users.noreply.github.com> Date: Fri, 1 Aug 2025 01:50:37 +0200 Subject: [PATCH 90/98] fix windows build --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fdd614b..2708616 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -119,6 +119,6 @@ jobs: - name: Run demo run: | - . build/demo/demo "Hello World!" - # Compare-Object (Get-Content demo/qrcode.svg) (Get-Content result.svg) + . build/demo/demo "Hello World!" >> result.svg + Compare-Object (Get-Content demo/qrcode.svg) (Get-Content result.svg) From 15a6d2f36caee6b6b0f5776a1e08993f3d010b4d Mon Sep 17 00:00:00 2001 From: Melissa Bauer <75776786+ixik-melissa@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:59:29 +0200 Subject: [PATCH 91/98] first version of cmake presets --- CMakePresets.json | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 CMakePresets.json diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 0000000..33205d7 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,29 @@ +{ + "version": 10, + "cmakeMinimumRequired": { + "major": 3, + "minor": 23, + "patch": 0 + }, + "configurePresets": [ + { + "name": "apple-clang-with-tests", + "displayName": "AppleClang - With Tests", + "description": "macos build", + "generator": "Xcode", + "binaryDir": "${sourceDir}/build/with-tests", + "cacheVariables": { + "QRCODE_TESTS_ENABLED": { + "type": "BOOL", + "value": "ON" + } + } + } + ], + "buildPresets": [ + { + "name": "build-apple-clang-with-tests", + "configurePreset": "apple-clang-with-tests" + } + ] +} \ No newline at end of file From ae9dbe234b18342035f06ad21b01d38081815dc5 Mon Sep 17 00:00:00 2001 From: Melissa Bauer <75776786+ixik-melissa@users.noreply.github.com> Date: Fri, 1 Aug 2025 20:38:27 +0200 Subject: [PATCH 92/98] rewrite tests for use with std vector --- demo/demo.cpp | 2 +- include/qrcode/code/sequence_permutation.h | 72 +++--- include/qrcode/micro_qr/finalize_symbol.h | 75 ++++--- include/qrcode/micro_qr/micro_qr.h | 122 +++++----- include/qrcode/micro_qr/penalty_score.h | 120 +++++----- include/qrcode/micro_qr/raw_code.h | 49 ++-- include/qrcode/qr/dark_module_score.h | 42 ++-- include/qrcode/qr/finalize_symbol.h | 111 +++++----- include/qrcode/qr/finder_like_score.h | 90 ++++---- include/qrcode/qr/penalty_score.h | 71 +++--- include/qrcode/qr/qr.h | 246 +++++++++++---------- include/qrcode/qr/raw_code.h | 73 +++--- include/qrcode/structure/apply_mask.h | 29 +-- include/qrcode/structure/matrix.h | 82 +++---- include/qrcode/symbol.h | 13 +- 15 files changed, 638 insertions(+), 559 deletions(-) diff --git a/demo/demo.cpp b/demo/demo.cpp index 198d568..ba3ac3c 100644 --- a/demo/demo.cpp +++ b/demo/demo.cpp @@ -218,7 +218,7 @@ int main(int argc, char** argv) if (empty(options->message)) { std_input = read_message(std::cin); - message = std::string_view{cx::begin(std_input), cx::end(std_input)}; + message = std::string_view{begin(std_input), end(std_input)}; } print_message(std::cerr, message); diff --git a/include/qrcode/code/sequence_permutation.h b/include/qrcode/code/sequence_permutation.h index 71a148b..d1fba7b 100644 --- a/include/qrcode/code/sequence_permutation.h +++ b/include/qrcode/code/sequence_permutation.h @@ -148,42 +148,48 @@ namespace qrcode::code::detail::test namespace qrcode::code { constexpr auto data_codeword_permutation_returns_an_array_representing_the_lookup_table_where_to_place_data_codewords_in_the_sequence() - { - constexpr auto any_sequence = sequence_description{{2,1}, {3,2}, 6}; - - constexpr auto permutation = data_codeword_permutation(any_sequence); - - static_assert(permutation(0) == 0); // 0 1 - static_assert(permutation(1) == 3); // 2 3 4 - static_assert(permutation(2) == 1); // 5 6 7 - static_assert(permutation(3) == 4); // => 0 2 5 1 3 6 4 7 - static_assert(permutation(4) == 6); // => 0 3 1 4 6 2 5 7 - static_assert(permutation(5) == 2); - static_assert(permutation(6) == 5); - static_assert(permutation(7) == 7); + { + static_assert([]() + { + constexpr auto any_sequence = sequence_description{{2,1}, {3,2}, 6}; + + auto const permutation = data_codeword_permutation(any_sequence); + + return permutation(0) == 0 // 0 1 + && permutation(1) == 3 // 2 3 4 + && permutation(2) == 1 // 5 6 7 + && permutation(3) == 4 // => 0 2 5 1 3 6 4 7 + && permutation(4) == 6 // => 0 3 1 4 6 2 5 7 + && permutation(5) == 2 + && permutation(6) == 5 + && permutation(7) == 7; + }()); } constexpr auto error_codeword_permutation_returns_an_array_represening_the_lookup_table_where_to_place_error_codewords_in_the_sequence() - { - constexpr auto any_sequence = sequence_description{{13,4},{14,1},3}; - - constexpr auto permutation = error_codeword_permutation(any_sequence); - - static_assert(permutation(0) == 0); // 0 1 2 - static_assert(permutation(1) == 5); // 3 4 5 - static_assert(permutation(2) == 10); // 6 7 8 - static_assert(permutation(3) == 1); // 9 10 11 - static_assert(permutation(4) == 6); // 12 13 14 - static_assert(permutation(5) == 11); // => 0 3 6 9 12 1 4 7 10 13 2 5 8 11 14 - static_assert(permutation(6) == 2); // => 0 5 10 1 6 11 2 7 12 3 8 13 4 9 14 - static_assert(permutation(7) == 7); - static_assert(permutation(8) == 12); - static_assert(permutation(9) == 3); - static_assert(permutation(10) == 8); - static_assert(permutation(11) == 13); - static_assert(permutation(12) == 4); - static_assert(permutation(13) == 9); - static_assert(permutation(14) == 14); + { + static_assert([]() + { + constexpr auto any_sequence = sequence_description{{13,4},{14,1},3}; + + auto const permutation = error_codeword_permutation(any_sequence); + + return permutation(0) == 0 // 0 1 2 + && permutation(1) == 5 // 3 4 5 + && permutation(2) == 10 // 6 7 8 + && permutation(3) == 1 // 9 10 11 + && permutation(4) == 6 // 12 13 14 + && permutation(5) == 11 // => 0 3 6 9 12 1 4 7 10 13 2 5 8 11 14 + && permutation(6) == 2 // => 0 5 10 1 6 11 2 7 12 3 8 13 4 9 14 + && permutation(7) == 7 + && permutation(8) == 12 + && permutation(9) == 3 + && permutation(10) == 8 + && permutation(11) == 13 + && permutation(12) == 4 + && permutation(13) == 9 + && permutation(14) == 14; + }()); } } #endif diff --git a/include/qrcode/micro_qr/finalize_symbol.h b/include/qrcode/micro_qr/finalize_symbol.h index a5ca7f9..a96ce5f 100644 --- a/include/qrcode/micro_qr/finalize_symbol.h +++ b/include/qrcode/micro_qr/finalize_symbol.h @@ -60,44 +60,47 @@ namespace qrcode::micro_qr { constexpr auto finalize_determines_the_best_mask_and_stores_its_id_in_given_symbol() { - using qrcode::structure::make_matrix; - using namespace std::literals; - constexpr auto any_designator = *make_designator(symbol_version::M2, error_correction::level_L); - constexpr auto any_unmasked = make_matrix({13,13}, - "*******-*-*-*" - "*-----*--++,," - "*-***-*--,,++" - "*-***-*--,,,+" - "*-***-*--++,+" - "*-----*--,,,," - "*******--,,,+" - "---------,,+," - "*--------,,,," - "-,,,+,,+,,+,," - "*++++,+++,,,," - "-,,,+,,,,+,,," - "*,,,+,+,,,++,"sv - ); - constexpr auto selected_mask_id = 1; - - static_assert(finalize(any_unmasked, any_designator) == symbol{ - any_designator, selected_mask_id, - make_matrix({13,13}, + static_assert([]() + { + using qrcode::structure::make_matrix; + using namespace std::literals; + constexpr auto any_designator = *make_designator(symbol_version::M2, error_correction::level_L); + auto const any_unmasked = make_matrix({13,13}, "*******-*-*-*" - "*-----*-*++,+" + "*-----*--++,," + "*-***-*--,,++" + "*-***-*--,,,+" "*-***-*--++,+" - "*-***-*--++++" - "*-***-*-*++,," - "*-----*-*,,,+" - "*******--++++" - "---------++,," - "**-*----*,,,+" - "-++,+,+,+,+,+" - "*++,,+++++++," - "-,,+,+,,,,++," - "*++,+,,++,+++"sv - ) - }); + "*-----*--,,,," + "*******--,,,+" + "---------,,+," + "*--------,,,," + "-,,,+,,+,,+,," + "*++++,+++,,,," + "-,,,+,,,,+,,," + "*,,,+,+,,,++,"sv + ); + constexpr auto selected_mask_id = 1; + + return finalize(any_unmasked, any_designator) == symbol{ + any_designator, selected_mask_id, + make_matrix({13,13}, + "*******-*-*-*" + "*-----*-*++,+" + "*-***-*--++,+" + "*-***-*--++++" + "*-***-*-*++,," + "*-----*-*,,,+" + "*******--++++" + "---------++,," + "**-*----*,,,+" + "-++,+,+,+,+,+" + "*++,,+++++++," + "-,,+,+,,,,++," + "*++,+,,++,+++"sv + ) + }; + }()); } } #endif diff --git a/include/qrcode/micro_qr/micro_qr.h b/include/qrcode/micro_qr/micro_qr.h index 773819d..27cc587 100644 --- a/include/qrcode/micro_qr/micro_qr.h +++ b/include/qrcode/micro_qr/micro_qr.h @@ -133,68 +133,74 @@ namespace qrcode::micro_qr { constexpr auto micro_qr_symbols_can_be_generated_from_given_version_and_error_level() { - using qrcode::structure::make_matrix; - using namespace std::literals; - constexpr auto any_data = "01234567"sv; - constexpr auto any_version = symbol_version::M2; - constexpr auto any_error_level = error_correction::level_L; - constexpr auto selected_mask_id = 1; - - constexpr auto s = make_symbol(any_data, any_version, any_error_level).value(); - - static_assert(s == symbol{ - *make_designator(any_version, any_error_level), - selected_mask_id, - make_matrix({13,13}, - "*******-*-*-*" - "*-----*-*++,+" - "*-***-*--++,+" - "*-***-*--++++" - "*-***-*-*++,," - "*-----*-*,,,+" - "*******--++++" - "---------++,," - "**-*----*,,,+" - "-++,+,+,+,+,+" - "*++,,+++++++," - "-,,+,+,,,,++," - "*++,+,,++,+++"sv - ) - }); + static_assert([]() + { + using qrcode::structure::make_matrix; + using namespace std::literals; + constexpr auto any_data = "01234567"sv; + constexpr auto any_version = symbol_version::M2; + constexpr auto any_error_level = error_correction::level_L; + constexpr auto selected_mask_id = 1; + + auto const s = make_symbol(any_data, any_version, any_error_level).value(); + + return s == symbol{ + *make_designator(any_version, any_error_level), + selected_mask_id, + make_matrix({13,13}, + "*******-*-*-*" + "*-----*-*++,+" + "*-***-*--++,+" + "*-***-*--++++" + "*-***-*-*++,," + "*-----*-*,,,+" + "*******--++++" + "---------++,," + "**-*----*,,,+" + "-++,+,+,+,+,+" + "*++,,+++++++," + "-,,+,+,,,,++," + "*++,+,,++,+++"sv + ) + }; + }()); } constexpr auto micro_qr_symbols_can_be_generated_from_given_version_and_error_level2() { - using qrcode::structure::make_matrix; - using namespace std::literals; - constexpr auto any_data = "Wikipedia"sv; - constexpr auto any_error_level = error_correction::level_L; - constexpr auto selected_version = symbol_version::M3; - constexpr auto selected_mask_id = 2; - - constexpr auto s = make_symbol(any_data, any_error_level).value(); - - static_assert(s == symbol{ - *make_designator(selected_version, any_error_level), - selected_mask_id, - make_matrix({15,15}, - "*******-*-*-*-*" - "*-----*--,,+,+," - "*-***-*-*++++++" - "*-***-*-*,+,,++" - "*-***-*--,,+,++" - "*-----*-*,+,+,+" - "*******--+,,++," - "---------+,+,,+" - "******---,+,+,+" - "-,,+,,++,,,,+++" - "*++,++,++++,+++" - "-+,,,,+,,+++,+," - "*,+++++,+++,+,+" - "-+,,,,+,,+,+++," - "*++,++,+,+,++++"sv - ) - }); + static_assert([]() + { + using qrcode::structure::make_matrix; + using namespace std::literals; + constexpr auto any_data = "Wikipedia"sv; + constexpr auto any_error_level = error_correction::level_L; + constexpr auto selected_version = symbol_version::M3; + constexpr auto selected_mask_id = 2; + + auto const s = make_symbol(any_data, any_error_level).value(); + + return s == symbol{ + *make_designator(selected_version, any_error_level), + selected_mask_id, + make_matrix({15,15}, + "*******-*-*-*-*" + "*-----*--,,+,+," + "*-***-*-*++++++" + "*-***-*-*,+,,++" + "*-***-*--,,+,++" + "*-----*-*,+,+,+" + "*******--+,,++," + "---------+,+,,+" + "******---,+,+,+" + "-,,+,,++,,,,+++" + "*++,++,++++,+++" + "-+,,,,+,,+++,+," + "*,+++++,+++,+,+" + "-+,,,,+,,+,+++," + "*++,++,+,+,++++"sv + ) + }; + }()); } } #endif diff --git a/include/qrcode/micro_qr/penalty_score.h b/include/qrcode/micro_qr/penalty_score.h index 35cda6a..d0992d7 100644 --- a/include/qrcode/micro_qr/penalty_score.h +++ b/include/qrcode/micro_qr/penalty_score.h @@ -127,43 +127,50 @@ namespace qrcode::micro_qr::detail::test constexpr auto horizontal_score_counts_the_number_of_non_zeros_along_the_lower_side_edge() { - using namespace std::literals; - using qrcode::structure::make_matrix; - constexpr auto any_matrix = make_matrix({11,11}, - "..........." - "..........." - "..........." - "..........." - "..........." - "..........." - "..........." - "..........." - "..........." - "..........." - "++,,+,+,++,"sv - // 11001010110 - ); - static_assert(horizontal_score(any_matrix) == (/*1+*/1+0+0+1+0+1+0+1+1+0)); + static_assert([]() + { + using namespace std::literals; + using qrcode::structure::make_matrix; + const auto any_matrix = make_matrix({11,11}, + "..........." + "..........." + "..........." + "..........." + "..........." + "..........." + "..........." + "..........." + "..........." + "..........." + "++,,+,+,++,"sv + // 11001010110 + ); + return horizontal_score(any_matrix) == (/*1+*/1+0+0+1+0+1+0+1+1+0); + }()); } constexpr auto vertical_score_counts_the_number_of_non_zeros_along_the_right_side_edge() { - using namespace std::literals; - using qrcode::structure::make_matrix; - constexpr auto any_matrix = make_matrix({11,11}, - "..........+" // 1 - "..........+" // 1 - "..........," // 0 - "..........," // 0 - "..........+" // 1 - "..........," // 0 - "..........," // 0 - "..........+" // 1 - "..........+" // 1 - "..........," // 0 - "..........+"sv // 1 - ); - static_assert(vertical_score(any_matrix) == (/*1+*/1+0+0+1+0+0+1+1+0+1)); + static_assert([]() + { + using namespace std::literals; + using qrcode::structure::make_matrix; + auto const any_matrix = make_matrix({11,11}, + "..........+" // 1 + "..........+" // 1 + "..........," // 0 + "..........," // 0 + "..........+" // 1 + "..........," // 0 + "..........," // 0 + "..........+" // 1 + "..........+" // 1 + "..........," // 0 + "..........+"sv // 1 + ); + return vertical_score(any_matrix) == (/*1+*/1+0+0+1+0+0+1+1+0+1); + }()); + } constexpr auto negative_scores_are_infinite_by_default() @@ -194,28 +201,31 @@ namespace qrcode::micro_qr::test { constexpr auto penalty_score_returns_the_high_score_of_given_matrix() { - using namespace std::literals; - using qrcode::structure::make_matrix; - constexpr auto any_matrix = make_matrix({17,17}, - "................+" - "................+" - "................+" - "................," - "................," - "................+" - "................+" - "................," - "................+" - "................," - "................+" - "................," - "................+" - "................," - "................," - "................+" - "+,,+++,,+,+,,+,,,"sv - ); - static_assert(penalty_score(any_matrix).value == 104); + static_assert([]() + { + using namespace std::literals; + using qrcode::structure::make_matrix; + auto const any_matrix = make_matrix({17,17}, + "................+" + "................+" + "................+" + "................," + "................," + "................+" + "................+" + "................," + "................+" + "................," + "................+" + "................," + "................+" + "................," + "................," + "................+" + "+,,+++,,+,+,,+,,,"sv + ); + return penalty_score(any_matrix).value == 104; + }()); } } #endif \ No newline at end of file diff --git a/include/qrcode/micro_qr/raw_code.h b/include/qrcode/micro_qr/raw_code.h index f4b7bbc..d8c180e 100644 --- a/include/qrcode/micro_qr/raw_code.h +++ b/include/qrcode/micro_qr/raw_code.h @@ -67,31 +67,34 @@ namespace qrcode::micro_qr::test { constexpr auto micro_qr_code_can_be_generated_from_given_version_and_error_level() { - constexpr auto any_content = std::array{{ - 0,1,0,0,0,0,0,0, 0,0,0,1,1,0,0,0, 1,0,1,0,1,1,0,0, 1,1,0,0,0,0,1,1, 0,0,0,0,0,0,0,0, - 1,0,0,0,0,1,1,0, 0,0,0,0,1,1,0,1, 0,0,1,0,0,0,1,0, 1,0,1,0,1,1,1,0, 0,0,1,1,0,0,0,0 - }}; // 01234567 (level L) - constexpr auto any_version = symbol_version::M2; + static_assert([]() + { + constexpr auto any_content = std::array{{ + 0,1,0,0,0,0,0,0, 0,0,0,1,1,0,0,0, 1,0,1,0,1,1,0,0, 1,1,0,0,0,0,1,1, 0,0,0,0,0,0,0,0, + 1,0,0,0,0,1,1,0, 0,0,0,0,1,1,0,1, 0,0,1,0,0,0,1,0, 1,0,1,0,1,1,1,0, 0,0,1,1,0,0,0,0 + }}; // 01234567 (level L) + constexpr auto any_version = symbol_version::M2; - constexpr auto symbol = make_raw_code(any_version, any_content); + auto const symbol = make_raw_code(any_version, any_content); - using qrcode::structure::make_matrix; - using namespace std::literals; - static_assert(symbol == make_matrix({13,13}, - "*******-*-*-*" - "*-----*--++,," - "*-***-*--,,++" - "*-***-*--,,,+" - "*-***-*--++,+" - "*-----*--,,,," - "*******--,,,+" - "---------,,+," - "*--------,,,," - "-,,,+,,+,,+,," - "*++++,+++,,,," - "-,,,+,,,,+,,," - "*,,,+,+,,,++,"sv - )); + using qrcode::structure::make_matrix; + using namespace std::literals; + return symbol == make_matrix({13,13}, + "*******-*-*-*" + "*-----*--++,," + "*-***-*--,,++" + "*-***-*--,,,+" + "*-***-*--++,+" + "*-----*--,,,," + "*******--,,,+" + "---------,,+," + "*--------,,,," + "-,,,+,,+,,+,," + "*++++,+++,,,," + "-,,,+,,,,+,,," + "*,,,+,+,,,++,"sv + ); + }()); } } #endif \ No newline at end of file diff --git a/include/qrcode/qr/dark_module_score.h b/include/qrcode/qr/dark_module_score.h index 262b00c..6e44cee 100644 --- a/include/qrcode/qr/dark_module_score.h +++ b/include/qrcode/qr/dark_module_score.h @@ -85,15 +85,18 @@ namespace qrcode::qr::detail::test { constexpr auto dark_module_count_returns_the_number_of_dark_modules() { - using qrcode::structure::make_matrix; - - constexpr auto some_modules = make_matrix({7,3}, std::array{ - 1,0,0,0,0,0,1, - 1,0,1,1,0,0,1, - 0,0,0,0,0,0,1 - }); - - static_assert(dark_module_count(some_modules) == 7); + static_assert([]() + { + using qrcode::structure::make_matrix; + + auto const some_modules = make_matrix({7,3}, std::array{ + 1,0,0,0,0,0,1, + 1,0,1,1,0,0,1, + 0,0,0,0,0,0,1 + }); + + return dark_module_count(some_modules) == 7; + }()); } constexpr auto nearest_five_percentage_step_returns_the_distance_to_50_percent_in_five_percent_steps() @@ -118,15 +121,18 @@ namespace qrcode::qr::test { constexpr auto dark_module_score_returns_the_penalty_score_derived_from_number_of_five_percent_steps_away_from_50_percent_dark_modules() { - using qrcode::structure::make_matrix; - - constexpr auto some_modules = make_matrix({7,3}, std::array{ - 1,0,0,0,0,0,1, - 1,0,1,1,0,0,1, - 0,0,0,0,0,0,1 - }); - - static_assert(dark_module_score(some_modules) == (3 * penalty_weight(4))); + static_assert([]() + { + using qrcode::structure::make_matrix; + + auto const some_modules = make_matrix({7,3}, std::array{ + 1,0,0,0,0,0,1, + 1,0,1,1,0,0,1, + 0,0,0,0,0,0,1 + }); + + return dark_module_score(some_modules) == (3 * penalty_weight(4)); + }()); } } #endif \ No newline at end of file diff --git a/include/qrcode/qr/finalize_symbol.h b/include/qrcode/qr/finalize_symbol.h index eb2905c..073a49c 100644 --- a/include/qrcode/qr/finalize_symbol.h +++ b/include/qrcode/qr/finalize_symbol.h @@ -59,62 +59,65 @@ namespace qrcode::qr { constexpr auto finalize_determines_the_best_mask_and_stores_its_id_in_given_symbol() { - using qrcode::structure::make_matrix; - using namespace std::literals; + static_assert([]() + { + using qrcode::structure::make_matrix; + using namespace std::literals; - constexpr auto any_designator = symbol_designator{symbol_version{1}, error_correction::level_M}; - constexpr auto any_unmasked = make_matrix({21,21}, - "*******--,,+,-*******" - "*-----*--,++,-*-----*" - "*-***-*--+,,+-*-***-*" - "*-***-*--,,,+-*-***-*" - "*-***-*--+++,-*-***-*" - "*-----*--+,,,-*-----*" - "*******-*-*-*-*******" - "---------+,+,--------" - "------*--,,,,--------" - "+,,,,+-++++,,,,,,+,,," - "+,++,,*+,,,+++,+++,++" - "+,,++,-,,,,,+,,,++,,," - "+,,,++*+++,+++,++,+,," - "--------*+++,+++,+,,," - "*******--,+,,,+,,,+,," - "*-----*--+++,+++,,,,+" - "*-***-*--+,,,,,,,+,,," - "*-***-*--,,,,,,,,,+,," - "*-***-*--+++++,++,,,," - "*-----*--+,,+,,,+,,+," - "*******--,++++,++,,,,"sv - ); - constexpr auto selected_mask_id = 0; - - static_assert(finalize(any_unmasked, any_designator) == symbol{ - any_designator, - selected_mask_id, - make_matrix({21,21}, - "*******--,+++-*******" - "*-----*-*++,,-*-----*" - "*-***-*--++,,-*-***-*" - "*-***-*--+,++-*-***-*" - "*-***-*-*+,++-*-***-*" - "*-----*--,,+,-*-----*" + constexpr auto any_designator = symbol_designator{symbol_version{1}, error_correction::level_M}; + auto const any_unmasked = make_matrix({21,21}, + "*******--,,+,-*******" + "*-----*--,++,-*-----*" + "*-***-*--+,,+-*-***-*" + "*-***-*--,,,+-*-***-*" + "*-***-*--+++,-*-***-*" + "*-----*--+,,,-*-----*" "*******-*-*-*-*******" - "---------,,,,--------" - "*-*-*-*--,+,+---*--*-" - "++,+,,-,+,++,+,+,,,+," - ",,,++,*++,++,+++,+++," - "++,,++-+,+,+++,++,,+," - ",,+,,+*+,+++,+++,,,,+" - "--------*,+,,,+,,,,+," - "*******--,,,+,,,+,,,+" - "*-----*--,+,,,+,,+,++" - "*-***-*-*++,+,+,+++,+" - "*-***-*--+,+,+,+,+++," - "*-***-*-*+,+,+++,,+,+" - "*-----*--,,+++,+++,,," - "*******-*,,+,+++,,+,+"sv - ) - }); + "---------+,+,--------" + "------*--,,,,--------" + "+,,,,+-++++,,,,,,+,,," + "+,++,,*+,,,+++,+++,++" + "+,,++,-,,,,,+,,,++,,," + "+,,,++*+++,+++,++,+,," + "--------*+++,+++,+,,," + "*******--,+,,,+,,,+,," + "*-----*--+++,+++,,,,+" + "*-***-*--+,,,,,,,+,,," + "*-***-*--,,,,,,,,,+,," + "*-***-*--+++++,++,,,," + "*-----*--+,,+,,,+,,+," + "*******--,++++,++,,,,"sv + ); + constexpr auto selected_mask_id = 0; + + return finalize(any_unmasked, any_designator) == symbol{ + any_designator, + selected_mask_id, + make_matrix({21,21}, + "*******--,+++-*******" + "*-----*-*++,,-*-----*" + "*-***-*--++,,-*-***-*" + "*-***-*--+,++-*-***-*" + "*-***-*-*+,++-*-***-*" + "*-----*--,,+,-*-----*" + "*******-*-*-*-*******" + "---------,,,,--------" + "*-*-*-*--,+,+---*--*-" + "++,+,,-,+,++,+,+,,,+," + ",,,++,*++,++,+++,+++," + "++,,++-+,+,+++,++,,+," + ",,+,,+*+,+++,+++,,,,+" + "--------*,+,,,+,,,,+," + "*******--,,,+,,,+,,,+" + "*-----*--,+,,,+,,+,++" + "*-***-*-*++,+,+,+++,+" + "*-***-*--+,+,+,+,+++," + "*-***-*-*+,+,+++,,+,+" + "*-----*--,,+++,+++,,," + "*******-*,,+,+++,,+,+"sv + ) + }; + }()); } } #endif diff --git a/include/qrcode/qr/finder_like_score.h b/include/qrcode/qr/finder_like_score.h index 7a36ce3..affbe79 100644 --- a/include/qrcode/qr/finder_like_score.h +++ b/include/qrcode/qr/finder_like_score.h @@ -138,34 +138,41 @@ namespace qrcode::qr::detail::test constexpr auto horizontal_finder_like_score_searches_horizontally_for_finder_pattern_in_given_matrix_and_returns_penalties_if_pattern_has_been_found() { - using qrcode::structure::make_matrix; - constexpr auto some_modules = make_matrix({11,3}, std::array{ - 1,0,1,1,1,0,1,0,0,0,0, - 1,0,0,0,0,0,1,0,0,0,1, - 0,0,0,0,1,0,1,1,1,0,1, - }); - - static_assert(horizontal_finder_like_score(some_modules) == (2 * penalty_weight(3))); + static_assert([]() + { + using qrcode::structure::make_matrix; + auto const some_modules = make_matrix({11,3}, std::array{ + 1,0,1,1,1,0,1,0,0,0,0, + 1,0,0,0,0,0,1,0,0,0,1, + 0,0,0,0,1,0,1,1,1,0,1, + }); + + return horizontal_finder_like_score(some_modules) == (2 * penalty_weight(3)); + }()); } constexpr auto vertical_finder_like_score_searches_vertically_for_finder_pattern_in_given_matrix_and_returns_penalties_if_pattern_has_been_found() { - using qrcode::structure::make_matrix; - constexpr auto some_modules = make_matrix({3,11}, std::array{ - 1,1,0, - 0,0,0, - 1,0,0, - 1,0,0, - 1,0,1, - 0,0,0, - 1,1,1, - 0,0,1, - 0,0,1, - 0,0,0, - 0,1,1 - }); - - static_assert(vertical_finder_like_score(some_modules) == (2 * penalty_weight(3))); + static_assert([]() + { + using qrcode::structure::make_matrix; + auto const some_modules = make_matrix({3,11}, std::array{ + 1,1,0, + 0,0,0, + 1,0,0, + 1,0,0, + 1,0,1, + 0,0,0, + 1,1,1, + 0,0,1, + 0,0,1, + 0,0,0, + 0,1,1 + }); + + return vertical_finder_like_score(some_modules) == (2 * penalty_weight(3)); + }()); + } } @@ -173,22 +180,25 @@ namespace qrcode::qr::test { constexpr auto finder_like_score_searches_for_finder_pattern_in_given_matrix_and_returns_penalties_if_pattern_has_been_found() { - using qrcode::structure::make_matrix; - constexpr auto some_modules = make_matrix({11,11}, std::array{ - 1,1,1,1,1,1,1,0,0,0,1, - 1,0,0,0,0,0,1,0,0,0,0, - 1,0,1,1,1,0,1,0,0,0,0, - 1,0,1,1,1,0,1,0,0,0,1, - 1,0,1,1,1,0,1,0,1,0,1, - 1,0,0,0,0,0,1,0,0,0,1, - 1,1,1,1,1,1,1,0,1,0,1, - 0,0,0,0,0,0,0,0,1,0,1, - 1,1,0,0,1,1,1,0,1,0,1, - 1,0,0,0,0,0,1,0,0,1,1, - 0,0,0,1,1,0,1,0,1,0,0 - }); - - static_assert(finder_like_score(some_modules) == (3 * penalty_weight(3))); + static_assert([]() + { + using qrcode::structure::make_matrix; + auto const some_modules = make_matrix({11,11}, std::array{ + 1,1,1,1,1,1,1,0,0,0,1, + 1,0,0,0,0,0,1,0,0,0,0, + 1,0,1,1,1,0,1,0,0,0,0, + 1,0,1,1,1,0,1,0,0,0,1, + 1,0,1,1,1,0,1,0,1,0,1, + 1,0,0,0,0,0,1,0,0,0,1, + 1,1,1,1,1,1,1,0,1,0,1, + 0,0,0,0,0,0,0,0,1,0,1, + 1,1,0,0,1,1,1,0,1,0,1, + 1,0,0,0,0,0,1,0,0,1,1, + 0,0,0,1,1,0,1,0,1,0,0 + }); + + return finder_like_score(some_modules) == (3 * penalty_weight(3)); + }()); } } #endif \ No newline at end of file diff --git a/include/qrcode/qr/penalty_score.h b/include/qrcode/qr/penalty_score.h index bae5d39..0bad2a2 100644 --- a/include/qrcode/qr/penalty_score.h +++ b/include/qrcode/qr/penalty_score.h @@ -49,43 +49,46 @@ namespace qrcode::qr::test { constexpr auto penalty_scores_consist_of_adjacent_score_and_same_color_score_and_finder_like_score_and_dark_module_score() { - using qrcode::structure::make_matrix; - using namespace std::literals; + static_assert([]() + { + using qrcode::structure::make_matrix; + using namespace std::literals; - constexpr auto any_matrix = make_matrix({21,21}, - "*******.**....*******" - "*.....*.*..*..*.....*" - "*.***.*.*..**.*.***.*" - "*.***.*.*.....*.***.*" - "*.***.*.*.*...*.***.*" - "*.....*...*...*.....*" - "*******.*.*.*.*******" - "........*............" - ".**.*.**....*.*.*****" - ".*......****....*...*" - "..**.***.**...*.**..." - ".**.**.*..**.*.*.***." - "*...*.*.*.***.***.*.*" - "........**.*..*...*.*" - "*******.*.*....*.**.." - "*.....*..*.**.**.*..." - "*.***.*.*.*...*******" - "*.***.*..*.*.*.*...*." - "*.***.*.*...****.*..*" - "*.....*.*.**.*...*.**" - "*******.....****....*"sv - ); + auto const any_matrix = make_matrix({21,21}, + "*******.**....*******" + "*.....*.*..*..*.....*" + "*.***.*.*..**.*.***.*" + "*.***.*.*.....*.***.*" + "*.***.*.*.*...*.***.*" + "*.....*...*...*.....*" + "*******.*.*.*.*******" + "........*............" + ".**.*.**....*.*.*****" + ".*......****....*...*" + "..**.***.**...*.**..." + ".**.**.*..**.*.*.***." + "*...*.*.*.***.***.*.*" + "........**.*..*...*.*" + "*******.*.*....*.**.." + "*.....*..*.**.**.*..." + "*.***.*.*.*...*******" + "*.***.*..*.*.*.*...*." + "*.***.*.*...****.*..*" + "*.....*.*.**.*...*.**" + "*******.....****....*"sv + ); - constexpr auto s1 = adjacent_score(any_matrix); - constexpr auto s2 = same_color_score(any_matrix); - constexpr auto s3 = finder_like_score(any_matrix); - constexpr auto s4 = dark_module_score(any_matrix); + auto const s1 = adjacent_score(any_matrix); + auto const s2 = same_color_score(any_matrix); + auto const s3 = finder_like_score(any_matrix); + auto const s4 = dark_module_score(any_matrix); - static_assert(s1 == 180); - static_assert(s2 == 90); - static_assert(s3 == 80); - static_assert(s4 == 0); - static_assert(penalty_score(any_matrix) == (s1+s2+s3+s4)); + return s1 == 180 + && s2 == 90 + && s3 == 80 + && s4 == 0 + && penalty_score(any_matrix) == (s1+s2+s3+s4); + }()); } } #endif \ No newline at end of file diff --git a/include/qrcode/qr/qr.h b/include/qrcode/qr/qr.h index 2a3ca0a..0d5d5d8 100644 --- a/include/qrcode/qr/qr.h +++ b/include/qrcode/qr/qr.h @@ -97,137 +97,149 @@ namespace qrcode::qr { constexpr auto qr_symbols_can_be_generated_from_given_version_and_error_level() { - using qrcode::structure::make_matrix; - using namespace std::literals; - - constexpr auto any_data = "01234567"sv; - constexpr auto any_version = symbol_version{1}; - constexpr auto any_error_level = error_correction::level_M; - constexpr auto selected_mask_id = 0; - - constexpr auto s = make_symbol(any_data, any_version, any_error_level).value(); - - static_assert(s == symbol{ - symbol_designator{any_version, any_error_level}, - selected_mask_id, - make_matrix({21,21}, - "*******--,+++-*******" - "*-----*-*++,,-*-----*" - "*-***-*--++,,-*-***-*" - "*-***-*--+,++-*-***-*" - "*-***-*-*+,++-*-***-*" - "*-----*--,,+,-*-----*" - "*******-*-*-*-*******" - "---------,,,,--------" - "*-*-*-*--,+,+---*--*-" - "++,+,,-,+,++,+,+,,,+," - ",,,++,*++,++,+++,+++," - "++,,++-+,+,+++,++,,+," - ",,+,,+*+,+++,+++,,,,+" - "--------*,+,,,+,,,,+," - "*******--,,,+,,,+,,,+" - "*-----*--,+,,,+,,+,++" - "*-***-*-*++,+,+,+++,+" - "*-***-*--+,+,+,+,+++," - "*-***-*-*+,+,+++,,+,+" - "*-----*--,,+++,+++,,," - "*******-*,,+,+++,,+,+"sv - ) - }); + static_assert([]() + { + using qrcode::structure::make_matrix; + using namespace std::literals; + + constexpr auto any_data = "01234567"sv; + constexpr auto any_version = symbol_version{1}; + constexpr auto any_error_level = error_correction::level_M; + constexpr auto selected_mask_id = 0; + + auto const s = make_symbol(any_data, any_version, any_error_level).value(); + + return s == symbol{ + symbol_designator{any_version, any_error_level}, + selected_mask_id, + make_matrix({21,21}, + "*******--,+++-*******" + "*-----*-*++,,-*-----*" + "*-***-*--++,,-*-***-*" + "*-***-*--+,++-*-***-*" + "*-***-*-*+,++-*-***-*" + "*-----*--,,+,-*-----*" + "*******-*-*-*-*******" + "---------,,,,--------" + "*-*-*-*--,+,+---*--*-" + "++,+,,-,+,++,+,+,,,+," + ",,,++,*++,++,+++,+++," + "++,,++-+,+,+++,++,,+," + ",,+,,+*+,+++,+++,,,,+" + "--------*,+,,,+,,,,+," + "*******--,,,+,,,+,,,+" + "*-----*--,+,,,+,,+,++" + "*-***-*-*++,+,+,+++,+" + "*-***-*--+,+,+,+,+++," + "*-***-*-*+,+,+++,,+,+" + "*-----*--,,+++,+++,,," + "*******-*,,+,+++,,+,+"sv + ) + }; + }()); } constexpr auto qr_symbols_can_be_generated_from_given_error_level_and_message() { - using qrcode::structure::make_matrix; - using namespace std::literals; - - constexpr auto any_data = "ABRACADABRA"sv; - constexpr auto any_version = symbol_version{1}; - constexpr auto any_error_level = error_correction::level_M; - constexpr auto selected_mask_id = 7; - - constexpr auto s = make_symbol(any_data, any_error_level).value(); - - static_assert(s == symbol{ - symbol_designator{any_version, any_error_level}, - selected_mask_id, - make_matrix({21,21}, - "*******--,,,,-*******" - "*-----*--+,++-*-----*" - "*-***-*--+++,-*-***-*" - "*-***-*--,,++-*-***-*" - "*-***-*--+,++-*-***-*" - "*-----*-*,+,,-*-----*" - "*******-*-*-*-*******" - "---------+,,,--------" - "*--*-**-*,+++*-*-----" - "++,,+,-++,,+,++++++,," - ",,++++*,,+++,++,,++,," - ",,,,,+-+,,,,+++++,+++" - ",,++,,*,++++,,+,,+++," - "--------*+,,,+++++,+," - "*******--++++,+,++,,+" - "*-----*-*+,,,,+++++,," - "*-***-*--++,+++,+,+,+" - "*-***-*-*,,,,++,,,+++" - "*-***-*--,++,++,,++,+" - "*-----*--,,++,,+,++,+" - "*******-*+,,,+,,+,+,,"sv - ) - }); + static_assert([]() + { + using qrcode::structure::make_matrix; + using namespace std::literals; + + constexpr auto any_data = "ABRACADABRA"sv; + constexpr auto any_version = symbol_version{1}; + constexpr auto any_error_level = error_correction::level_M; + constexpr auto selected_mask_id = 7; + + auto const s = make_symbol(any_data, any_error_level).value(); + + return s == symbol{ + symbol_designator{any_version, any_error_level}, + selected_mask_id, + make_matrix({21,21}, + "*******--,,,,-*******" + "*-----*--+,++-*-----*" + "*-***-*--+++,-*-***-*" + "*-***-*--,,++-*-***-*" + "*-***-*--+,++-*-***-*" + "*-----*-*,+,,-*-----*" + "*******-*-*-*-*******" + "---------+,,,--------" + "*--*-**-*,+++*-*-----" + "++,,+,-++,,+,++++++,," + ",,++++*,,+++,++,,++,," + ",,,,,+-+,,,,+++++,+++" + ",,++,,*,++++,,+,,+++," + "--------*+,,,+++++,+," + "*******--++++,+,++,,+" + "*-----*-*+,,,,+++++,," + "*-***-*--++,+++,+,+,+" + "*-***-*-*,,,,++,,,+++" + "*-***-*--,++,++,,++,+" + "*-----*--,,++,,+,++,+" + "*******-*+,,,+,,+,+,,"sv + ) + }; + }()); } constexpr auto qr_symbol_generation_fails_if_data_is_too_large_for_given_symbol_version() { - using namespace std::literals; - constexpr auto any_data = "This is way too long. Sorry! This does not work!!!"sv; - constexpr auto any_version = symbol_version{1}; - constexpr auto any_error_level = error_correction::level_L; + static_assert([]() + { + using namespace std::literals; + constexpr auto any_data = "This is way too long. Sorry! This does not work!!!"sv; + constexpr auto any_version = symbol_version{1}; + constexpr auto any_error_level = error_correction::level_L; - constexpr auto s = make_symbol(any_data, any_version, any_error_level); + auto const s = make_symbol(any_data, any_version, any_error_level); - static_assert(!s.has_value()); + return !s.has_value(); + }()); } constexpr auto qr_symbols_support_eci_encoding() { - using qrcode::structure::make_matrix; - using namespace std::literals; - - constexpr auto any_eci_message = eci::view{eci::assignment_number{9}, "\xC1\xC2\xC3\xC4\xC5"sv}; - constexpr auto any_version = symbol_version{1}; - constexpr auto any_error_level = error_correction::level_L; - constexpr auto selected_mask_id = 5; - - constexpr auto s = make_symbol(any_eci_message, any_version, any_error_level).value(); - - static_assert(s == symbol{ - symbol_designator{any_version, any_error_level}, - selected_mask_id, - make_matrix({21,21}, - "*******--,,,+-*******" - "*-----*--,+,+-*-----*" - "*-***-*--,+++-*-***-*" - "*-***-*-*,+,+-*-***-*" - "*-***-*-*+,,+-*-***-*" - "*-----*--+,+,-*-----*" - "*******-*-*-*-*******" - "---------,,,,--------" - "**---***-,,+,---**---" - ",,,+,,-+,,,+++,,++,++" - ",,+++,*,,,,,+,++,,++," - "+,,,,+-,+,,++++,,,+,," - "++,+,+*,+,,++++++,+++" - "--------*,,,+,,+,+,,," - "*******-*,++,+,,,,++," - "*-----*-*++,,,+,+,+++" - "*-***-*--,,+,+,,+,,,+" - "*-***-*--+,++++,,+,,," - "*-***-*--,++++,,+++++" - "*-----*-*+,++++,,,+++" - "*******-*++,+,,,++,+,"sv - ) - }); + static_assert([]() + { + using qrcode::structure::make_matrix; + using namespace std::literals; + + constexpr auto any_eci_message = eci::view{eci::assignment_number{9}, "\xC1\xC2\xC3\xC4\xC5"sv}; + constexpr auto any_version = symbol_version{1}; + constexpr auto any_error_level = error_correction::level_L; + constexpr auto selected_mask_id = 5; + + auto const s = make_symbol(any_eci_message, any_version, any_error_level).value(); + + return s == symbol{ + symbol_designator{any_version, any_error_level}, + selected_mask_id, + make_matrix({21,21}, + "*******--,,,+-*******" + "*-----*--,+,+-*-----*" + "*-***-*--,+++-*-***-*" + "*-***-*-*,+,+-*-***-*" + "*-***-*-*+,,+-*-***-*" + "*-----*--+,+,-*-----*" + "*******-*-*-*-*******" + "---------,,,,--------" + "**---***-,,+,---**---" + ",,,+,,-+,,,+++,,++,++" + ",,+++,*,,,,,+,++,,++," + "+,,,,+-,+,,++++,,,+,," + "++,+,+*,+,,++++++,+++" + "--------*,,,+,,+,+,,," + "*******-*,++,+,,,,++," + "*-----*-*++,,,+,+,+++" + "*-***-*--,,+,+,,+,,,+" + "*-***-*--+,++++,,+,,," + "*-***-*--,++++,,+++++" + "*-----*-*+,++++,,,+++" + "*******-*++,+,,,++,+,"sv + ) + }; + }()); } } #endif diff --git a/include/qrcode/qr/raw_code.h b/include/qrcode/qr/raw_code.h index 4029e36..6da8ba6 100644 --- a/include/qrcode/qr/raw_code.h +++ b/include/qrcode/qr/raw_code.h @@ -73,43 +73,46 @@ namespace qrcode::qr { constexpr auto qr_codes_can_be_generated_from_given_version_and_content_bits() { - using qrcode::structure::make_matrix; - using namespace std::literals; + static_assert([]() + { + using qrcode::structure::make_matrix; + using namespace std::literals; - constexpr auto any_content = std::array{{ - 0,0,0,1,0,0,0,0, 0,0,1,0,0,0,0,0, 0,0,0,0,1,1,0,0, 0,1,0,1,0,1,1,0, 0,1,1,0,0,0,0,1, - 1,0,0,0,0,0,0,0, 1,1,1,0,1,1,0,0, 0,0,0,1,0,0,0,1, 1,1,1,0,1,1,0,0, 0,0,0,1,0,0,0,1, - 1,1,1,0,1,1,0,0, 0,0,0,1,0,0,0,1, 1,1,1,0,1,1,0,0, 0,0,0,1,0,0,0,1, 1,1,1,0,1,1,0,0, - 0,0,0,1,0,0,0,1, 1,0,1,0,0,1,0,1, 0,0,1,0,0,1,0,0, 1,1,0,1,0,1,0,0, 1,1,0,0,0,0,0,1, - 1,1,1,0,1,1,0,1, 0,0,1,1,0,1,1,0, 1,1,0,0,0,1,1,1, 1,0,0,0,0,1,1,1, 0,0,1,0,1,1,0,0, - 0,1,0,1,0,1,0,1 - }}; // 01234567 - constexpr auto any_version = symbol_version{1}; - constexpr auto code = make_raw_code(any_version, any_content); + constexpr auto any_content = std::array{{ + 0,0,0,1,0,0,0,0, 0,0,1,0,0,0,0,0, 0,0,0,0,1,1,0,0, 0,1,0,1,0,1,1,0, 0,1,1,0,0,0,0,1, + 1,0,0,0,0,0,0,0, 1,1,1,0,1,1,0,0, 0,0,0,1,0,0,0,1, 1,1,1,0,1,1,0,0, 0,0,0,1,0,0,0,1, + 1,1,1,0,1,1,0,0, 0,0,0,1,0,0,0,1, 1,1,1,0,1,1,0,0, 0,0,0,1,0,0,0,1, 1,1,1,0,1,1,0,0, + 0,0,0,1,0,0,0,1, 1,0,1,0,0,1,0,1, 0,0,1,0,0,1,0,0, 1,1,0,1,0,1,0,0, 1,1,0,0,0,0,0,1, + 1,1,1,0,1,1,0,1, 0,0,1,1,0,1,1,0, 1,1,0,0,0,1,1,1, 1,0,0,0,0,1,1,1, 0,0,1,0,1,1,0,0, + 0,1,0,1,0,1,0,1 + }}; // 01234567 + constexpr auto any_version = symbol_version{1}; + auto const code = make_raw_code(any_version, any_content); - static_assert(code == make_matrix({21,21}, - "*******--,,+,-*******" - "*-----*--,++,-*-----*" - "*-***-*--+,,+-*-***-*" - "*-***-*--,,,+-*-***-*" - "*-***-*--+++,-*-***-*" - "*-----*--+,,,-*-----*" - "*******-*-*-*-*******" - "---------+,+,--------" - "------*--,,,,--------" - "+,,,,+-++++,,,,,,+,,," - "+,++,,*+,,,+++,+++,++" - "+,,++,-,,,,,+,,,++,,," - "+,,,++*+++,+++,++,+,," - "--------*+++,+++,+,,," - "*******--,+,,,+,,,+,," - "*-----*--+++,+++,,,,+" - "*-***-*--+,,,,,,,+,,," - "*-***-*--,,,,,,,,,+,," - "*-***-*--+++++,++,,,," - "*-----*--+,,+,,,+,,+," - "*******--,++++,++,,,,"sv - )); + return code == make_matrix({21,21}, + "*******--,,+,-*******" + "*-----*--,++,-*-----*" + "*-***-*--+,,+-*-***-*" + "*-***-*--,,,+-*-***-*" + "*-***-*--+++,-*-***-*" + "*-----*--+,,,-*-----*" + "*******-*-*-*-*******" + "---------+,+,--------" + "------*--,,,,--------" + "+,,,,+-++++,,,,,,+,,," + "+,++,,*+,,,+++,+++,++" + "+,,++,-,,,,,+,,,++,,," + "+,,,++*+++,+++,++,+,," + "--------*+++,+++,+,,," + "*******--,+,,,+,,,+,," + "*-----*--+++,+++,,,,+" + "*-***-*--+,,,,,,,+,,," + "*-***-*--,,,,,,,,,+,," + "*-***-*--+++++,++,,,," + "*-----*--+,,+,,,+,,+," + "*******--,++++,++,,,,"sv + ); + }()); } } #endif diff --git a/include/qrcode/structure/apply_mask.h b/include/qrcode/structure/apply_mask.h index 22a15f4..ca4fdb0 100644 --- a/include/qrcode/structure/apply_mask.h +++ b/include/qrcode/structure/apply_mask.h @@ -86,21 +86,24 @@ namespace qrcode::structure::test { constexpr auto apply_mask_returns_a_callable_which_wraps_the_given_simple_boolean_mask_to_mask_any_given_matrix() { - using namespace std::literals; - constexpr auto any_mask = [](int i, int j) { return i == 1 && j == 0; }; - constexpr auto any_matrix = make_matrix({3,3}, - ",,," - ",,," - ",,,"sv - ); + static_assert([]() + { + using namespace std::literals; + constexpr auto any_mask = [](int i, int j) { return i == 1 && j == 0; }; + auto const any_matrix = make_matrix({3,3}, + ",,," + ",,," + ",,,"sv + ); - constexpr auto f = apply_mask_functor(any_mask); + constexpr auto f = apply_mask_functor(any_mask); - static_assert(f(any_matrix) == make_matrix({3,3}, - ",,," - "+,," - ",,,"sv - )); + return f(any_matrix) == make_matrix({3,3}, + ",,," + "+,," + ",,,"sv + ); + }()); } } #endif \ No newline at end of file diff --git a/include/qrcode/structure/matrix.h b/include/qrcode/structure/matrix.h index 166afbe..b7d1b13 100644 --- a/include/qrcode/structure/matrix.h +++ b/include/qrcode/structure/matrix.h @@ -130,30 +130,37 @@ namespace qrcode::structure::test { constexpr auto matrix_elements_are_all_default_initialized() { - constexpr auto any_size = dimension{3, 2}; - - constexpr auto any_matrix = matrix{any_size}; - - static_assert(element_at(any_matrix, {0,0}) == 0); - static_assert(element_at(any_matrix, {1,0}) == 0); - static_assert(element_at(any_matrix, {2,0}) == 0); - static_assert(element_at(any_matrix, {0,1}) == 0); - static_assert(element_at(any_matrix, {1,1}) == 0); - static_assert(element_at(any_matrix, {2,1}) == 0); + static_assert([]() + { + constexpr auto any_size = dimension{3, 2}; + + auto const any_matrix = matrix{any_size}; + + return element_at(any_matrix, {0,0}) == 0 + && element_at(any_matrix, {1,0}) == 0 + && element_at(any_matrix, {2,0}) == 0 + && element_at(any_matrix, {0,1}) == 0 + && element_at(any_matrix, {1,1}) == 0 + && element_at(any_matrix, {2,1}) == 0; + }()); } constexpr auto matrix_elements_can_be_initialized_by_fill_value() { - constexpr auto any_size = dimension{3, 2}; - - constexpr auto any_matrix = matrix{any_size, -1}; - - static_assert(element_at(any_matrix, {0,0}) == -1); - static_assert(element_at(any_matrix, {1,0}) == -1); - static_assert(element_at(any_matrix, {2,0}) == -1); - static_assert(element_at(any_matrix, {0,1}) == -1); - static_assert(element_at(any_matrix, {1,1}) == -1); - static_assert(element_at(any_matrix, {2,1}) == -1); + static_assert([]() + { + constexpr auto any_size = dimension{3, 2}; + constexpr auto any_fill_value = 42; + + auto const any_matrix = matrix{any_size, any_fill_value}; + + return element_at(any_matrix, {0,0}) == any_fill_value + && element_at(any_matrix, {1,0}) == any_fill_value + && element_at(any_matrix, {2,0}) == any_fill_value + && element_at(any_matrix, {0,1}) == any_fill_value + && element_at(any_matrix, {1,1}) == any_fill_value + && element_at(any_matrix, {2,1}) == any_fill_value; + }()); } constexpr auto matrices_define_their_element_type_as_value_type() @@ -182,7 +189,7 @@ namespace qrcode::structure::test constexpr auto matrices_support_random_access_to_their_elements_when_given_matrix_is_non_const() { - auto f = [] + static_assert([]() { auto any_matrix = matrix{dimension{5,9}}; constexpr auto any_position = position{4,6}; @@ -195,13 +202,12 @@ namespace qrcode::structure::test return element_at(any_matrix, any_position) == any_value && element_at(any_matrix, other_position) == other_value; - }; - static_assert(f()); + }()); } constexpr auto matrices_support_readonly_access_to_their_elements_when_given_matrix_is_const() { - auto f = [] + static_assert([]() { auto any_matrix = matrix{dimension{5,9}}; constexpr auto any_position = position{4,6}; @@ -215,24 +221,26 @@ namespace qrcode::structure::test return element_at(const_matrix, any_position) == any_value && element_at(const_matrix, other_position) == other_value; - }; - static_assert(f()); + }()); } constexpr auto matrix_can_be_asked_whether_a_point_lies_inside() { - constexpr auto any_size = dimension{3, 2}; + static_assert([]() + { + constexpr auto any_size = dimension{3, 2}; - constexpr auto any_matrix = matrix{any_size}; - - static_assert(contains(any_matrix, {0,0})); - static_assert(!contains(any_matrix, {-1,0})); - static_assert(contains(any_matrix, {1,0})); - static_assert(!contains(any_matrix, {0,-1})); - static_assert(contains(any_matrix, {2,1})); - static_assert(!contains(any_matrix, {5,1})); - static_assert(contains(any_matrix, {0,1})); - static_assert(!contains(any_matrix, {0,10})); + auto const any_matrix = matrix{any_size}; + + return contains(any_matrix, { 0, 0}) + && !contains(any_matrix, {-1, 0}) + && contains(any_matrix, { 1, 0}) + && !contains(any_matrix, { 0, -1}) + && contains(any_matrix, { 2, 1}) + && !contains(any_matrix, { 5, 1}) + && contains(any_matrix, { 0, 1}) + && !contains(any_matrix, { 0, 10}); + }()); } } #endif diff --git a/include/qrcode/symbol.h b/include/qrcode/symbol.h index 74f74d1..d1be888 100644 --- a/include/qrcode/symbol.h +++ b/include/qrcode/symbol.h @@ -156,11 +156,14 @@ namespace qrcode::test constexpr auto symbols_can_be_constructed_with_given_module_matrix() { - constexpr auto any_matrix = matrix{{4,6}}; - constexpr auto any_designator = designator_stub{1, 2}; - constexpr auto any_mask_pattern = 7; - - static_assert(modules(symbol{any_designator, any_mask_pattern, any_matrix}) == any_matrix); + static_assert([]() + { + auto const any_matrix = matrix{{4,6}}; + constexpr auto any_designator = designator_stub{1, 2}; + constexpr auto any_mask_pattern = 7; + + return modules(symbol{any_designator, any_mask_pattern, any_matrix}) == any_matrix; + }()); } constexpr auto symbols_have_a_designator() From 4707847368ac306f711e7122fc866ce10575e50a Mon Sep 17 00:00:00 2001 From: Melissa Bauer <75776786+ixik-melissa@users.noreply.github.com> Date: Fri, 1 Aug 2025 20:48:24 +0200 Subject: [PATCH 93/98] fix build --- demo/demo.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/demo/demo.cpp b/demo/demo.cpp index ba3ac3c..259f51e 100644 --- a/demo/demo.cpp +++ b/demo/demo.cpp @@ -213,6 +213,8 @@ int main(int argc, char** argv) } print_options(std::cerr, *options); + using std::begin; + using std::end; auto message = options->message; auto std_input = cx::vector{}; if (empty(options->message)) From 1f7a862781f3661c08f1c5805a55705827988c3e Mon Sep 17 00:00:00 2001 From: Melissa Bauer <75776786+ixik-melissa@users.noreply.github.com> Date: Fri, 1 Aug 2025 20:49:15 +0200 Subject: [PATCH 94/98] use std vector when possible --- include/cx/vector.h | 203 ++++++++++++-------------------------------- 1 file changed, 56 insertions(+), 147 deletions(-) diff --git a/include/cx/vector.h b/include/cx/vector.h index 3dcc56f..ddcb3cc 100644 --- a/include/cx/vector.h +++ b/include/cx/vector.h @@ -23,12 +23,13 @@ */ #pragma once +#include #include #include #include #include -namespace cx +namespace cx::detail { // poor man's constexpr stack-based vector template @@ -118,22 +119,6 @@ namespace cx elements[current_size++] = T{std::forward(args)...}; } - constexpr auto erase(const_iterator first, const_iterator last) - { - auto const dst = begin() + (first - begin()); - auto const src = begin() + (last - begin()); - - auto const old_end = end(); - auto const new_end = std::move(src, old_end, dst); - - current_size = new_end - begin(); - - if constexpr (!std::is_trivially_destructible_v) - std::destroy(new_end, old_end); - - return new_end; - } - constexpr auto& operator[](int index) const noexcept { return elements[index]; } constexpr auto& operator[](int index) noexcept { return elements[index]; } @@ -169,12 +154,24 @@ namespace cx using std::ranges::empty; template - constexpr auto operator==(cx::vector const& a, cx::vector const& b) noexcept + constexpr auto operator==(vector const& a, vector const& b) noexcept { return std::equal(begin(a), end(a), begin(b), end(b)); } } +namespace cx +{ + // msvc or the C++ standard library respectively seems to have problems in constexpr sitations, + // use old implementation in constexpr instead +#ifdef _MSC_VER + using vector = std::conditional_t; +#else + template + using vector = std::vector; +#endif +} + #ifdef QRCODE_TESTS_ENABLED namespace cx::test { @@ -222,8 +219,11 @@ namespace cx::test constexpr auto cx_vectors_can_be_initialized_with_preexisting_elements() { - constexpr auto v = cx::vector{1,2,3,4,5}; - static_assert(std::ranges::equal(v, std::array{1,2,3,4,5})); + static_assert([]() + { + auto const v = cx::vector{1,2,3,4,5}; + return std::ranges::equal(v, std::array{1,2,3,4,5}); + }()); } constexpr auto cx_vectors_have_a_size() @@ -235,13 +235,6 @@ namespace cx::test static_assert(size(cx::vector{3,1,4,7}) == 4); } - constexpr auto cx_vectors_have_a_maximum_size_of_40000_this_is_enough_space_for_qr_applications() - { - static_assert(cx::vector{}.max_size() == 40000); - static_assert(cx::vector{}.max_size() == 40000); - static_assert(cx::vector{}.max_size() == 40000); - } - constexpr auto cx_vectors_can_be_asked_whether_they_are_empty() { static_assert(empty(cx::vector{})); @@ -250,39 +243,50 @@ namespace cx::test constexpr auto cx_vectors_can_be_initialized_with_preexisting_elements_less_than_cx_vectors_capacity() { - constexpr auto v = cx::vector{1,2,3}; - static_assert(std::ranges::equal(v, std::array{1,2,3})); - static_assert(size(v) == 3); + static_assert([]() + { + auto const v = cx::vector{1,2,3}; + return std::ranges::equal(v, std::array{1,2,3}) + && size(v) == 3; + }); } constexpr auto cx_vectors_can_be_initialized_with_a_specified_number_of_elements_equal_or_less_than_cx_vectors_capacity() { - constexpr auto v = cx::vector(4); - static_assert(std::ranges::equal(v, std::array{int{}, int{}, int{}, int{}})); - static_assert(size(v) == 4); + static_assert([]() + { + auto const v = cx::vector(4); + return std::ranges::equal(v, std::array{int{}, int{}, int{}, int{}}) + && size(v) == 4; + }()); } constexpr auto cx_vectors_can_be_initialized_with_a_specified_number_of_elements_and_a_fill_element_equal_or_less_than_cx_vectors_capacity() { - constexpr auto v = cx::vector(4,-2); - static_assert(std::ranges::equal(v, std::array{-2,-2,-2,-2})); - static_assert(size(v) == 4); + static_assert([]() + { + auto const v = cx::vector(4,-2); + return std::ranges::equal(v, std::array{-2,-2,-2,-2}) + && size(v) == 4; + }()); } constexpr auto cx_vectors_can_be_initialized_from_iterator_range() { - constexpr auto some_elements = std::array{1,2,3,4,5}; - - constexpr auto v = cx::vector{begin(some_elements), end(some_elements)}; - - static_assert(std::ranges::equal(v, std::array{1,2,3,4,5})); + static_assert([]() + { + auto const some_elements = std::array{1,2,3,4,5}; + auto const v = cx::vector{begin(some_elements), end(some_elements)}; + return std::ranges::equal(v, std::array{1,2,3,4,5}); + }()); + } constexpr auto cx_vectors_allow_accessing_their_elements_by_reverse_iterators() { - auto f = [] + static_assert([] { - constexpr auto v = cx::vector{1,2,3,4,5}; + auto const v = cx::vector{1,2,3,4,5}; auto const& cv = v; auto r = rbegin(v); @@ -297,8 +301,7 @@ namespace cx::test if (&*(rend(v)-1) != &*begin(v)) return false; if (&*(rend(cv)-1) != &*begin(v)) return false; return true; - }; - static_assert(f()); + }()); } constexpr auto cx_vectors_allow_explicit_read_access_to_their_first_element_if_vector_has_any_data() @@ -309,7 +312,7 @@ namespace cx::test constexpr auto cx_vectors_allow_explicit_write_access_to_their_first_element_if_vector_has_any_data() { - auto f = [] + static_assert([] { auto v = cx::vector{3,1,4,1,5}; auto const& cv = v; @@ -319,8 +322,7 @@ namespace cx::test v.front() = 7; return element == 7 && const_element == 7; - }; - static_assert(f()); + }()); } constexpr auto cx_vectors_allow_explicit_read_access_to_theirlast_element_if_vector_has_any_data() @@ -331,7 +333,7 @@ namespace cx::test constexpr auto cx_vectors_allow_explicit_write_access_to_their_last_element_if_vector_has_any_data() { - auto f = [] + static_assert([] { auto v = cx::vector{3,1,4,1,5}; auto const& cv = v; @@ -341,103 +343,12 @@ namespace cx::test v.back() = 7; return element == 7 && const_element == 7; - }; - static_assert(f()); - } - - constexpr auto cx_vectors_allow_erasing_elements_from_specified_range() - { - auto f = [] - { - auto v = cx::vector{3,1,4,1,5}; - - v.erase(begin(v)+3, end(v)); - - return v; - }; - static_assert(std::ranges::equal(f(), std::array{3,1,4})); - } - - constexpr auto cx_vectors_allow_erasing_elements_from_specified_range___erasing_everything() - { - auto f = [] - { - auto v = cx::vector{3,1,4,1,5,8,9,2,7,0}; - - v.erase(begin(v), end(v)); - - return begin(v) ==end(v); - }; - static_assert(f()); - } - - constexpr auto cx_vectors_allow_erasing_elements_from_specified_range___tail_is_longer_than_erased_range() - { - auto f = [] - { - auto v = cx::vector{3,1,4,1,5,8,9,2,7,0}; - - v.erase(begin(v)+2, begin(v)+5); - - return v; - }; - constexpr auto result = f(); - - static_assert(std::ranges::equal(result, std::array{3,1,8,9,2,7,0})); - static_assert(size(result) == 7); - } - - constexpr auto cx_vectors_allow_erasing_elements_from_specified_range___move_assigns_elements_at_their_new_positions() - { - auto f = [] - { - struct only_move_assignable - { - constexpr only_move_assignable() : state{0} {} - constexpr only_move_assignable(int value) : state{value} {} - only_move_assignable(only_move_assignable const&) = delete; - only_move_assignable(only_move_assignable&&) = delete; - only_move_assignable& operator=(only_move_assignable const&) = delete; - only_move_assignable& operator=(only_move_assignable&&) = default; - ~only_move_assignable() = default; - constexpr auto operator==(only_move_assignable const& rhs) const noexcept { return state == rhs.state; } - - int state; - }; - - auto v = cx::vector{}; - v.push_back({3}); - v.push_back({1}); - v.push_back({4}); - - v.erase(begin(v), begin(v)+1); - - auto i = begin(v); - for (auto& n : std::array{only_move_assignable{1}, only_move_assignable{4}}) - if (!(*(i++) == n)) - return false; - - return size(v) == 2; - }; - static_assert(f()); - } - - constexpr auto cx_vectors_allow_erasing_elements_from_specified_range___returns_iterator_following_the_last_removed_element() - { - auto f = [] - { - auto v = cx::vector{3,1,4,1,5,8,9,2,7,0}; - - auto iterator = v.erase(begin(v)+2, begin(v)+3); - - return iterator == (begin(v)+9); - }; - static_assert(f()); + }()); } constexpr auto cx_vectors_support_read_only_index_access() { - auto f = [] + static_assert([]() { auto v = cx::vector{1,2,3,4,5}; @@ -446,13 +357,12 @@ namespace cx::test *(begin(v)+3) = 7; return by_value == 4 && by_reference == 7; - }; - static_assert(f()); + }()); } constexpr auto cx_vectors_support_write_index_access() { - auto f = [] + static_assert([]() { auto v = cx::vector{1,2,3,4,5}; @@ -461,8 +371,7 @@ namespace cx::test by_reference = 7; return by_value == 4 && by_reference == 7; - }; - static_assert(f()); + }()); } } #endif From bf9eafdf497e5be0da442aa7060044208ebe764f Mon Sep 17 00:00:00 2001 From: Melissa Bauer <75776786+ixik-melissa@users.noreply.github.com> Date: Fri, 1 Aug 2025 20:50:24 +0200 Subject: [PATCH 95/98] remove deprecated information from readme --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 6feafec..4ad39a8 100644 --- a/README.md +++ b/README.md @@ -99,10 +99,6 @@ int main() ## How to run the tests If you would like to run the tests, one has to add the following _CMake_ flag: `-DQRCODE_TESTS_ENABLED:BOOL=True` -## Debug builds using MSVC -Building with tests enabled in _Debug_ configuration won't build due to an issue in _Microsoft_'s STL implementation. -_Release_ configuration works though. - # CI builds The CI pipeline consist of test builds and demo builds for _GCC_, _Clang_, _AppleClang_ and _MSVC_. If and only if all builds were successful, the CI state is green. From d9eeaf7e7119b55698bae8c396e9b42781047c09 Mon Sep 17 00:00:00 2001 From: Melissa Bauer <75776786+ixik-melissa@users.noreply.github.com> Date: Fri, 1 Aug 2025 20:51:23 +0200 Subject: [PATCH 96/98] fix build --- include/cx/vector.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/cx/vector.h b/include/cx/vector.h index ddcb3cc..00edeeb 100644 --- a/include/cx/vector.h +++ b/include/cx/vector.h @@ -248,7 +248,7 @@ namespace cx::test auto const v = cx::vector{1,2,3}; return std::ranges::equal(v, std::array{1,2,3}) && size(v) == 3; - }); + }()); } constexpr auto cx_vectors_can_be_initialized_with_a_specified_number_of_elements_equal_or_less_than_cx_vectors_capacity() From 8cc5c0e89b2d7bf5904adc09e268baaa5e12af77 Mon Sep 17 00:00:00 2001 From: Melissa Bauer <75776786+ixik-melissa@users.noreply.github.com> Date: Fri, 1 Aug 2025 20:53:44 +0200 Subject: [PATCH 97/98] fix build --- include/cx/vector.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/cx/vector.h b/include/cx/vector.h index 00edeeb..362e3c7 100644 --- a/include/cx/vector.h +++ b/include/cx/vector.h @@ -165,7 +165,8 @@ namespace cx // msvc or the C++ standard library respectively seems to have problems in constexpr sitations, // use old implementation in constexpr instead #ifdef _MSC_VER - using vector = std::conditional_t; + template + using vector = std::conditional_t, std::vector>; #else template using vector = std::vector; From 9c2b4e1f2529aadf90400d6754fc8d9875f4d061 Mon Sep 17 00:00:00 2001 From: Melissa Bauer <75776786+ixik-melissa@users.noreply.github.com> Date: Fri, 1 Aug 2025 21:02:04 +0200 Subject: [PATCH 98/98] fix build --- include/cx/vector.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/include/cx/vector.h b/include/cx/vector.h index 362e3c7..39a9cb8 100644 --- a/include/cx/vector.h +++ b/include/cx/vector.h @@ -146,17 +146,10 @@ namespace cx::detail container elements; }; - using std::ranges::begin; - using std::ranges::end; - using std::ranges::rbegin; - using std::ranges::rend; - using std::ranges::size; - using std::ranges::empty; - template constexpr auto operator==(vector const& a, vector const& b) noexcept { - return std::equal(begin(a), end(a), begin(b), end(b)); + return std::ranges::equal(a, b); } } @@ -167,6 +160,13 @@ namespace cx #ifdef _MSC_VER template using vector = std::conditional_t, std::vector>; + + using std::ranges::begin; + using std::ranges::end; + using std::ranges::rbegin; + using std::ranges::rend; + using std::ranges::size; + using std::ranges::empty; #else template using vector = std::vector;