25 #ifndef SPOT_LTLAST_MULTOP_HH
26 # define SPOT_LTLAST_MULTOP_HH
43 enum type { Or, OrRat, And, AndRat, AndNLM, Concat, Fusion };
46 typedef std::vector<const formula*>
vec;
123 static const formula* instance(type op,
vec* v);
125 virtual void accept(
visitor& v)
const;
128 unsigned size()
const;
132 const formula* nth(
unsigned n)
const;
139 const formula* all_but(
unsigned n)
const;
145 unsigned boolean_count()
const;
156 const formula* boolean_operands(
unsigned* width = 0)
const;
161 const char* op_name()
const;
164 virtual std::string
dump()
const;
167 static unsigned instance_count();
170 static std::ostream& dump_instances(std::ostream& os);
173 typedef std::pair<type, vec*> pair;
178 operator()(
const pair& p1,
const pair& p2)
const
180 if (p1.first != p2.first)
181 return p1.first < p2.first;
182 return *p1.second < *p2.second;
185 typedef std::map<pair, const multop*, paircmp> map;
186 static map instances;
205 if (f->
kind() != formula::MultOp)
207 return static_cast<const multop*
>(f);
216 is_multop(
const formula* f, multop::type op)
218 if (
const multop* mo = is_multop(f))
230 is_multop(
const formula* f, multop::type op1, multop::type op2)
232 if (
const multop* mo = is_multop(f))
233 if (mo->op() == op1 || mo->op() == op2)
243 is_And(
const formula* f)
245 return is_multop(f, multop::And);
253 is_AndRat(
const formula* f)
255 return is_multop(f, multop::AndRat);
263 is_AndNLM(
const formula* f)
265 return is_multop(f, multop::AndNLM);
273 is_Or(
const formula* f)
275 return is_multop(f, multop::Or);
283 is_OrRat(
const formula* f)
285 return is_multop(f, multop::OrRat);
293 is_Concat(
const formula* f)
295 return is_multop(f, multop::Concat);
303 is_Fusion(
const formula* f)
305 return is_multop(f, multop::Fusion);
310 #endif // SPOT_LTLAST_MULTOP_HH
Comparison functor used internally by ltl::multop.
Definition: multop.hh:175
Multi-operand operators.
Definition: multop.hh:40
Formula visitor.
Definition: visitor.hh:41
std::vector< const formula * > vec
List of formulae.
Definition: multop.hh:46
SPOT_API std::ostream & dump(std::ostream &os, const formula *f)
Dump a formula tree.