63 lines
1.4 KiB
63 lines
1.4 KiB
/*
|
|
* BinaryBooleanFunctionExpression.h
|
|
*
|
|
* Created on: 03.01.2013
|
|
* Author: chris
|
|
*/
|
|
|
|
#ifndef BINARYBOOLEANFUNCTIONEXPRESSION_H_
|
|
#define BINARYBOOLEANFUNCTIONEXPRESSION_H_
|
|
|
|
#include "src/ir/expressions/BaseExpression.h"
|
|
#include <boost/fusion/include/adapt_struct.hpp>
|
|
|
|
namespace storm {
|
|
|
|
namespace ir {
|
|
|
|
namespace expressions {
|
|
|
|
class BinaryBooleanFunctionExpression : public BaseExpression {
|
|
public:
|
|
enum FunctorType {AND, OR, XOR, IMPLIES} functor;
|
|
BaseExpression* left;
|
|
BaseExpression* right;
|
|
|
|
BinaryBooleanFunctionExpression(BaseExpression* left, BaseExpression* right, FunctorType functor) {
|
|
this->left = left;
|
|
this->right = right;
|
|
this->functor = functor;
|
|
}
|
|
|
|
virtual ~BinaryBooleanFunctionExpression() {
|
|
|
|
}
|
|
|
|
virtual std::string toString() const {
|
|
std::string result = left->toString();
|
|
switch (functor) {
|
|
case AND: result += " & "; break;
|
|
case OR: result += " | "; break;
|
|
case XOR: result += " ^ "; break;
|
|
case IMPLIES: result += " => "; break;
|
|
}
|
|
result += right->toString();
|
|
|
|
return result;
|
|
}
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
BOOST_FUSION_ADAPT_STRUCT(
|
|
storm::ir::expressions::BinaryBooleanFunctionExpression,
|
|
(storm::ir::expressions::BaseExpression*, left)
|
|
(storm::ir::expressions::BaseExpression*, right)
|
|
(storm::ir::expressions::BinaryBooleanFunctionExpression::FunctorType, functor)
|
|
)
|
|
|
|
#endif /* BINARYBOOLEANFUNCTIONEXPRESSION_H_ */
|