1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
/***************************************************************************
* Copyright (C) 2016 by pgRouting developers *
* project@pgrouting.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License t &or more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef SRC_CONFIGURATION_H_
#define SRC_CONFIGURATION_H_
#include <string>
#include <map>
#include <boost/lexical_cast.hpp>
#include "configuration/tag_key.h"
#include "configuration/tag_value.h"
#include "osm_elements/osm_tag.h"
namespace osm2pgr {
class Configuration {
public:
Configuration() = default;
/** @brief add group of tag_key + all the tag_values
*
* @param[in] t_key Tag_key found in the configuration
*/
void add_tag_key(const Tag_key &t_key);
/** @brief retrieves the Tag_value (attrributes
*
* @param[in] tag Tag found in the configuration
* @returns Tag_value
*/
const Tag_value& tag_value(const Tag &tag) const;
/* Is the (key, value) pair in the configuration?
*
*
* @param[in] tag Tag (key, value) pair
*/
bool has_tag(const Tag &tag) const;
/** retrieves the maxspeed based on the tag
*
* if the (key,value) has a value this is returned
* else if the (key, *) has a value this is returned
* else 50 is returned
*/
double maxspeed(const Tag &tag) const;
double maxspeed_forward(const Tag &tag) const;
double maxspeed_backward(const Tag &tag) const;
/** retrieves the priority based on the tag
*
* if the (key,value) has a value this is returned
* else if the (key, *) has a value this is returned
* else 0 is returned
*/
double priority(const Tag &tag) const;
/*
* data to be exported to configuration TABLE
*/
const std::map<std::string, Tag_key>& types() const {return m_Tag_keys;}
private:
/** @brief is the tag key in the configuration file
*
* @param[in] key tag_key name="key"
*/
bool has_tag_key(const std::string &key) const;
const Tag_key& tag_key(const Tag &tag) const;
private:
std::map<std::string, Tag_key> m_Tag_keys;
};
} // end namespace osm2pgr
#endif // SRC_CONFIGURATION_H_
|