本文整理汇总了C++中TypeConfig::GetAreaTypeInfo方法的典型用法代码示例。如果您正苦于以下问题:C++ TypeConfig::GetAreaTypeInfo方法的具体用法?C++ TypeConfig::GetAreaTypeInfo怎么用?C++ TypeConfig::GetAreaTypeInfo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TypeConfig
的用法示例。
在下文中一共展示了TypeConfig::GetAreaTypeInfo方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ReadOptimized
bool Area::ReadOptimized(const TypeConfig& typeConfig,
FileScanner& scanner)
{
if (!scanner.GetPos(fileOffset)) {
return false;
}
TypeId ringType;
bool multipleRings;
uint32_t ringCount=1;
FeatureValueBuffer featureValueBuffer;
scanner.ReadTypeId(ringType,
typeConfig.GetAreaTypeIdBytes());
TypeInfoRef type=typeConfig.GetAreaTypeInfo(ringType);
featureValueBuffer.SetType(type);
if (!featureValueBuffer.Read(scanner,
multipleRings)) {
return false;
}
if (multipleRings) {
if (!scanner.ReadNumber(ringCount)) {
return false;
}
ringCount++;
}
rings.resize(ringCount);
rings[0].featureValueBuffer=featureValueBuffer;
if (ringCount>1) {
rings[0].ring=masterRingId;
}
else {
rings[0].ring=outerRingId;
}
if (!scanner.Read(rings[0].nodes)) {
return false;
}
for (size_t i=1; i<ringCount; i++) {
scanner.ReadTypeId(ringType,
typeConfig.GetAreaTypeIdBytes());
type=typeConfig.GetAreaTypeInfo(ringType);
rings[i].SetType(type);
if (rings[i].featureValueBuffer.GetType()->GetAreaId()!=typeIgnore) {
if (!rings[i].featureValueBuffer.Read(scanner)) {
return false;
}
}
scanner.Read(rings[i].ring);
if (!scanner.Read(rings[i].nodes)) {
return false;
}
}
return !scanner.HasError();
}