7#ifndef BACKENDS_P4TOOLS_COMMON_OPTIONS_H_
8#define BACKENDS_P4TOOLS_COMMON_OPTIONS_H_
15#include "frontends/common/options.h"
16#include "lib/compile_context.h"
23class AbstractP4cToolOptions :
public CompilerOptions {
26 std::string _toolName;
29 std::vector<std::shared_ptr<std::string>> argumentStorage;
32 virtual ~AbstractP4cToolOptions() =
default;
34 std::optional<uint32_t>
seed = std::nullopt;
42 int process(
const std::vector<const char *> &args);
48 std::vector<const char *> *
process(
int argc,
char *
const argv[])
override;
52 AbstractP4cToolOptions &operator=(
const AbstractP4cToolOptions &) =
default;
53 AbstractP4cToolOptions(
const AbstractP4cToolOptions &) =
default;
54 AbstractP4cToolOptions(AbstractP4cToolOptions &&) =
default;
59 [[nodiscard]]
const std::string &
getToolName()
const;
62 std::vector<char *>
convertArgs(
const std::vector<const char *> &args);
64 explicit AbstractP4cToolOptions(std::string_view toolName, std::string_view message);