From 5c733089343f3f82859636125d8d73ff690b25c5 Mon Sep 17 00:00:00 2001 From: BodgeMaster <> Date: Tue, 2 Aug 2022 03:35:08 +0200 Subject: [PATCH] Rename all headers from .h++ to .hpp Idk why I did that in the first place. Probably bc hpp looks stupid. But having a + in a file name bugs me just as much. And other ppl as well. So I changed it. --- src/lib/cli.cpp | 5 +- src/lib/cli.h++ | 2 +- src/lib/cli.hpp | 94 ++++++++++++++++++++++ src/lib/{error.h++ => error.hpp} | 0 src/lib/javacompat.cpp | 4 +- src/lib/{javacompat.h++ => javacompat.hpp} | 4 +- src/lib/nbt.cpp | 8 +- src/lib/{nbt.h++ => nbt.hpp} | 2 +- src/test/{assert.h++ => assert.hpp} | 0 src/test/cli_argument_parser.cpp | 6 +- src/test/javacompat.cpp | 4 +- src/test/nbt_helpers.cpp | 8 +- src/test/nbt_writestring_failure_mode.cpp | 6 +- src/tools/dumpnbt.cpp | 2 +- src/tools/hexnet.cpp | 4 +- 15 files changed, 121 insertions(+), 28 deletions(-) create mode 100644 src/lib/cli.hpp rename src/lib/{error.h++ => error.hpp} (100%) rename src/lib/{javacompat.h++ => javacompat.hpp} (97%) rename src/lib/{nbt.h++ => nbt.hpp} (99%) rename src/test/{assert.h++ => assert.hpp} (100%) diff --git a/src/lib/cli.cpp b/src/lib/cli.cpp index 32047f7..a9ca296 100644 --- a/src/lib/cli.cpp +++ b/src/lib/cli.cpp @@ -13,13 +13,12 @@ // version 3 along with this program. // If not, see https://www.gnu.org/licenses/agpl-3.0.en.html -#include "cli.h++" - #include #include #include -#include "error.h++" +#include "cli.hpp" +#include "error.hpp" namespace CLI { Flag::Flag() { diff --git a/src/lib/cli.h++ b/src/lib/cli.h++ index 93f3ee9..25e79e7 100644 --- a/src/lib/cli.h++ +++ b/src/lib/cli.h++ @@ -19,7 +19,7 @@ #include #include -#include "error.h++" +#include "error.hpp" namespace CLI { diff --git a/src/lib/cli.hpp b/src/lib/cli.hpp new file mode 100644 index 0000000..25e79e7 --- /dev/null +++ b/src/lib/cli.hpp @@ -0,0 +1,94 @@ +// Copyright 2022, FOSS-VG Developers and Contributers +// +// This program is free software: you can redistribute it and/or modify it +// under the terms of the GNU Affero General Public License as published +// by the Free Software Foundation, version 3. +// +// 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 Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// version 3 along with this program. +// If not, see https://www.gnu.org/licenses/agpl-3.0.en.html + +#pragma once + +#include +#include +#include + +#include "error.hpp" + +namespace CLI { + + struct Flag { + char shortName; + std::string longName; + // used for automatic usage generation + std::string description; + + bool present; + + Flag(); + Flag(char shortName, std::string longName, std::string description); + }; + + struct Option { + char shortName; + std::string longName; + // used for automatic usage generation + std::string description; + std::string placeholder; // the "COUNT" in "ping [-c ] " + + bool present; + std::string value; + + Option(); + Option(char shortName, std::string longName, std::string placeholder, std::string description); + }; + + struct Argument { + // used for automatic usage generation + std::string description; + std::string placeholder; // the "HOST" in "ping [-c ] " + + bool present; + std::string value; + + Argument(); + Argument(std::string placeholder, std::string description); + }; + + class ArgumentsParser { + private: + std::map flagsByShortName; + std::map flagsByLongName; + std::map optionsByShortName; + std::map optionsByLongName; + std::vector arguments; + std::string description; + std::string additionalInfo; + + public: + std::string programName; + bool wrongUsage; + std::vector wrongUsageMessages; + + // using int here bc that's how main() is defined + ArgumentsParser(int argc, const char* const argv[], std::vector flags, std::vector