spot
0.8.3
|
Multi-operand operators.These operators are considered commutative and associative. More...
#include <ltlast/multop.hh>
Classes | |
struct | paircmp |
Comparison functor used internally by ltl::multop. More... | |
Public Types | |
enum | type { Or, And } |
typedef std::vector< formula * > | vec |
List of formulae. | |
Public Member Functions | |
virtual void | accept (visitor &v) |
Entry point for vspot::ltl::visitor instances. | |
virtual void | accept (const_visitor &v) const |
Entry point for vspot::ltl::const_visitor instances. | |
unsigned | size () const |
Get the number of children. | |
const formula * | nth (unsigned n) const |
Get the nth children. | |
formula * | nth (unsigned n) |
Get the nth children. | |
type | op () const |
Get the type of this operator. | |
const char * | op_name () const |
Get the type of this operator, as a string. | |
virtual std::string | dump () const |
Return a canonic representation of the atomic proposition. | |
formula * | clone () const |
clone this node | |
void | destroy () const |
release this node | |
size_t | hash () const |
Return a hash key for the formula. | |
Static Public Member Functions | |
static formula * | instance (type op, formula *first, formula *second) |
Build a spot::ltl::multop with two children. | |
static formula * | instance (type op, vec *v) |
Build a spot::ltl::multop with many children. | |
static unsigned | instance_count () |
Number of instantiated multi-operand operators. For debugging. | |
static std::ostream & | dump_instances (std::ostream &os) |
Dump all instances. For debugging. | |
Protected Types | |
typedef std::pair< type, vec * > | pair |
typedef std::map< pair, multop *, paircmp > | map |
Protected Member Functions | |
multop (type op, vec *v) | |
virtual | ~multop () |
void | ref_ () |
increment reference counter if any | |
bool | unref_ () |
decrement reference counter if any, return true when the instance must be deleted (usually when the counter hits 0). | |
unsigned | ref_count_ () |
Number of references to this formula. | |
Protected Attributes | |
size_t | count_ |
The hash key of this formula. | |
Static Protected Attributes | |
static map | instances |
Private Attributes | |
type | op_ |
vec * | children_ |
Multi-operand operators.
These operators are considered commutative and associative.
typedef std::map<pair, multop*, paircmp> spot::ltl::multop::map [protected] |
typedef std::pair<type, vec*> spot::ltl::multop::pair [protected] |
typedef std::vector<formula*> spot::ltl::multop::vec |
List of formulae.
spot::ltl::multop::multop | ( | type | op, |
vec * | v | ||
) | [protected] |
virtual spot::ltl::multop::~multop | ( | ) | [protected, virtual] |
virtual void spot::ltl::multop::accept | ( | visitor & | v | ) | [virtual] |
Entry point for vspot::ltl::visitor instances.
Implements spot::ltl::formula.
virtual void spot::ltl::multop::accept | ( | const_visitor & | v | ) | const [virtual] |
Entry point for vspot::ltl::const_visitor instances.
Implements spot::ltl::formula.
formula* spot::ltl::formula::clone | ( | ) | const [inherited] |
clone this node
This increments the reference counter of this node (if one is used).
void spot::ltl::formula::destroy | ( | ) | const [inherited] |
release this node
This decrements the reference counter of this node (if one is used) and can free the object.
Referenced by spot::taa_tgba_labelled< std::string, string_hash >::add_acceptance_condition(), and spot::tgba_explicit_labelled< std::string, string_hash >::declare_acceptance_condition().
virtual std::string spot::ltl::multop::dump | ( | ) | const [virtual] |
Return a canonic representation of the atomic proposition.
Implements spot::ltl::formula.
static std::ostream& spot::ltl::multop::dump_instances | ( | std::ostream & | os | ) | [static] |
Dump all instances. For debugging.
size_t spot::ltl::formula::hash | ( | ) | const [inline, inherited] |
Return a hash key for the formula.
References spot::ltl::formula::count_.
Referenced by spot::ltl::formula_ptr_less_than::operator()(), and spot::ltl::formula_ptr_hash::operator()().
static formula* spot::ltl::multop::instance | ( | type | op, |
formula * | first, | ||
formula * | second | ||
) | [static] |
Build a spot::ltl::multop with two children.
If one of the children itself is a spot::ltl::multop with the same type, it will be merged. I.e., children if that child will be added, and that child itself will be destroyed. This allows incremental building of n-ary ltl::multop.
This functions can perform slight optimizations and may not return an ltl::multop objects. For instance if first
and second
are equal, that formula is returned as-is.
static formula* spot::ltl::multop::instance | ( | type | op, |
vec * | v | ||
) | [static] |
Build a spot::ltl::multop with many children.
Same as the other instance() function, but take a vector of formula in argument. This vector is acquired by the spot::ltl::multop class, the caller should allocate it with new
, but not use it (especially not destroy it) after it has been passed to spot::ltl::multop.
This functions can perform slight optimizations and may not return an ltl::multop objects. For instance if the vector contain only one unique element, this this formula will be returned as-is.
static unsigned spot::ltl::multop::instance_count | ( | ) | [static] |
Number of instantiated multi-operand operators. For debugging.
const formula* spot::ltl::multop::nth | ( | unsigned | n | ) | const |
Get the nth children.
Starting with n = 0.
formula* spot::ltl::multop::nth | ( | unsigned | n | ) |
Get the nth children.
Starting with n = 0.
type spot::ltl::multop::op | ( | ) | const |
Get the type of this operator.
const char* spot::ltl::multop::op_name | ( | ) | const |
Get the type of this operator, as a string.
void spot::ltl::ref_formula::ref_ | ( | ) | [protected, virtual, inherited] |
increment reference counter if any
Reimplemented from spot::ltl::formula.
unsigned spot::ltl::ref_formula::ref_count_ | ( | ) | [protected, inherited] |
Number of references to this formula.
unsigned spot::ltl::multop::size | ( | ) | const |
Get the number of children.
bool spot::ltl::ref_formula::unref_ | ( | ) | [protected, virtual, inherited] |
decrement reference counter if any, return true when the instance must be deleted (usually when the counter hits 0).
Reimplemented from spot::ltl::formula.
vec* spot::ltl::multop::children_ [private] |
size_t spot::ltl::formula::count_ [protected, inherited] |
The hash key of this formula.
Referenced by spot::ltl::formula::hash().
map spot::ltl::multop::instances [static, protected] |
type spot::ltl::multop::op_ [private] |