1#ifndef OSMSCOUT_TYPEFEATURE_H
2#define OSMSCOUT_TYPEFEATURE_H
25#include <unordered_map>
50 virtual std::string
GetLabel(
const Locale &,
size_t )
const
67 virtual void Read(FileScanner& scanner) = 0;
74 virtual void Write(FileWriter& writer) = 0;
80 return !(*
this==other);
86 class FeatureValueBuffer;
87 class FeatureInstance;
101 std::unordered_map<std::string,size_t> labels;
102 std::unordered_map<std::string,size_t> flags;
103 std::unordered_map<std::string,std::string> descriptions;
107 const std::string& labelName);
110 const std::string& flagName);
124 const std::string& description);
175 return !labels.empty();
183 return !flags.empty();
192 size_t& index)
const;
200 size_t& index)
const;
212 const TagRegistry& tagRegistry,
213 const FeatureInstance& feature,
214 const ObjectOSMRef&
object,
216 FeatureValueBuffer& buffer)
const = 0;
231 const TypeInfo* type;
#define OSMSCOUT_API
Definition CoreImportExport.h:45
size_t GetOffset() const
Definition TypeFeature.h:280
FeatureInstance(const FeatureRef &feature, const TypeInfo *type, size_t featureBit, size_t index, size_t offset)
FeatureRef GetFeature() const
Definition TypeFeature.h:248
size_t GetIndex() const
Definition TypeFeature.h:272
const TypeInfo * GetType() const
Definition TypeFeature.h:256
size_t GetFeatureBit() const
Definition TypeFeature.h:264
Type type
The type of the cell.
Definition GroundTile.h:92
TypeInfo(const std::string &name)
virtual bool HasFlags() const
Definition TypeFeature.h:181
virtual FeatureValue * AllocateValue(void *buffer)
virtual bool HasValue() const
Definition TypeFeature.h:165
bool GetLabelIndex(const std::string &labelName, size_t &index) const
const std::unordered_map< std::string, std::string > & GetDescriptions() const
Definition TypeFeature.h:204
std::string GetDescription(const std::string &languageCode) const
virtual bool HasLabel() const
Definition TypeFeature.h:173
void RegisterLabel(size_t index, const std::string &labelName)
void AddDescription(const std::string &languageCode, const std::string &description)
virtual std::string GetName() const =0
virtual ~Feature()=default
virtual void Initialize(TagRegistry &tagRegistry)=0
virtual size_t GetFeatureBitCount() const
Definition TypeFeature.h:157
virtual size_t GetValueSize() const
Definition TypeFeature.h:144
virtual void Parse(TagErrorReporter &reporter, const TagRegistry &tagRegistry, const FeatureInstance &feature, const ObjectOSMRef &object, const TagMap &tags, FeatureValueBuffer &buffer) const =0
void RegisterFlag(size_t index, const std::string &flagName)
virtual size_t GetValueAlignment() const
Definition TypeFeature.h:135
bool GetFlagIndex(const std::string &flagName, size_t &index) const
Definition TypeFeature.h:41
virtual bool IsFlagSet(size_t) const
Definition TypeFeature.h:55
virtual ~FeatureValue()=default
virtual void Write(FileWriter &writer)=0
virtual bool operator==(const FeatureValue &other) const =0
virtual std::string GetLabel(const Locale &, size_t) const
Definition TypeFeature.h:50
virtual bool operator!=(const FeatureValue &other) const
Definition TypeFeature.h:78
FeatureValue(const FeatureValue &featureValue)=default
virtual FeatureValue & operator=(const FeatureValue &other)
virtual void Read(FileScanner &scanner)=0
Definition TagErrorReporter.h:33
std::unordered_map< TagId, std::string > TagMap
Definition Tag.h:41
std::shared_ptr< Feature > FeatureRef
Definition TypeFeature.h:219