21#if !defined(osmscout_oss_PARSER_H)
22#define osmscout_oss_PARSER_H
78 void SynErr(
int line,
int col,
int n);
79 void Error(
int line,
int col,
const char *s);
80 void Warning(
int line,
int col,
const char *s);
114 void ExpectWeak(
int n,
int follow);
115 bool WeakSeparator(
int n,
int syFol,
int repFol);
117 osmscout::Color PostprocessColor(
const osmscout::Color& color)
const;
139 std::string result(str);
141 if (result.length()>=2 &&
143 result[result.length()-1]==
'"') {
144 result=result.substr(1,result.length()-2);
152 std::istringstream buffer(
string);
154 buffer.imbue(std::locale::classic());
158 return !buffer.fail() && !buffer.bad() && buffer.eof();
163 if (c>=
'0' && c<=
'9') {
166 else if (c>=
'a' && c<=
'f') {
175 const std::string& featureName,
176 const std::string& flagName,
177 TypeInfoSet& resultTypes)
182 std::string e=
"Unknown feature '"+featureName+
"'";
188 size_t flagIndex=std::numeric_limits<size_t>::max();
190 if (!flagName.empty() &&
191 !feature->GetFlagIndex(flagName,
193 std::string e=
"Unknown feature flag '"+featureName+
"."+flagName+
"'";
199 for (
const auto& type :
config.GetTypeConfig()->GetTypes()) {
200 if (type->HasFeature(featureName)) {
201 if (!filter.FiltersByType() ||
202 filter.HasType(type)) {
205 resultTypes.Set(type);
210 if (!resultTypes.Empty()) {
211 size_t featureFilterIndex=
config.GetFeatureFilterIndex(*feature);
213 filter.AddFeature(featureFilterIndex,
265 void MAG(Magnification& magnification);
Definition Magnification.h:250
Definition StyleDescription.h:105
Index selectors by type and level.
Definition StyleConfig.h:552
Definition StyleDescription.h:478
Type type
Definition Parser.h:65
std::string text
Definition Parser.h:68
Type
Definition Parser.h:57
@ Symbol
Definition Parser.h:58
@ Warning
Definition Parser.h:60
@ Exception
Definition Parser.h:61
@ Error
Definition Parser.h:59
int line
Definition Parser.h:66
int column
Definition Parser.h:67
void Exception(const char *s)
void SynErr(int line, int col, int n)
bool hasErrors
Definition Parser.h:73
void Error(int line, int col, const char *s)
std::list< Err > errors
Definition Parser.h:72
Log log
Definition Parser.h:74
void Warning(const char *s)
void Warning(int line, int col, const char *s)
void IDENT(std::string &value)
bool StringToDouble(const char *string, double &value)
Definition Parser.h:150
Parser(Scanner *scanner, const std::string &filename, StyleConfig &config, osmscout::ColorPostprocessor colorPostprocessor=nullptr, const Log &log=osmscout::log)
void DOUBLE(double &value)
void STYLEBLOCK(StyleFilter filter, bool state)
void ROUTESTYLEDEF(StyleFilter filter, bool state)
void NODESTYLEDEF(StyleFilter filter, bool state)
void FLAGCONDBLOCK(bool state)
void AREASYMBOLSTYLE(FillPartialStyle &fillStyle, BorderPartialStyle &borderStyle)
void STRING(std::string &value)
std::string Destring(const char *str)
Definition Parser.h:137
void WAYPATHSYMBOLSTYLE(StyleFilter filter, bool state)
void STYLEFILTER(StyleFilter &filter)
void ATTRIBUTE(PartialStyleBase &style, const StyleDescriptor &descriptor)
std::string filename
Definition Parser.h:122
void ICONSTYLEATTR(IconPartialStyle &style)
void WAYSHIELDSTYLE(StyleFilter filter, bool state)
void NODETEXTSTYLE(StyleFilter filter, bool state)
void CONSTBLOCK(bool state)
void WAYSTYLEDEF(StyleFilter filter, bool state)
void NODEICONSTYLE(StyleFilter filter, bool state)
void CIRCLE(Symbol &symbol)
void AREAFILLSYMSTYLE(FillPartialStyle &fillStyle)
void WAYPATHTEXTSTYLE(StyleFilter filter, bool state)
void STYLEFILTER_GROUP(StyleFilter &filter)
void ATTRIBUTEVALUE(PartialStyleBase &style, const StyleAttributeDescriptor &descriptor)
void COLOR_VALUE(Color &color)
void FILLSTYLEATTR(FillPartialStyle &style)
void STYLEFILTER_ONEWAY(StyleFilter &filter)
void UDOUBLE(double &value)
void CONSTANT(StyleConstantRef &constant)
void SemErr(const char *msg)
void AREABORDERSYMSTYLE(BorderPartialStyle &borderStyle)
void AREASTYLEDEF(StyleFilter filter, bool state)
void TEXTSTYLEATTR(TextPartialStyle &style)
void AREASTYLE(StyleFilter filter, bool state)
void AREATEXTSTYLE(StyleFilter filter, bool state)
void FLAGBLOCK(bool state)
void PATHSHIELDSTYLEATTR(PathShieldPartialStyle &style)
void PATHSYMBOLSTYLEATTR(PathSymbolPartialStyle &style)
void STYLEFILTER_PATH(StyleFilter &filter)
MagnificationConverter magnificationConverter
Definition Parser.h:124
void BORDERSTYLEATTR(BorderPartialStyle &style)
void POLYGON(Symbol &symbol)
void AREABORDERSTYLE(StyleFilter filter, bool state)
void STYLEFILTER_FEATURE(StyleFilter &filter)
void AREABORDERTEXTSTYLE(StyleFilter filter, bool state)
void STYLE(StyleFilter filter, bool state)
size_t GetHexDigitValue(char c)
Definition Parser.h:161
void AREAICONSTYLE(StyleFilter filter, bool state)
void WAYSTYLE(StyleFilter filter, bool state)
void STYLECONDBLOCK(StyleFilter filter, bool state)
void ROUTEPATHTEXTSTYLE(StyleFilter filter, bool state)
void LINESTYLEATTR(LinePartialStyle &style)
void SemWarning(const char *msg)
void STYLEDEF(StyleFilter filter, bool state)
void CONSTCONDBLOCK(bool state)
void COORD(Vertex2D &coord)
void RECTANGLE(Symbol &symbol)
bool state
Definition Parser.h:125
void AREABORDERSYMBOLSTYLE(StyleFilter filter, bool state)
void ROUTESTYLE(StyleFilter filter, bool state)
void WAYGROUP(size_t priority)
ValueType
Definition Parser.h:128
@ NUMBER
Definition Parser.h:133
@ NO_VALUE
Definition Parser.h:129
Errors * errors
Definition Parser.h:120
void SIZECONDITION(SizeConditionRef &condition)
void STYLEFILTER_TYPE(StyleFilter &filter)
void STYLEFILTER_MAG(StyleFilter &filter)
void STYLEFILTER_FEATURE_ENTRY(StyleFilter &filter, TypeInfoSet &types)
void MAG(Magnification &magnification)
void STYLEFILTER_SIZE(StyleFilter &filter)
void PATHTEXTSTYLEATTR(PathTextPartialStyle &style)
void AddFeatureToFilter(StyleFilter &filter, const std::string &featureName, const std::string &flagName, TypeInfoSet &resultTypes)
Definition Parser.h:174
StyleConfig & config
Definition Parser.h:123
OSMSCOUT_API Log log
Definition LoggerImpl.h:95
std::shared_ptr< Token > TokenRef
Definition Scanner.h:43
PartialStyle< PathShieldStyle, PathShieldStyle::Attribute > PathShieldPartialStyle
Index selectors by type and level.
Definition StyleConfig.h:517
PartialStyle< PathTextStyle, PathTextStyle::Attribute > PathTextPartialStyle
Index selectors by type and level.
Definition StyleConfig.h:523
PartialStyle< TextStyle, TextStyle::Attribute > TextPartialStyle
Index selectors by type and level.
Definition StyleConfig.h:505
osmscout::Color(*)(const osmscout::Color &) ColorPostprocessor
Definition StyleConfig.h:54
PartialStyle< LineStyle, LineStyle::Attribute > LinePartialStyle
Definition StyleConfig.h:487
PartialStyle< BorderStyle, BorderStyle::Attribute > BorderPartialStyle
Index selectors by type and level.
Definition StyleConfig.h:499
PartialStyle< PathSymbolStyle, PathSymbolStyle::Attribute > PathSymbolPartialStyle
Index selectors by type and level.
Definition StyleConfig.h:535
std::shared_ptr< StyleConstant > StyleConstantRef
Definition StyleConfig.h:104
PartialStyle< IconStyle, IconStyle::Attribute > IconPartialStyle
Index selectors by type and level.
Definition StyleConfig.h:529
std::shared_ptr< Feature > FeatureRef
Definition TypeFeature.h:219
std::shared_ptr< SizeCondition > SizeConditionRef
Definition StyleConfig.h:220
PartialStyle< FillStyle, FillStyle::Attribute > FillPartialStyle
Index selectors by type and level.
Definition StyleConfig.h:493
Definition StyleConfig.h:353