7#ifndef BACKENDS_P4TOOLS_COMMON_LIB_UTIL_H_
8#define BACKENDS_P4TOOLS_COMMON_LIB_UTIL_H_
30 static std::mt19937 rng;
33 static std::optional<uint32_t> currentSeed;
43 static void setRandomSeed(
int seed);
52 static int64_t
getRandInt(int64_t min, int64_t max);
55 static int64_t
getRandInt(
const std::vector<int64_t> &percent);
62 static big_int
getRandBigInt(
const big_int &min,
const big_int &max);
78 std::string_view methodName,
const std::vector<const IR::Expression *> &argVector,
79 const IR::Type *returnType = IR::Type_Void::get(),
80 const IR::ParameterList *paramList =
new IR::ParameterList());
85 std::shuffle(inp->begin(), inp->end(), rng);
89 template <
typename Iter>
91 int random =
getRandInt(std::distance(start, end) - 1);
92 std::advance(start, random);
98 template <
typename ContainerType>
100 std::stringstream stringStream;
103 auto val = container.cbegin();
104 if (val != container.cend()) {
105 stringStream << *val++;
106 while (val != container.cend()) {
107 stringStream <<
", " << *val++;
111 return stringStream.str();
126 const IR::PathExpression *pathExpr);
130 const IR::Type_Name *type);
The Declaration interface, representing objects with names.
Definition declaration.h:17
Definition ir/vector.h:50