#ifndef LOGIC_HH #define LOGIC_HH #include "vector.hh" class BinaryExpr; class SensorExpr; class Vehicle; class View; class Logic { public: Logic() { } virtual ~Logic() { } virtual Logic *clone() { return this; } virtual void print(); virtual int lvalue(Vehicle *); virtual double calculate(Vector &, Vehicle *); virtual void draw(Vehicle *, int, View *); static Logic *null_logic(); virtual BinaryExpr *cast_binary_expr() { return 0; } virtual SensorExpr *cast_sensor_expr() { return 0; } }; class LinearLogic: public Logic { int _sensor; double _y_intercept; double _slope; public: LinearLogic(int, double y_intercept, double slope); double calculate(Vector &, Vehicle *); void draw(Vehicle *, int, View *); }; #endif