/* LICENSE:
  =========================================================================
    CMPack'04 Source Code Release for OPEN-R SDK 1.1.5-r2 for ERS7
    Copyright (C) 2004 Multirobot Lab [Project Head: Manuela Veloso]
    School of Computer Science, Carnegie Mellon University
    All rights reserved.
  ========================================================================= */

#ifndef INCLUDED_Evaluators_h
#define INCLUDED_Evaluators_h

class Environment;
class ProbEvaluator;

class SensorInfo {
public:
  enum SensorReadingType {PointLandmark=0, GoalLandmark=1, LinePoint=2, CornerLandmark=3};

  typedef union {
    struct PointLandmarkData {
      double dist;
      double dist_dev;
      double angle;
      double angle_dev;
    } point_data;
    struct GoalEdgeData {
      double dist;
      double dist_dev;
      double angle;
      double angle_dev;
    } goal_data;
    struct LinePointData {
      double dist;
      double dist_dev;
      double angle;
      double angle_dev;
    } line_point_data;
  } SensorData;

  SensorReadingType getType() const {
    return type;
  }

  int readingClass;

  SensorReadingType type;
  SensorData data;
};

class SensorInterp {
public:
  void interpretSensors(const Environment *environ, 
                        int num_sensors, const SensorInfo *sensor_info,
                        int *num_primitives_p,ProbEvaluator **primitives_p);
private:
};

#endif
