Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members

spot::ltl::multop Class Reference

Multi-operand operators. More...

#include <multop.hh>

Inheritance diagram for spot::ltl::multop:

Inheritance graph
[legend]
Collaboration diagram for spot::ltl::multop:

Collaboration graph
[legend]
List of all members.

Public Types

typedef std::vector< formula * > vec
 List of formulae.

enum  type { Or, And }

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 formulanth (unsigned n) const
 Get the nth children.

formulanth (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.

formularef ()
 clone this node


Static Public Member Functions

formulainstance (type op, formula *first, formula *second)
 Build a spot::ltl::multop with two children.

formulainstance (type op, vec *v)
 Build a spot::ltl::multop with many children.

unsigned instance_count ()
 Number of instantiated multi-operand operators. For debugging.

void unref (formula *f)
 release this node


Protected Types

typedef std::pair< type, vec * > pair
typedef std::map< pair, formula *,
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).


Static Protected Attributes

map instances

Private Attributes

type op_
vecchildren_

Detailed Description

Multi-operand operators.

These operators are considered commutative and associative.


Member Typedef Documentation

typedef std::map<pair, formula*, 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.


Member Enumeration Documentation

enum spot::ltl::multop::type
 

Enumeration values:
Or 
And 


Constructor & Destructor Documentation

spot::ltl::multop::multop type  op,
vec v
[protected]
 

virtual spot::ltl::multop::~multop  )  [protected, virtual]
 


Member Function Documentation

virtual void spot::ltl::multop::accept const_visitor v  )  const [virtual]
 

Entry point for vspot::ltl::const_visitor instances.

Implements spot::ltl::formula.

virtual void spot::ltl::multop::accept visitor v  )  [virtual]
 

Entry point for vspot::ltl::visitor instances.

Implements spot::ltl::formula.

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.

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.

unsigned spot::ltl::multop::instance_count  )  [static]
 

Number of instantiated multi-operand operators. For debugging.

formula* spot::ltl::multop::nth unsigned  n  ) 
 

Get the nth children.

Starting with n = 0.

const formula* spot::ltl::multop::nth unsigned  n  )  const
 

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.

formula* spot::ltl::formula::ref  )  [inherited]
 

clone this node

This increments the reference counter of this node (if one is used). You should almost never use this method directly as it doesn't touch the children. If you want to clone a whole formula, use spot::ltl::clone() instead.

void spot::ltl::ref_formula::ref_  )  [protected, virtual, inherited]
 

increment reference counter if any

Reimplemented from spot::ltl::formula.

unsigned spot::ltl::multop::size  )  const
 

Get the number of children.

void spot::ltl::formula::unref formula f  )  [static, inherited]
 

release this node

This decrements the reference counter of this node (if one is used) and can free the object. You should almost never use this method directly as it doesn't touch the children. If you want to release a whole formula, use spot::ltl::destroy() instead.

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.


Member Data Documentation

vec* spot::ltl::multop::children_ [private]
 

map spot::ltl::multop::instances [static, protected]
 

type spot::ltl::multop::op_ [private]
 


The documentation for this class was generated from the following file:
Generated on Tue Jan 13 18:22:40 2004 for spot by doxygen 1.3.5