libosmscout  1.1.1
RouteDescriptionPostprocessor.h
Go to the documentation of this file.
1 #ifndef LIBOSMSCOUT_ROUTEDESCRIPTIONPOSTPROCESSOR_H
2 #define LIBOSMSCOUT_ROUTEDESCRIPTIONPOSTPROCESSOR_H
3 
4 /*
5  This source is part of the libosmscout library
6  Copyright (C) 2009-2018 Tim Teulings
7 
8  This library is free software; you can redistribute it and/or
9  modify it under the terms of the GNU Lesser General Public
10  License as published by the Free Software Foundation; either
11  version 2.1 of the License, or (at your option) any later version.
12 
13  This library is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  Lesser General Public License for more details.
17 
18  You should have received a copy of the GNU Lesser General Public
19  License along with this library; if not, write to the Free Software
20  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 */
22 
23 #include <list>
24 #include <memory>
25 #include <string>
26 #include <unordered_map>
27 #include <vector>
28 #include <map>
29 
30 #include <osmscout/ObjectRef.h>
31 #include <osmscout/Path.h>
32 #include <osmscout/GeoCoord.h>
35 #include <osmscout/util/Distance.h>
36 #include <osmscout/util/Time.h>
37 
38 namespace osmscout {
39 
48  {
49  public:
54  {
55  virtual ~Callback() = default;
56 
60  virtual void BeforeRoute();
61 
69  virtual void OnStart(const RouteDescription::StartDescriptionRef& startDescription,
70  const RouteDescription::TypeNameDescriptionRef& typeNameDescription,
71  const RouteDescription::NameDescriptionRef& nameDescription);
72 
78  virtual void OnTargetReached(const RouteDescription::TargetDescriptionRef& targetDescription);
79 
90  virtual void OnTurn(const RouteDescription::TurnDescriptionRef& turnDescription,
91  const RouteDescription::CrossingWaysDescriptionRef& crossingWaysDescription,
92  const RouteDescription::DirectionDescriptionRef& directionDescription,
93  const RouteDescription::TypeNameDescriptionRef& typeNameDescription,
94  const RouteDescription::NameDescriptionRef& nameDescription);
95 
102  virtual void OnRoundaboutEnter(const RouteDescription::RoundaboutEnterDescriptionRef& roundaboutEnterDescription,
103  const RouteDescription::CrossingWaysDescriptionRef& crossingWaysDescription);
104 
111  virtual void OnRoundaboutLeave(const RouteDescription::RoundaboutLeaveDescriptionRef& roundaboutLeaveDescription,
112  const RouteDescription::NameDescriptionRef& nameDescription);
113 
120  virtual void OnMotorwayEnter(const RouteDescription::MotorwayEnterDescriptionRef& motorwayEnterDescription,
121  const RouteDescription::CrossingWaysDescriptionRef& crossingWaysDescription);
129  virtual void OnMotorwayChange(const RouteDescription::MotorwayChangeDescriptionRef& motorwayChangeDescription,
130  const RouteDescription::MotorwayJunctionDescriptionRef& motorwayJunctionDescription,
131  const RouteDescription::DestinationDescriptionRef& crossingDestinationDescription);
140  virtual void OnMotorwayLeave(const RouteDescription::MotorwayLeaveDescriptionRef& motorwayLeaveDescription,
141  const RouteDescription::MotorwayJunctionDescriptionRef& motorwayJunctionDescription,
142  const RouteDescription::DirectionDescriptionRef& directionDescription,
143  const RouteDescription::NameDescriptionRef& nameDescription);
144 
150  virtual void OnPathNameChange(const RouteDescription::NameChangedDescriptionRef& nameChangedDescription);
151 
157  virtual void OnMaxSpeed(const RouteDescription::MaxSpeedDescriptionRef& maxSpeedDescription);
158 
165  virtual void OnPOIAtRoute(const RouteDescription::POIAtRouteDescriptionRef& poiAtRouteDescription);
166 
173  virtual void BeforeNode(const RouteDescription::Node& node);
178  virtual void AfterNode(const RouteDescription::Node& node);
179 
185  virtual bool Continue() const;
186  };
187 
188  public:
189  void GenerateDescription(const RouteDescription& description,
190  Callback& callback) const;
191 
192  void GenerateDescription(const RouteDescription::NodeIterator &first,
193  const RouteDescription::NodeIterator &last,
194  Callback& callback) const;
195  };
196 
197 }
198 
199 #endif //LIBOSMSCOUT_ROUTEDESCRIPTIONPOSTPROCESSOR_H
std::shared_ptr< MotorwayChangeDescription > MotorwayChangeDescriptionRef
Definition: RouteDescription.h:429
std::shared_ptr< DestinationDescription > DestinationDescriptionRef
Definition: RouteDescription.h:492
Definition: RouteDescription.h:667
Definition: RouteDescription.h:53
std::shared_ptr< RoundaboutLeaveDescription > RoundaboutLeaveDescriptionRef
Definition: RouteDescription.h:378
std::shared_ptr< POIAtRouteDescription > POIAtRouteDescriptionRef
Definition: RouteDescription.h:580
std::shared_ptr< StartDescription > StartDescriptionRef
Definition: RouteDescription.h:127
std::shared_ptr< MotorwayEnterDescription > MotorwayEnterDescriptionRef
Definition: RouteDescription.h:400
std::shared_ptr< MotorwayLeaveDescription > MotorwayLeaveDescriptionRef
Definition: RouteDescription.h:451
std::shared_ptr< RoundaboutEnterDescription > RoundaboutEnterDescriptionRef
Definition: RouteDescription.h:350
std::shared_ptr< NameChangedDescription > NameChangedDescriptionRef
Definition: RouteDescription.h:204
std::shared_ptr< NameDescription > NameDescriptionRef
Definition: RouteDescription.h:175
Definition: Area.h:38
std::shared_ptr< TargetDescription > TargetDescriptionRef
Definition: RouteDescription.h:146
std::shared_ptr< DirectionDescription > DirectionDescriptionRef
Definition: RouteDescription.h:316
std::shared_ptr< MaxSpeedDescription > MaxSpeedDescriptionRef
Definition: RouteDescription.h:514
#define OSMSCOUT_API
Definition: CoreImportExport.h:45
std::shared_ptr< CrossingWaysDescription > CrossingWaysDescriptionRef
Definition: RouteDescription.h:253
std::shared_ptr< MotorwayJunctionDescription > MotorwayJunctionDescriptionRef
Definition: RouteDescription.h:473
std::list< RouteDescription::Node >::const_iterator NodeIterator
Definition: RouteDescription.h:779
std::shared_ptr< TypeNameDescription > TypeNameDescriptionRef
Definition: RouteDescription.h:537
Definition: RouteDescriptionPostprocessor.h:53
std::shared_ptr< TurnDescription > TurnDescriptionRef
Definition: RouteDescription.h:328
Definition: RouteDescriptionPostprocessor.h:47