#ifndef __MODELS_TYPES_H_INCLUDED
#define __MODELS_TYPES_H_INCLUDED

#include <vector>
#include <boost/shared_ptr.hpp>
/**
 * @brief models forward declarations and type defines
*/
namespace models
{
  class BaseSteerDrive;
  class BaseAbsoluteEncoder;
  class BaseSensorGroups;

  /**
   * @def BaseSteerDrivePtr
   * @brief Boost shared pointer to a BaseSteerDrive object
  */
  typedef boost::shared_ptr<BaseSteerDrive> BaseSteerDrivePtr;

  /**
   * @def BaseAbsoluteEncoderPtr
   * @brief Boost shared pointer to a BaseAbsoluteEncoder object
  */
  typedef boost::shared_ptr<BaseAbsoluteEncoder> BaseAbsoluteEncoderPtr;

  /**
   * @def BaseSensorGroupsPtr
   * @brief Boost shared pointer to a BaseSensorGroups object
  */
  typedef boost::shared_ptr<BaseSensorGroups> BaseSensorGroupsPtr;

  /**
   * @def BaseSteerDrive_V
   * @brief Vector of BaseSteerDrivePtr
  */
  typedef std::vector<BaseSteerDrivePtr> BaseSteerDrive_V;

  /**
   * @def BaseAbsoluteEncoder_V
   * @brief Vector of BaseAbsoluteEncoderPtr
  */
  typedef std::vector<BaseAbsoluteEncoderPtr> BaseAbsoluteEncoder_V;

  /**
   * @def BaseSensorGroups_V
   * @brief Vector of BaseSensorGroupsPtr
  */
  typedef std::vector<BaseSensorGroupsPtr> BaseSensorGroups_V;

} // namespace models

#endif // MODELS_TYPES_H_INCLUDED