P4C
The P4 Compiler
 
Loading...
Searching...
No Matches
options.h
1#ifndef BACKENDS_P4TOOLS_COMMON_OPTIONS_H_
2#define BACKENDS_P4TOOLS_COMMON_OPTIONS_H_
3
4// Boost
5#include <cstdint>
6#include <optional>
7#include <tuple>
8#include <vector>
9
10#include "lib/compile_context.h"
11#include "lib/cstring.h"
12#include "lib/options.h"
13
14namespace P4Tools {
15
20 public:
22 std::optional<uint32_t> seed = std::nullopt;
23
26
30 std::optional<ICompileContext *> process(const std::vector<const char *> &args);
31
32 protected:
34 std::vector<const char *> compilerArgs;
35
37 std::vector<const char *> *process(int argc, char *const argv[]) override;
38
41 virtual bool validateOptions() const { return true; }
42
44 static std::tuple<int, char **> convertArgs(const std::vector<const char *> &args);
45
46 explicit AbstractP4cToolOptions(cstring message);
47
48 // No copy constructor and no self-assignments.
50
51 AbstractP4cToolOptions &operator=(const AbstractP4cToolOptions &) = delete;
52};
53
54} // namespace P4Tools
55
56#endif /* BACKENDS_P4TOOLS_COMMON_OPTIONS_H_ */
Definition options.h:19
std::vector< const char * > compilerArgs
Command-line arguments to be sent to the compiler. Populated by @process.
Definition options.h:34
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 options.cpp:20
std::optional< uint32_t > seed
A seed for the PRNG.
Definition options.h:22
std::optional< ICompileContext * > process(const std::vector< const char * > &args)
Definition options.cpp:30
bool disableInformationLogging
Disable information logging.
Definition options.h:25
virtual bool validateOptions() const
Definition options.h:41
Definition options.h:33
Definition cstring.h:72
Definition compiler_target.cpp:19