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 virtual ~AbstractP4cToolOptions() =
default;
31 std::optional<uint32_t>
seed = std::nullopt;
39 int process(
const std::vector<const char *> &args);
45 std::vector<const char *> *
process(
int argc,
char *
const argv[])
override;
49 AbstractP4cToolOptions &operator=(
const AbstractP4cToolOptions &) =
default;
50 AbstractP4cToolOptions(
const AbstractP4cToolOptions &) =
default;
51 AbstractP4cToolOptions(AbstractP4cToolOptions &&) =
default;
56 [[nodiscard]]
const std::string &
getToolName()
const;
59 static std::tuple<int, char **>
convertArgs(
const std::vector<const char *> &args);
61 explicit AbstractP4cToolOptions(std::string_view toolName, std::string_view message);