P4C
The P4 Compiler
Loading...
Searching...
No Matches
common/lib/format_int.h
1/*
2 * SPDX-FileCopyrightText: 2022 The P4 Language Consortium
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef BACKENDS_P4TOOLS_COMMON_LIB_FORMAT_INT_H_
8#define BACKENDS_P4TOOLS_COMMON_LIB_FORMAT_INT_H_
9
10#include <stddef.h>
11
12#include <string>
13
14#include "ir/ir.h"
15#include "lib/big_int_util.h"
16
17namespace P4::P4Tools {
18
25 bool useSeparator = false;
26
29 bool padOutput = true;
30
34 bool usePrefix = true;
35
37 bool useUpperCaseHex = true;
38};
39
41std::string formatBinOrHex(const big_int &value,
42 const FormatOptions &formatOptions = FormatOptions());
43
45std::string formatBin(const big_int &value, int width,
46 const FormatOptions &formatOptions = FormatOptions());
47
49std::string formatOctal(const big_int &value, const FormatOptions &formatOptions = FormatOptions());
50
52std::string formatHex(const big_int &value, int width,
53 const FormatOptions &formatOptions = FormatOptions());
54
58std::string formatBinOrHexExpr(const IR::Expression *expr,
59 const FormatOptions &formatOptions = FormatOptions());
60
64std::string formatBinExpr(const IR::Expression *expr,
65 const FormatOptions &formatOptions = FormatOptions());
66
70std::string formatOctalExpr(const IR::Expression *expr,
71 const FormatOptions &formatOptions = FormatOptions());
72
76std::string formatHexExpr(const IR::Expression *expr,
77 const FormatOptions &formatOptions = FormatOptions());
78
82std::string insertSeparators(const std::string &dataStr, const std::string &separator = "\\x",
83 size_t stride = 2, bool skipFirst = false);
84
86std::string insertOctalSeparators(const std::string &dataStr);
87
89std::string insertHexSeparators(const std::string &dataStr);
90
95std::vector<uint8_t> convertBigIntToBytes(const big_int &dataInt, int targetWidthBits,
96 bool padLeft = false);
97
100std::optional<std::string> convertToIpv4String(const std::vector<uint8_t> &byteArray);
101
104std::optional<std::string> convertToIpv6String(const std::vector<uint8_t> &byteArray);
105
108std::optional<std::string> convertToMacString(const std::vector<uint8_t> &byteArray);
109
110} // namespace P4::P4Tools
111
112#endif /* BACKENDS_P4TOOLS_COMMON_LIB_FORMAT_INT_H_ */
Definition common/compiler/compiler_result.cpp:7
bool useUpperCaseHex
In case of hex strings, use uppercase instead of lowercase letters.
Definition common/lib/format_int.h:37
std::optional< std::string > convertToIpv6String(const std::vector< uint8_t > &byteArray)
Definition common/lib/format_int.cpp:313
std::optional< std::string > convertToIpv4String(const std::vector< uint8_t > &byteArray)
Definition common/lib/format_int.cpp:295
std::optional< std::string > convertToMacString(const std::vector< uint8_t > &byteArray)
Definition common/lib/format_int.cpp:334
std::string insertOctalSeparators(const std::string &dataStr)
Takes an octal-formatted string as input and inserts slashes as separators.
Definition common/lib/format_int.cpp:263
std::string formatHexExpr(const IR::Expression *expr, const FormatOptions &formatOptions)
Definition common/lib/format_int.cpp:189
bool padOutput
Definition common/lib/format_int.h:29
std::string formatOctalExpr(const IR::Expression *expr, const FormatOptions &formatOptions)
Definition common/lib/format_int.cpp:156
std::string formatBinExpr(const IR::Expression *expr, const FormatOptions &formatOptions)
Definition common/lib/format_int.cpp:123
bool usePrefix
Definition common/lib/format_int.h:34
std::string formatBinOrHexExpr(const IR::Expression *expr, const FormatOptions &formatOptions)
Definition common/lib/format_int.cpp:227
std::string formatBin(const big_int &value, int width, const FormatOptions &formatOptions)
Format.
Definition common/lib/format_int.cpp:24
std::string insertHexSeparators(const std::string &dataStr)
Takes a hex-formatted string as input and inserts slashes as separators.
Definition common/lib/format_int.cpp:267
std::vector< uint8_t > convertBigIntToBytes(const big_int &dataInt, int targetWidthBits, bool padLeft)
Definition common/lib/format_int.cpp:271
bool useSeparator
Definition common/lib/format_int.h:25
std::string formatHex(const big_int &value, int width, const FormatOptions &formatOptions)
Format.
Definition common/lib/format_int.cpp:88
std::string insertSeparators(const std::string &dataStr, const std::string &separator, size_t stride, bool skipFirst)
Definition common/lib/format_int.cpp:232
Defines common formatting options.
Definition common/lib/format_int.h:20