From 05c3b48e63c0abacb48bc898f5b7cbff266773b2 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Wed, 14 Sep 2022 11:24:13 +0100 Subject: [PATCH] Utilities: Port cpp utilities to Core::Stream --- Userland/Utilities/cpp-lexer.cpp | 15 ++++++--------- Userland/Utilities/cpp-parser.cpp | 18 +++++++----------- Userland/Utilities/cpp-preprocessor.cpp | 17 +++++++---------- 3 files changed, 20 insertions(+), 30 deletions(-) diff --git a/Userland/Utilities/cpp-lexer.cpp b/Userland/Utilities/cpp-lexer.cpp index fbc2f49c38b..57cee27959e 100644 --- a/Userland/Utilities/cpp-lexer.cpp +++ b/Userland/Utilities/cpp-lexer.cpp @@ -1,27 +1,24 @@ /* - * Copyright (c) 2021, the SerenityOS developers. + * Copyright (c) 2021-2022, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ +#include #include -#include +#include #include #include ErrorOr serenity_main(Main::Arguments arguments) { Core::ArgsParser args_parser; - char const* path = nullptr; + StringView path; args_parser.add_positional_argument(path, "Cpp File", "cpp-file", Core::ArgsParser::Required::Yes); args_parser.parse(arguments); - auto file = Core::File::construct(path); - if (!file->open(Core::OpenMode::ReadOnly)) { - warnln("Failed to open {}: {}", path, file->error_string()); - exit(1); - } - auto content = file->read_all(); + auto file = TRY(Core::Stream::File::open(path, Core::Stream::OpenMode::Read)); + auto content = TRY(file->read_all()); StringView content_view(content); Cpp::Lexer lexer(content); diff --git a/Userland/Utilities/cpp-parser.cpp b/Userland/Utilities/cpp-parser.cpp index f1aee959c7d..790dc42868d 100644 --- a/Userland/Utilities/cpp-parser.cpp +++ b/Userland/Utilities/cpp-parser.cpp @@ -1,31 +1,27 @@ /* - * Copyright (c) 2021, the SerenityOS developers. + * Copyright (c) 2021-2022, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ #include -#include +#include #include #include ErrorOr serenity_main(Main::Arguments arguments) { Core::ArgsParser args_parser; - char const* path = nullptr; + StringView path; bool tokens_mode = false; args_parser.add_option(tokens_mode, "Print Tokens", "tokens", 'T'); args_parser.add_positional_argument(path, "Cpp File", "cpp-file", Core::ArgsParser::Required::No); args_parser.parse(arguments); - if (!path) - path = "Source/little/main.cpp"; - auto file = Core::File::construct(path); - if (!file->open(Core::OpenMode::ReadOnly)) { - warnln("Failed to open {}: {}", path, file->error_string()); - exit(1); - } - auto content = file->read_all(); + if (path.is_empty()) + path = "Source/little/main.cpp"sv; + auto file = TRY(Core::Stream::File::open(path, Core::Stream::OpenMode::Read)); + auto content = TRY(file->read_all()); StringView content_view(content); ::Cpp::Preprocessor processor(path, content_view); diff --git a/Userland/Utilities/cpp-preprocessor.cpp b/Userland/Utilities/cpp-preprocessor.cpp index b18f2ccfccd..80a876f1e02 100644 --- a/Userland/Utilities/cpp-preprocessor.cpp +++ b/Userland/Utilities/cpp-preprocessor.cpp @@ -1,36 +1,33 @@ /* - * Copyright (c) 2021, the SerenityOS developers. + * Copyright (c) 2021-2022, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ #include #include -#include +#include #include #include ErrorOr serenity_main(Main::Arguments arguments) { Core::ArgsParser args_parser; - char const* path = nullptr; + StringView path; bool print_definitions = false; args_parser.add_positional_argument(path, "File", "file", Core::ArgsParser::Required::Yes); args_parser.add_option(print_definitions, "Print preprocessor definitions", "definitions", 'D'); args_parser.parse(arguments); - auto file = Core::File::construct(path); - if (!file->open(Core::OpenMode::ReadOnly)) { - warnln("Failed to open {}: {}", path, file->error_string()); - exit(1); - } - auto content = file->read_all(); + + auto file = TRY(Core::Stream::File::open(path, Core::Stream::OpenMode::Read)); + auto content = TRY(file->read_all()); String name = LexicalPath::basename(path); Cpp::Preprocessor cpp(name, StringView { content }); auto tokens = cpp.process_and_lex(); if (print_definitions) { outln("Definitions:"); - for (auto& definition : cpp.definitions()) { + for (auto const& definition : cpp.definitions()) { if (definition.value.parameters.is_empty()) outln("{}: {}", definition.key, definition.value.value); else