00001 /* 00002 * Element.h 00003 * 00004 * Created on: Nov 29, 2011 00005 * Author: martin 00006 */ 00007 00008 #ifndef OSMELEMENT_H_ 00009 #define OSMELEMENT_H_ 00010 00011 #include <string> 00012 #include <vector> 00013 #include <stdint.h> 00014 #include <boost/property_tree/ptree.hpp> 00015 #include "ObjectType.h" 00016 00017 namespace osmdb 00018 { 00019 00020 class PropertiesSelection; 00021 class ElementImporter; 00022 00023 } 00024 00025 namespace osm 00026 { 00027 00028 typedef std::pair<std::string, std::string> Tag; 00029 00034 class Element 00035 { 00036 public: 00037 virtual ~Element(); 00042 virtual boost::property_tree::ptree get_description() = 0; 00047 virtual osm::ObjectType get_type() const = 0; 00052 virtual void fill(osmdb::PropertiesSelection& db) = 0; 00059 virtual void add_to_relation(osmdb::ElementImporter& db, int64_t parentid, std::string const& role) = 0; 00064 virtual int64_t get_id() const = 0; 00065 }; 00066 00067 } /* namespace osm */ 00068 #endif /* ELEMENT_H_ */