16namespace P4::DBPrint {
48 TableNoActions = 0x10,
52int dbgetflags(std::ostream &out);
53int dbsetflags(std::ostream &out,
int val,
int mask = ~0U);
55inline int getprec(std::ostream &out) {
return dbgetflags(out) & DBPrint::Precedence; }
56class setflags_helper {
60 setflags_helper(
int v,
int m) : val(v), mask(m) { assert((val & ~mask) == 0); }
63 setflags_helper() =
delete;
65 void set(std::ostream &out)
const { dbsetflags(out, val, mask); }
67struct setprec :
public setflags_helper {
68 explicit setprec(
int prec) : setflags_helper(prec, DBPrint::Precedence) {}
70struct setflag :
public setflags_helper {
71 explicit setflag(
int fl) : setflags_helper(fl, fl) {}
73struct clrflag :
public setflags_helper {
74 explicit clrflag(
int fl) : setflags_helper(0, fl) {}
82inline std::ostream &operator<<(std::ostream &out,
const DBPrint::dbprint_flags fl) {
83 DBPrint::dbsetflags(out, fl, fl ? fl : ~0);