00001 #ifndef CAJUN_RNDF_BUILDER_H
00002 #define CAJUN_RNDF_BUILDER_H
00003
00004
00005
00006
00007 namespace cajun
00008 {
00009
00010 class rndf_builder_t
00011 {
00012 public:
00013 enum boundary_t
00014 {
00015 BOUNDARY_DOUBLE_YELLOW,
00016 BOUNDARY_SOLID_YELLOW,
00017 BOUNDARY_SOLID_WHITE,
00018 BOUNDARY_BROKEN_WHITE
00019 };
00020 enum direction_t
00021 {
00022 DIRECTION_PRIMARY,
00023 DIRECTION_SECONDARY
00024 };
00025 enum side_t
00026 {
00027 SIDE_LEFT,
00028 SIDE_RIGHT
00029 };
00030
00031 virtual ~rndf_builder_t () {}
00032
00033 virtual void rndf_name (std::string const &name_) = 0;
00034 virtual void num_segments (unsigned num_segs_) = 0;
00035 virtual void num_zones (unsigned num_zones_) = 0;
00036 virtual void format_version (std::string const &version_) = 0;
00037 virtual void creation_date (std::string const &date_) = 0;
00038 virtual void end_file () = 0;
00039
00040
00041 virtual void segment (unsigned seg_) = 0;
00042 virtual void segment_num_lanes (unsigned num_lanes_) = 0;
00043 virtual void segment_name (std::string const &name_) = 0;
00044 virtual void end_segment () = 0;
00045
00046
00047 virtual void lane (unsigned id_[2]) = 0;
00048 virtual void lane_num_waypoints (unsigned num_) = 0;
00049 virtual void lane_direction (direction_t direction_) = 0;
00050 virtual void lane_width (double width_) = 0;
00051 virtual void lane_boundary (side_t side_, boundary_t boundary_) = 0;
00052 virtual void lane_stop (unsigned waypt_[3]) = 0;
00053 virtual void lane_checkpoint (unsigned waypt_[3], unsigned id_) = 0;
00054 virtual void lane_exit (unsigned exit_[3], unsigned entry_[3]) = 0;
00055 virtual void lane_waypt (unsigned waypt_[3],
00056 double lat_, double lon_) = 0;
00057 virtual void lane_xy_waypt (unsigned waypt_[3],
00058 double x_, double y_) = 0;
00059 virtual void end_lane () = 0;
00060
00061
00062 virtual void zone (unsigned zone_) = 0;
00063 virtual void zone_num_spots (unsigned num_) = 0;
00064 virtual void zone_name (std::string const &name_) = 0;
00065 virtual void end_zone () = 0;
00066
00067
00068 virtual void perimeter (unsigned id_[2]) = 0;
00069 virtual void perimeter_num_points (unsigned num_) = 0;
00070 virtual void perimeter_waypt (unsigned waypt_[3],
00071 double lat_, double lon_) = 0;
00072 virtual void perimeter_xy_waypt (unsigned waypt_[3],
00073 double x_, double y_) = 0;
00074 virtual void perimeter_exit (unsigned exit_[3],
00075 unsigned entry_[3]) = 0;
00076 virtual void end_perimeter () = 0;
00077
00078
00079 virtual void spot (unsigned id_[2]) = 0;
00080 virtual void spot_width (double width_) = 0;
00081 virtual void spot_checkpoint (unsigned waypt_[3], unsigned id_) = 0;
00082 virtual void spot_waypt (unsigned waypt_[3],
00083 double lat_, double lon_) = 0;
00084 virtual void spot_xy_waypt (unsigned waypt_[3],
00085 double x_, double y_) = 0;
00086 virtual void end_spot () = 0;
00087 };
00088 };
00089 #endif