1#ifndef BACKENDS_P4TOOLS_COMMON_OPTIONS_H_
2#define BACKENDS_P4TOOLS_COMMON_OPTIONS_H_
9#include "frontends/common/options.h"
10#include "lib/compile_context.h"
17class AbstractP4cToolOptions :
public CompilerOptions {
20 std::string _toolName;
23 virtual ~AbstractP4cToolOptions() =
default;
25 std::optional<uint32_t>
seed = std::nullopt;
33 int process(
const std::vector<const char *> &args);
39 std::vector<const char *> *
process(
int argc,
char *
const argv[])
override;
43 AbstractP4cToolOptions &operator=(
const AbstractP4cToolOptions &) =
default;
44 AbstractP4cToolOptions(
const AbstractP4cToolOptions &) =
default;
45 AbstractP4cToolOptions(AbstractP4cToolOptions &&) =
default;
50 [[nodiscard]]
const std::string &
getToolName()
const;
53 static std::tuple<int, char **>
convertArgs(
const std::vector<const char *> &args);
55 explicit AbstractP4cToolOptions(std::string_view toolName, std::string_view message);