moved ImportNode/Edge into compile units
This commit is contained in:
		
							parent
							
								
									df3a7676eb
								
							
						
					
					
						commit
						3625308585
					
				@ -35,6 +35,8 @@ configure_file(
 | 
				
			|||||||
  ${CMAKE_SOURCE_DIR}/Util/GitDescription.cpp
 | 
					  ${CMAKE_SOURCE_DIR}/Util/GitDescription.cpp
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
file(GLOB ExtractorGlob Extractor/*.cpp)
 | 
					file(GLOB ExtractorGlob Extractor/*.cpp)
 | 
				
			||||||
 | 
					file(GLOB ImporterGlob DataStructures/Import*.cpp)
 | 
				
			||||||
 | 
					add_library(IMPORT STATIC ${ImporterGlob})
 | 
				
			||||||
set(ExtractorSources extractor.cpp ${ExtractorGlob})
 | 
					set(ExtractorSources extractor.cpp ${ExtractorGlob})
 | 
				
			||||||
add_executable(osrm-extract ${ExtractorSources})
 | 
					add_executable(osrm-extract ${ExtractorSources})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -157,8 +159,8 @@ endif()
 | 
				
			|||||||
include_directories(${Boost_INCLUDE_DIRS})
 | 
					include_directories(${Boost_INCLUDE_DIRS})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
target_link_libraries(OSRM ${Boost_LIBRARIES} COORDLIB)
 | 
					target_link_libraries(OSRM ${Boost_LIBRARIES} COORDLIB)
 | 
				
			||||||
target_link_libraries(osrm-extract ${Boost_LIBRARIES} UUID GITDESCRIPTION COORDLIB)
 | 
					target_link_libraries(osrm-extract ${Boost_LIBRARIES} UUID GITDESCRIPTION COORDLIB IMPORT)
 | 
				
			||||||
target_link_libraries(osrm-prepare ${Boost_LIBRARIES} UUID GITDESCRIPTION COORDLIB)
 | 
					target_link_libraries(osrm-prepare ${Boost_LIBRARIES} UUID GITDESCRIPTION COORDLIB IMPORT)
 | 
				
			||||||
target_link_libraries(osrm-routed ${Boost_LIBRARIES} OSRM UUID GITDESCRIPTION)
 | 
					target_link_libraries(osrm-routed ${Boost_LIBRARIES} OSRM UUID GITDESCRIPTION)
 | 
				
			||||||
target_link_libraries(osrm-datastore ${Boost_LIBRARIES} UUID GITDESCRIPTION COORDLIB)
 | 
					target_link_libraries(osrm-datastore ${Boost_LIBRARIES} UUID GITDESCRIPTION COORDLIB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -231,7 +233,7 @@ if(WITH_TOOLS)
 | 
				
			|||||||
  find_package(GDAL)
 | 
					  find_package(GDAL)
 | 
				
			||||||
  if(GDAL_FOUND)
 | 
					  if(GDAL_FOUND)
 | 
				
			||||||
    add_executable(osrm-components Tools/components.cpp)
 | 
					    add_executable(osrm-components Tools/components.cpp)
 | 
				
			||||||
   target_link_libraries(osrm-components ${TBB_LIBRARIES})
 | 
					    target_link_libraries(osrm-components ${TBB_LIBRARIES} IMPORT)
 | 
				
			||||||
    include_directories(${GDAL_INCLUDE_DIR})
 | 
					    include_directories(${GDAL_INCLUDE_DIR})
 | 
				
			||||||
    target_link_libraries(
 | 
					    target_link_libraries(
 | 
				
			||||||
      osrm-components
 | 
					      osrm-components
 | 
				
			||||||
 | 
				
			|||||||
@ -37,22 +37,7 @@ class NodeBasedEdge
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public:
 | 
					  public:
 | 
				
			||||||
    bool operator<(const NodeBasedEdge &e) const
 | 
					    bool operator<(const NodeBasedEdge &e) const;
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (source() == e.source())
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            if (target() == e.target())
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                if (weight() == e.weight())
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    return (isForward() && isBackward() && ((!e.isForward()) || (!e.isBackward())));
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                return (weight() < e.weight());
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return (target() < e.target());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return (source() < e.source());
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    explicit NodeBasedEdge(NodeID s,
 | 
					    explicit NodeBasedEdge(NodeID s,
 | 
				
			||||||
                           NodeID t,
 | 
					                           NodeID t,
 | 
				
			||||||
@ -65,34 +50,21 @@ class NodeBasedEdge
 | 
				
			|||||||
                           bool ig,
 | 
					                           bool ig,
 | 
				
			||||||
                           bool ar,
 | 
					                           bool ar,
 | 
				
			||||||
                           bool cf,
 | 
					                           bool cf,
 | 
				
			||||||
                           bool is_split)
 | 
					                           bool is_split);
 | 
				
			||||||
        : _source(s), _target(t), _name(n), _weight(w), _type(ty), forward(f), backward(b),
 | 
					 | 
				
			||||||
          _roundabout(ra), _ignoreInGrid(ig), _accessRestricted(ar), _contraFlow(cf),
 | 
					 | 
				
			||||||
          is_split(is_split)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (ty < 0)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            throw OSRMException("negative edge type");
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NodeID target() const { return _target; }
 | 
					    NodeID target() const;
 | 
				
			||||||
    NodeID source() const { return _source; }
 | 
					    NodeID source() const;
 | 
				
			||||||
    NodeID name() const { return _name; }
 | 
					    NodeID name() const;
 | 
				
			||||||
    EdgeWeight weight() const { return _weight; }
 | 
					    EdgeWeight weight() const;
 | 
				
			||||||
    short type() const
 | 
					    short type() const;
 | 
				
			||||||
    {
 | 
					    bool isBackward() const;
 | 
				
			||||||
        BOOST_ASSERT_MSG(_type >= 0, "type of ImportEdge invalid");
 | 
					    bool isForward() const;
 | 
				
			||||||
        return _type;
 | 
					    bool isLocatable() const;
 | 
				
			||||||
    }
 | 
					    bool isRoundabout() const;
 | 
				
			||||||
    bool isBackward() const { return backward; }
 | 
					    bool ignoreInGrid() const;
 | 
				
			||||||
    bool isForward() const { return forward; }
 | 
					    bool isAccessRestricted() const;
 | 
				
			||||||
    bool isLocatable() const { return _type != 14; }
 | 
					    bool isContraFlow() const;
 | 
				
			||||||
    bool isRoundabout() const { return _roundabout; }
 | 
					    bool IsSplit() const;
 | 
				
			||||||
    bool ignoreInGrid() const { return _ignoreInGrid; }
 | 
					 | 
				
			||||||
    bool isAccessRestricted() const { return _accessRestricted; }
 | 
					 | 
				
			||||||
    bool isContraFlow() const { return _contraFlow; }
 | 
					 | 
				
			||||||
    bool IsSplit() const { return is_split; }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // TODO: names need to be fixed.
 | 
					    // TODO: names need to be fixed.
 | 
				
			||||||
    NodeID _source;
 | 
					    NodeID _source;
 | 
				
			||||||
@ -108,61 +80,34 @@ class NodeBasedEdge
 | 
				
			|||||||
    bool _contraFlow : 1;
 | 
					    bool _contraFlow : 1;
 | 
				
			||||||
    bool is_split : 1;
 | 
					    bool is_split : 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private:
 | 
					    NodeBasedEdge() = delete;
 | 
				
			||||||
    NodeBasedEdge() {}
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class EdgeBasedEdge
 | 
					class EdgeBasedEdge
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public:
 | 
					  public:
 | 
				
			||||||
    bool operator<(const EdgeBasedEdge &e) const
 | 
					    bool operator<(const EdgeBasedEdge &e) const;
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (source() == e.source())
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            if (target() == e.target())
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                if (weight() == e.weight())
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    return (isForward() && isBackward() && ((!e.isForward()) || (!e.isBackward())));
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                return (weight() < e.weight());
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return (target() < e.target());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return (source() < e.source());
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    template <class EdgeT>
 | 
					    template <class EdgeT>
 | 
				
			||||||
    explicit EdgeBasedEdge(const EdgeT &myEdge)
 | 
					    explicit EdgeBasedEdge(const EdgeT &myEdge);
 | 
				
			||||||
        : m_source(myEdge.source), m_target(myEdge.target), m_edgeID(myEdge.data.via),
 | 
					 | 
				
			||||||
          m_weight(myEdge.data.distance), m_forward(myEdge.data.forward),
 | 
					 | 
				
			||||||
          m_backward(myEdge.data.backward)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /** Default constructor. target and weight are set to 0.*/
 | 
					    /** Default constructor. target and weight are set to 0.*/
 | 
				
			||||||
    EdgeBasedEdge()
 | 
					    EdgeBasedEdge();
 | 
				
			||||||
        : m_source(0), m_target(0), m_edgeID(0), m_weight(0), m_forward(false), m_backward(false)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    explicit EdgeBasedEdge(const NodeID s,
 | 
					    explicit EdgeBasedEdge(const NodeID s,
 | 
				
			||||||
                           const NodeID t,
 | 
					                           const NodeID t,
 | 
				
			||||||
                           const NodeID v,
 | 
					                           const NodeID v,
 | 
				
			||||||
                           const EdgeWeight w,
 | 
					                           const EdgeWeight w,
 | 
				
			||||||
                           const bool f,
 | 
					                           const bool f,
 | 
				
			||||||
                           const bool b)
 | 
					                           const bool b);
 | 
				
			||||||
        : m_source(s), m_target(t), m_edgeID(v), m_weight(w), m_forward(f), m_backward(b)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NodeID target() const { return m_target; }
 | 
					    NodeID target() const;
 | 
				
			||||||
    NodeID source() const { return m_source; }
 | 
					    NodeID source() const;
 | 
				
			||||||
    EdgeWeight weight() const { return m_weight; }
 | 
					    EdgeWeight weight() const;
 | 
				
			||||||
    NodeID id() const { return m_edgeID; }
 | 
					    NodeID id() const;
 | 
				
			||||||
    bool isBackward() const { return m_backward; }
 | 
					    bool isBackward() const;
 | 
				
			||||||
    bool isForward() const { return m_forward; }
 | 
					    bool isForward() const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private:
 | 
					  private:
 | 
				
			||||||
    NodeID m_source;
 | 
					    NodeID m_source;
 | 
				
			||||||
 | 
				
			|||||||
@ -31,30 +31,17 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			|||||||
#include "QueryNode.h"
 | 
					#include "QueryNode.h"
 | 
				
			||||||
#include "../DataStructures/HashTable.h"
 | 
					#include "../DataStructures/HashTable.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <limits>
 | 
					 | 
				
			||||||
#include <string>
 | 
					#include <string>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct ExternalMemoryNode : NodeInfo
 | 
					struct ExternalMemoryNode : NodeInfo
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ExternalMemoryNode(int lat, int lon, unsigned int id, bool bollard, bool traffic_light)
 | 
					    ExternalMemoryNode(int lat, int lon, unsigned int id, bool bollard, bool traffic_light);
 | 
				
			||||||
        : NodeInfo(lat, lon, id), bollard(bollard), trafficLight(traffic_light)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ExternalMemoryNode() : bollard(false), trafficLight(false) {}
 | 
					    ExternalMemoryNode();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static ExternalMemoryNode min_value() { return ExternalMemoryNode(0, 0, 0, false, false); }
 | 
					    static ExternalMemoryNode min_value();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static ExternalMemoryNode max_value()
 | 
					    static ExternalMemoryNode max_value();
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        return ExternalMemoryNode(std::numeric_limits<int>::max(),
 | 
					 | 
				
			||||||
                                  std::numeric_limits<int>::max(),
 | 
					 | 
				
			||||||
                                  std::numeric_limits<unsigned>::max(),
 | 
					 | 
				
			||||||
                                  false,
 | 
					 | 
				
			||||||
                                  false);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    NodeID key() const { return id; }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bool bollard;
 | 
					    bool bollard;
 | 
				
			||||||
    bool trafficLight;
 | 
					    bool trafficLight;
 | 
				
			||||||
@ -64,15 +51,7 @@ struct ImportNode : public ExternalMemoryNode
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    HashTable<std::string, std::string> keyVals;
 | 
					    HashTable<std::string, std::string> keyVals;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    inline void Clear()
 | 
					    inline void Clear();
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        keyVals.clear();
 | 
					 | 
				
			||||||
        lat = 0;
 | 
					 | 
				
			||||||
        lon = 0;
 | 
					 | 
				
			||||||
        id = 0;
 | 
					 | 
				
			||||||
        bollard = false;
 | 
					 | 
				
			||||||
        trafficLight = false;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* IMPORTNODE_H_ */
 | 
					#endif /* IMPORTNODE_H_ */
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user