35 using ClotResourceUsage = Resources_Schema_Logger::ClotResourceUsage;
36 using ClotUsage = Resources_Schema_Logger::ClotUsage;
37 using ClotField = Resources_Schema_Logger::ClotField;
41 ClotResourceUsage *clotLogger =
nullptr;
42 std::vector<ClotResourceUsage *> clotUsages = std::vector<ClotResourceUsage *>(2);
43 bool collected =
false;
44 std::map<unsigned, unsigned> clotTagToChecksumUnit;
45 std::vector<std::map<unsigned, std::vector<ClotUsage *>>> usageData;
47 bool usingClots()
const;
49 std::vector<ClotUsage *> &getUsageData(gress_t gress,
unsigned tag);
51 bool preorder(
const IR::BFN::LoweredParserState *state)
override;
52 void end_apply()
override;
54 void collectClotUsages(
const IR::BFN::LoweredParserMatch *match,
55 const IR::BFN::LoweredParserState *state, gress_t gress);
57 void collectExtractClotInfo(
const IR::BFN::LoweredExtractClot *extract,
58 const IR::BFN::LoweredParserState *state, gress_t gress);
62 ClotUsage *logExtractClotInfo(
cstring parser_state,
bool hasChecksum,
int length,
int offset,
63 unsigned tag,
const Clot *clot);
66 std::vector<ClotResourceUsage *> getLoggers();
68 explicit ClotResourcesLogging(
const ClotInfo &clotInfo);