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