From 64c76ec28017f0f766fc9056e4536b777b1f389f Mon Sep 17 00:00:00 2001 From: matteokeole Date: Wed, 19 Nov 2025 19:41:22 +0100 Subject: [PATCH 1/3] docs: Use LGPL license --- LICENSE | 187 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 165 insertions(+), 22 deletions(-) diff --git a/LICENSE b/LICENSE index c21a61c..153d416 100644 --- a/LICENSE +++ b/LICENSE @@ -1,22 +1,165 @@ -MIT License - -Copyright (c) 2025 Atalante (https://github.com/atalantestudio). -Atalante is owned by Mattéo Legagneux (https://github.com/d-level). - -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. \ No newline at end of file + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. \ No newline at end of file From 55427b04ff726064bc47fc9d91aff505cb2f84e1 Mon Sep 17 00:00:00 2001 From: matteokeole Date: Wed, 19 Nov 2025 19:46:05 +0100 Subject: [PATCH 2/3] feat: Update Base submodule --- Base | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Base b/Base index 0c52431..d8377e7 160000 --- a/Base +++ b/Base @@ -1 +1 @@ -Subproject commit 0c524315d1f0afc3850385b1150a40501c9c6363 +Subproject commit d8377e755824fc27de693e646504a81f68780cff From 396792cd5099e90e06295f59744e2d018548f9ae Mon Sep 17 00:00:00 2001 From: matteokeole Date: Wed, 19 Nov 2025 20:55:09 +0100 Subject: [PATCH 3/3] feat: 'scroll' namespace --- Base | 2 +- README.md | 2 +- scroll/ConsoleEscapeCode.hpp | 2 +- scroll/ConsoleLogger/ConsoleLogger.hpp | 2 +- scroll/ConsoleLogger/ConsoleLogger.ipp | 2 +- scroll/Conversions.hpp | 2 +- scroll/Conversions.ipp | 2 +- scroll/FileLogger/FileLogger.hpp | 2 +- scroll/FileLogger/FileLogger.ipp | 2 +- scroll/LogLevel.hpp | 2 +- scroll/Logger/Logger.hpp | 2 +- scroll/Logger/Logger.ipp | 2 +- scroll/base.hpp | 16 +++++++++++++--- 13 files changed, 25 insertions(+), 15 deletions(-) diff --git a/Base b/Base index d8377e7..5149cc2 160000 --- a/Base +++ b/Base @@ -1 +1 @@ -Subproject commit d8377e755824fc27de693e646504a81f68780cff +Subproject commit 5149cc25ab9673c5a231dc348efe215e9bfbf7d7 diff --git a/README.md b/README.md index 9bba4ad..a137e59 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Scroll Scroll is a fast and lightweight C++ library that provides pretty console and file logging. -It is licensed under [MIT](https://github.com/atalantestudio/scroll/blob/main/LICENSE) and can easily be integrated into other projects. +It is licensed under [LGPL](https://github.com/atalantestudio/scroll/blob/main/LICENSE) and can easily be integrated into other projects. [View documentation](https://atalantestudio.github.io/scroll) \ No newline at end of file diff --git a/scroll/ConsoleEscapeCode.hpp b/scroll/ConsoleEscapeCode.hpp index dfdd120..7f15861 100644 --- a/scroll/ConsoleEscapeCode.hpp +++ b/scroll/ConsoleEscapeCode.hpp @@ -3,7 +3,7 @@ #pragma once -namespace USER_NAMESPACE { +namespace scroll { // See https://en.wikipedia.org/wiki/ANSI_escape_code#Select_Graphic_Rendition_parameters. enum class ConsoleEscapeCode : char8 { // All attributes become turned off. diff --git a/scroll/ConsoleLogger/ConsoleLogger.hpp b/scroll/ConsoleLogger/ConsoleLogger.hpp index bc97852..1c19ca5 100644 --- a/scroll/ConsoleLogger/ConsoleLogger.hpp +++ b/scroll/ConsoleLogger/ConsoleLogger.hpp @@ -7,7 +7,7 @@ #include "Logger/Logger.hpp" #include "LogLevel.hpp" -namespace USER_NAMESPACE { +namespace scroll { class ConsoleLogger : public Logger { private: static void writeLogHeader(std::ostream& stream, view source, view levelName, ConsoleEscapeCode levelBackgroundColor, ConsoleEscapeCode levelForegroundColor); diff --git a/scroll/ConsoleLogger/ConsoleLogger.ipp b/scroll/ConsoleLogger/ConsoleLogger.ipp index 5c72b06..c0572d5 100644 --- a/scroll/ConsoleLogger/ConsoleLogger.ipp +++ b/scroll/ConsoleLogger/ConsoleLogger.ipp @@ -1,7 +1,7 @@ // Copyright 2025 Atalante. // Licensed under MIT. -namespace USER_NAMESPACE { +namespace scroll { inline void ConsoleLogger::writeLogHeader(std::ostream& stream, view source, view levelName, ConsoleEscapeCode levelBackgroundColor, ConsoleEscapeCode levelForegroundColor) { stream << "\033[" << ConsoleEscapeCode::DIMMED << "m[" << timestamp() << "]\033[" << ConsoleEscapeCode::RESET_BRIGHT << "m "; diff --git a/scroll/Conversions.hpp b/scroll/Conversions.hpp index 219ea61..9c54151 100644 --- a/scroll/Conversions.hpp +++ b/scroll/Conversions.hpp @@ -5,7 +5,7 @@ #include "ConsoleEscapeCode.hpp" -namespace USER_NAMESPACE { +namespace scroll { std::ostream& operator<<(std::ostream& stream, view view); std::ostream& operator<<(std::ostream& stream, ConsoleEscapeCode code); } diff --git a/scroll/Conversions.ipp b/scroll/Conversions.ipp index 88ca924..b47c45a 100644 --- a/scroll/Conversions.ipp +++ b/scroll/Conversions.ipp @@ -1,7 +1,7 @@ // Copyright 2025 Atalante. // Licensed under MIT. -namespace USER_NAMESPACE { +namespace scroll { inline std::ostream& operator<<(std::ostream& stream, view view) { return stream.write(&view[0], view.count()); } diff --git a/scroll/FileLogger/FileLogger.hpp b/scroll/FileLogger/FileLogger.hpp index 2236dfa..945b51d 100644 --- a/scroll/FileLogger/FileLogger.hpp +++ b/scroll/FileLogger/FileLogger.hpp @@ -6,7 +6,7 @@ #include "Logger/Logger.hpp" #include "LogLevel.hpp" -namespace USER_NAMESPACE { +namespace scroll { class FileLogger : public Logger { public: explicit FileLogger(std::ofstream& stream, LogLevel minLogLevel, view source); diff --git a/scroll/FileLogger/FileLogger.ipp b/scroll/FileLogger/FileLogger.ipp index 00a6b7b..acb72e6 100644 --- a/scroll/FileLogger/FileLogger.ipp +++ b/scroll/FileLogger/FileLogger.ipp @@ -1,7 +1,7 @@ // Copyright 2025 Atalante. // Licensed under MIT. -namespace USER_NAMESPACE { +namespace scroll { inline FileLogger::FileLogger(std::ofstream& stream, LogLevel minLogLevel, view source) : Logger(minLogLevel, source), stream(stream) diff --git a/scroll/LogLevel.hpp b/scroll/LogLevel.hpp index 976f84c..693c299 100644 --- a/scroll/LogLevel.hpp +++ b/scroll/LogLevel.hpp @@ -8,7 +8,7 @@ #undef ERROR #endif -namespace USER_NAMESPACE { +namespace scroll { enum class LogLevel : uint8 { // Enable all logs (alias for TRACE). ALL, diff --git a/scroll/Logger/Logger.hpp b/scroll/Logger/Logger.hpp index 854a2b9..303d5aa 100644 --- a/scroll/Logger/Logger.hpp +++ b/scroll/Logger/Logger.hpp @@ -5,7 +5,7 @@ #include "LogLevel.hpp" -namespace USER_NAMESPACE { +namespace scroll { class Logger { public: // Returns the current argument injection pattern. diff --git a/scroll/Logger/Logger.ipp b/scroll/Logger/Logger.ipp index 19786d2..1456533 100644 --- a/scroll/Logger/Logger.ipp +++ b/scroll/Logger/Logger.ipp @@ -1,7 +1,7 @@ // Copyright 2025 Atalante. // Licensed under MIT. -namespace USER_NAMESPACE { +namespace scroll { template sequence Logger::format(Argument&& argument) { std::ostringstream stream; diff --git a/scroll/base.hpp b/scroll/base.hpp index 51d6080..ebf80e4 100644 --- a/scroll/base.hpp +++ b/scroll/base.hpp @@ -9,8 +9,18 @@ #include #include -#ifndef USER_NAMESPACE - #define USER_NAMESPACE scroll +#ifndef ATL_MODULE_BASE + #include "Base/Base/Base.hpp" #endif -#include "Base/Base/Base.hpp" \ No newline at end of file +namespace scroll { + using atl::uint8; + using atl::uint16; + using atl::uint32; + using atl::uint64; + + using atl::char8; + + using atl::sequence; + using atl::view; +} \ No newline at end of file