/* Web Polygraph http://www.web-polygraph.org/
* (C) 2003-2006 The Measurement Factory
* Licensed under the Apache License, Version 2.0 */
#ifndef POLYGRAPH__PGL_PGLEXPRSYM_H
#define POLYGRAPH__PGL_PGLEXPRSYM_H
#include "xparser/SynSym.h"
#include "pgl/PglExprOper.h"
// base class for all kind of "expressions"
class ExpressionSym: public SynSym {
public:
typedef ExpressionOper Oper;
public:
static String TheType;
public:
ExpressionSym(const String &aType): SynSym(aType) {}
// clone self and apply a given operator (unary or binary);
// by default, complains about unsupported operation
virtual ExpressionSym *unOper(const Oper &op) const;
virtual ExpressionSym *bnOper(const Oper &op, const SynSym &exp) const;
virtual bool isA(const String &type) const;
protected:
void checkDenom(int val) const;
void checkDenom(double val) const;
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1