00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00024
#ifndef SPOT_LTLAST_UNOP_HH
00025
# define SPOT_LTLAST_UNOP_HH
00026
00027
#include <map>
00028
#include "refformula.hh"
00029
00030
namespace spot
00031 {
00032
namespace ltl
00033 {
00034
00036 class unop :
public ref_formula
00037 {
00038
public:
00039 enum type {
Not,
X,
F,
G };
00040
00043
static unop*
instance(type op,
formula* child);
00044
00045
virtual void accept(
visitor& v);
00046
virtual void accept(
const_visitor& v)
const;
00047
00049
const formula*
child() const;
00051
formula* child();
00052
00054 type op() const;
00056 const
char* op_name() const;
00057
00059 static
unsigned instance_count();
00060
00061 protected:
00062 typedef std::
pair<type,
formula*>
pair;
00063 typedef std::
map<pair,
formula*>
map;
00064 static map instances;
00065
00066
unop(type op,
formula* child);
00067 virtual ~
unop();
00068
00069 private:
00070 type op_;
00071 formula* child_;
00072 };
00073
00074 }
00075 }
00076
00077 #endif