#*******************************************************************************
#**  This file is part of Pecunia.                                           ***
#**                                                                          ***
#**  Copyright (C) 2017, 2018, 2019, 2020, 2021, 2023, 2024, 2025            ***
#**  John Schneiderman <Licencing _AT_ Schneiderman _DOT_ me>                ***
#**                                                                          ***
#**  This program is free software: you can redistribute it and/or modify it ***
#**  under the terms of the GNU Lesser General Public License as published   ***
#**  by the Free Software Foundation, either version 3 of the License, or    ***
#**  (at your option) any later version.                                     ***
#**                                                                          ***
#**  This program is distributed in the hope that it will be useful, but     ***
#**  WITHOUT ANY WARRANTY; without even the implied warranty of              ***
#**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                    ***
#**  See the GNU Lesser General Public License for more details.             ***
#**                                                                          ***
#**  You should have received a copy of the GNU Lesser General Public License***
#**  along with this program. If not, see <http://www.gnu.org/licenses/>.    ***
#*******************************************************************************
2025-11-10 John Schneiderman <JohnMS_AT_member_DOT_fsf_DOT_org> 0.10.0
	* Feature #50: Adds full support for stream operations, e.g. state is respected.
	* Feature #57: Adds a variant of the sum function that takes a container of nested money
	 		objects.
	* Feature #59: Improve locale setting handling by using the supplied locale and the ".UTF-8"
			variant.
	* Feature #61: Adds functions to determine the maximum or minimum value between two money
			objects.
	* Feature: Adds stream extraction support for currencies without minor units.
	* Maintenance #11: Adds the ability to update the currency information through a build target.
	* Maintenance #47: Adds the ability to create a Python based CMake project and targets.
	* Maintenance #60: Changes to use BUILD_SHARED_LIBS to determine whether we build shared or
			static libraries.
	* Maintenance: Upgrades unit tests to use Catch 3.
2025-05-25 John Schneiderman <JohnMS_AT_member_DOT_fsf_DOT_org> 0.9.0
	* Feature #49: Adds the ability to specify a function to the sum function to extract the money
			value from the container.
	* Feature #24: Adds a member function to clear a money object directly.
	* Feature #43: Changes the minor unit to be an optional component, as not all currencies have
	 		minor units.
	* Feature #43: Adds a Money constructor for currencies without minor units, previous amount
			constructor is replaced with a static function Money::fromAmount.
	* Feature #25: Renames the function toIso4217Code to toCurrency for added clarity.
	* Feature #39: Changes the set-up functions to only modify the library as requested.
	* Feature #45: Adds build and packaging for Raspberry Pi OS.
	* Feature #7: Adds support for creating a macOS framework bundle.
	* Feature #22: Simplified namespaces & changed file-names to fit C++.
	* Feature: Removes the member function "hasAmount" as it's usage is better done by the consumer
			of the code to determine what having an amount means, i.e. does the currency matter or
			only the monetary value.
	* Feature: Adds a function to retrieve a currency exchange rate.
	* Feature: The version information now is shown as its Semantic Version (https://semver.org/).
	* Feature: Adds move assignment to the money type.
	* Feature: Adds a dedicated minor monetary type with major monetary type interoperability.
	* Feature: Changes the Types.h/cpp to no longer be a dumping ground of types.
	* Feature: Changes the name of the "minor" member function of Money to be "minorWithSub" to
			avoid confusion about it's contents.
	* Bug Fix #4: Fix Windows & macOS stream insertion and extraction operator
	* Bug Fix #42: Fixes the Debian development package not requiring the runtime package.
	* Bug Fix: Fixes the soname and interface guarantees from the code, i.e. only major.minor
	 		versions are guaranteed to be compatible.
	* Bug Fix: Fixes the adjustor supplied to the sum function confusing a null adjustor (an invalid
	 		case) and an adjustor not being supplied.
	* Maintenance #40: Generate documentation for the alpha and release branches.
	* Maintenance #38: Adds additional uses of Alpine in the pipeline.
	* Maintenance #44: Fixes pipeline issue with Mageia.
	* Maintenance: Changes always build tests by default.
	* Maintenance: Enhancements to the RPM & DEB packaging to match common expectations.
2024-04-20 John Schneiderman <JohnMS_AT_member_DOT_fsf_DOT_org> 0.8.1
	* Bug Fix #41: Fixes the CMake target file including invalid directories.
	* Maintenance #41: Changes to use the automated CMake configuration file.
2024-04-13 John Schneiderman <JohnMS_AT_member_DOT_fsf_DOT_org> 0.8.0
	* Feature #35: Adds several currency symbols.
	* Feature #33: Adds a dedicated error type with frame-stack support.
	* Feature #29: Adds a function to assign a new currency from another.
	* Feature #32: Adds a function to split a string into its currency components.
	* Feature #27: The minimum and maximum money functions fully separate the currency components.
	* Feature #26: Adds a constant for the expected size of a currency string.
	* Feature #28: Adds rounding down a monetary amount.
	* Feature: Adds a function to Money to check if it has only minor units.
	* Feature #28: Changes the member function for rounding a monetary value to be const like other
			operations.
	* Feature: Renames the currency string-ify function to prevent clashing with other libraries.
	* Bug Fix #28: Fixes multiplication with a negative floating point number incorrectly stating
			that the result would not fit. Adds all the maths & assignment operators to the
			FloatingPoint type.
	* Bug Fix #31: Incorrect rounding methods used for up and down.
	* Bug Fix #28: Unchecked multiplication in the negation operator.
	* Bug Fix #28: Missing checks when rounding and forming the new result.
	* Maintenance: Adds tracking line coverage metrics.
	* Maintenance: Adds packaging fully by CMake.
	* Maintenance #34: Updated to C++17.
	* Maintenance #16: Addressed all outstanding cppcheck issues.
2024-01-08 John Schneiderman <JohnMS_AT_member_DOT_fsf_DOT_org> 0.7.0
	* Feature #20: Adds a constructor for currencies that do not have minor units.
	* Feature #10: When working with two money object's amount, no conversions will be made when they
			are the same currency.
	* Feature #10: Adds a configurable option to set the default number of digits used
			in rounding and floating point operations.
	* Feature #10: Renamed UnitStorage to MajorUnit to make reasoning easier.
	* Feature #9: Split construction of a money object's minor unit into its two parts, minor and
			sub-minor. The term precision is more clearly understood as the number of sub-minor
			digits.
	* Feature #15: Renamed Iso4217Codes to Currencies.
	* Feature #11: Updated to ISO-4217 amendment number 172.
	* Feature #11: Now can access the date the generated ISO-4217 codes were published.
	* Bug fix 13: FloatingPoint equality check always assumed a positive differences between two
			values, thereby incorrectly returning true.
	* Bug fix 13: Missing overflow check when multiplying by -1 on a negative minimum integer when
			working with FloatingPoint values.
	* Bug fix 13: Missing overflow check when dividing by -1 on a negative minimum integer when
			working with FloatingPoint values.
	* Bug fix 13: Incorrect check for underflow during division.
	* Bug fix 15: Incorrect checks for overflow during addition and subtraction could potentially
			cause UB.
	* Bug fix 12: Debian package had incorrect dependencies configured.
	* Maintenance #17: Updated to Qt 6.4.
	* Maintenance #17: Updated to CMake 3.20.
	* Maintenance #17: Adds "needs" to the GitLab jobs.
	* Maintenance #17: Addressed Cppcheck issues.
	* Maintenance #17: Simplified the CI set-up.
2023-02-15 John Schneiderman <JohnMS_AT_member_DOT_fsf_DOT_org> 0.6.1
	* Bug fix: The generated files were included incorrectly for uses by other projects.
2023-02-09 John Schneiderman <JohnMS_AT_member_DOT_fsf_DOT_org> 0.6.0
	* Feature: Updated currencies to ISO 4217 published on 2023-01-01.
	* Feature: All floating-point operations are done with-in a strong type.
	* Feature: Stream operations are more predictable.
	* Feature: Zero-out a money object.
	* Bug Fix: Removed unnecessary includes.
	* Maintenance: No longer require the tag information to package.
	* Maintenance: Ensure that release builds do not keep assertions.
	* Maintenance: Default to creating Apple Universal packages.
2021-03-08 John Schneiderman <JohnMS_AT_member_DOT_fsf_DOT_org> 0.5.1
	* Bug Fix: Failed to clear the floating-point exceptions prior to floating-point operations
			resulted in valid floating-point operations failing when they should succeed.
2021-02-27 John Schneiderman <JohnMS_AT_member_DOT_fsf_DOT_org> 0.5.0
	* Feature: All currency codes supplied by the ISO.
	* Feature: The money object swaperator is now noexcept.
	* Feature: Look-up the country/entity that uses a currency is available.
	* Feature: Look-up the name of a currency via its code.
	* Feature: Refactored the API to be clearer about intention.
	* Bug Fix: Triggering potential undefined behaviour when sorting.
	* Maintenance: Uses the built-in CMake internal/external source code functionality.
	* Maintenance: Ability to select building a static or shared library.
	* Maintenance: Set of scripts to automate the generation of the currency codes.
	* Maintenance: Individual unit-tests now be debugged via Visual Studio by default.
	* Maintenance: Made the default locale configurable from within CMake.
	* Maintenance: Scripts for automating package creation.
	* Maintenance: Updated all libraries to match the lowest supported target, Debian stable.
2020-12-07 John Schneiderman <JohnMS_AT_member_DOT_fsf_DOT_org> 0.4.2
	* Bug Fix: incorrect linkage declaration on Windows.
2020-12-07 John Schneiderman <JohnMS_AT_member_DOT_fsf_DOT_org> 0.4.1
	* Bug Fix: Adds taking in the swaperator to make the sort function able to be used by custom
			types.
	* Maintenance: The release branch is created.
2020-12-07 John Schneiderman <JohnMS_AT_member_DOT_fsf_DOT_org> 0.4.0
	* Feature: packaging for Conan.io support.
	* Feature: a sorting algorithm to ensure that currencies are not converted while sorting.
	* Feature: a swap function support for the Money type.
	* Feature: move support for the Money type.
	* Bug Fix: normaliseAmount performed more than just the normalisation of the amount and now only
			returns the normalised amount value.
2020-06-06 John Schneiderman <JohnMS_AT_member_DOT_fsf_DOT_org> 0.3.0
	* Feature: Functions taking the money raw types const&.
	* Bug Fix: implicit conversion from a code to a money type.
	* Bug Fix: not selecting correct abs function.
	* Maintenance: Fixed ctest not working on the command line and only in KDevelop.
	* Maintenance: Made the testing enabling project labeled for better grouping.
2019-06-27 John Schneiderman <JohnMS_AT_member_DOT_fsf_DOT_org> 0.2.0
	* Feature: The underlying types are configurable during compilation.
	* Feature: Adds overload for multiplication and division of integral types.
	* Feature: The floating point equality function is be based upon the smallest possible
			comparable valid currency minor unit.
	* Feature: Renamed "number" member function to "toFloatingPoint" to be clear it's a conversion.
	* Feature: All floating-point operations use and extra number of guard digits to protect the
			money object's precision.
	* Feature: Generate the sum from a container of money objects.
	* Bug Fix: Multiplication used floating-point values during some operations.
	* Bug Fix: Division used floating-point values during some operations.
	* Bug Fix: Rounding could lose precision
	* Bug Fix: Normalisation could lose precision
2018-10-20 John Schneiderman <JohnMS_AT_member_DOT_fsf_DOT_org> 0.1.0
	* Feature: Support for rounding a money's amount value.
	* Feature: Support for getting the absolute value of a money's amount value.
	* Feature: Support for to_string functionality.
	* Feature: Support converting back into a floating-point value.
	* Feature: Ability to change a money object's currency code, without changing its amount value.
	* Feature: Division support between two money objects.
	* Feature: Container of all supported currency codes.
	* Feature: Ability to get the maximum and minimum values a monetary type can support.
	* Feature: An initialisation function to give the library in a known state.
	* Feature: Functions for getting the library configuration information.
	* Bug fix: Issue with multiple references of convert function.
	* Bug fix: Issue with the relational operators silently failing when the currency codes did not
			match.
	* Maintenance: Fixed packaging issues.
	* Maintenance: Specify requiring C++14.
	* Maintenance: Default compile with warnings as errors for the project.
	* Maintenance: Uses the built-in CMake package config generators.
	* Maintenance: Uses the built-in CMake export mechanism.
	* Maintenance: Selected the final name for the library.
	* Maintenance: Removed the template based money object type.
2017-01-09 John Schneiderman <JohnMS_AT_member_DOT_fsf_DOT_org> 0.0.0
	* Feature: Basic money type (templated & non-templated) with arithmetic operations &
			verification.
	* Maintenance: Ability to link against using CMake.
