25namespace P4::DBPrint {
57 TableNoActions = 0x10,
61int dbgetflags(std::ostream &out);
62int dbsetflags(std::ostream &out,
int val,
int mask = ~0U);
64inline int getprec(std::ostream &out) {
return dbgetflags(out) & DBPrint::Precedence; }
65class setflags_helper {
69 setflags_helper(
int v,
int m) : val(v), mask(m) { assert((val & ~mask) == 0); }
72 setflags_helper() =
delete;
74 void set(std::ostream &out)
const { dbsetflags(out, val, mask); }
76struct setprec :
public setflags_helper {
77 explicit setprec(
int prec) : setflags_helper(prec, DBPrint::Precedence) {}
79struct setflag :
public setflags_helper {
80 explicit setflag(
int fl) : setflags_helper(fl, fl) {}
82struct clrflag :
public setflags_helper {
83 explicit clrflag(
int fl) : setflags_helper(0, fl) {}
91inline std::ostream &operator<<(std::ostream &out,
const DBPrint::dbprint_flags fl) {
92 DBPrint::dbsetflags(out, fl, fl ? fl : ~0);