P4C
The P4 Compiler
Loading...
Searching...
No Matches
backends/p4tools/common/options.h
1/*
2 * SPDX-FileCopyrightText: 2022 The P4 Language Consortium
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef BACKENDS_P4TOOLS_COMMON_OPTIONS_H_
8#define BACKENDS_P4TOOLS_COMMON_OPTIONS_H_
9
10#include <cstdint>
11#include <optional>
12#include <tuple>
13#include <vector>
14
15#include "frontends/common/options.h"
16#include "lib/compile_context.h"
17
18namespace P4::P4Tools {
19
23class AbstractP4cToolOptions : public CompilerOptions {
24 private:
26 std::string _toolName;
27
28 public:
29 virtual ~AbstractP4cToolOptions() = default;
31 std::optional<uint32_t> seed = std::nullopt;
32
35
39 int process(const std::vector<const char *> &args);
40
42 std::vector<const char *> compilerArgs;
43
45 std::vector<const char *> *process(int argc, char *const argv[]) override;
46
47 protected:
48 // Self-assignments and copy constructor can only be used by other options.
49 AbstractP4cToolOptions &operator=(const AbstractP4cToolOptions &) = default;
50 AbstractP4cToolOptions(const AbstractP4cToolOptions &) = default;
51 AbstractP4cToolOptions(AbstractP4cToolOptions &&) = default;
52
53 [[nodiscard]] bool validateOptions() const override;
54
56 [[nodiscard]] const std::string &getToolName() const;
57
59 static std::tuple<int, char **> convertArgs(const std::vector<const char *> &args);
60
61 explicit AbstractP4cToolOptions(std::string_view toolName, std::string_view message);
62};
63
64} // namespace P4::P4Tools
65
66#endif /* BACKENDS_P4TOOLS_COMMON_OPTIONS_H_ */
const std::string & getToolName() const
The name of the tool associated with these options.
Definition backends/p4tools/common/options.cpp:82
bool validateOptions() const override
Definition backends/p4tools/common/options.cpp:80
std::optional< uint32_t > seed
A seed for the PRNG.
Definition backends/p4tools/common/options.h:31
static std::tuple< int, char ** > convertArgs(const std::vector< const char * > &args)
Converts a vector of command-line arguments into the traditional (argc, argv) format.
Definition backends/p4tools/common/options.cpp:22
std::vector< const char * > compilerArgs
Command-line arguments to be sent to the compiler. Populated by @process.
Definition backends/p4tools/common/options.h:42
int process(const std::vector< const char * > &args)
Definition backends/p4tools/common/options.cpp:32
bool disableInformationLogging
Disable information logging.
Definition backends/p4tools/common/options.h:34
Definition common/compiler/compiler_result.cpp:7