Files
comaps/indexer/tree_structure.hpp
Konstantin Pastbin e3e4a1985a Organic Maps sources as of 02.04.2025 (fad26bbf22ac3da75e01e62aa01e5c8e11861005)
To expand with full Organic Maps and Maps.ME commits history run:
  git remote add om-historic [om-historic.git repo url]
  git fetch --tags om-historic
  git replace squashed-history historic-commits
2025-05-08 21:10:51 +07:00

50 lines
819 B
C++

#pragma once
#include "base/assert.hpp"
#include <iostream>
#include <string>
namespace tree
{
template <class ToDo>
bool LoadTreeAsText(std::istream & s, ToDo & toDo)
{
std::string name;
s >> name;
ASSERT ( !name.empty(), ("Error in classificator file") );
if (name == "{}") return false;
// set key name
toDo.Name(name);
// load object itself
std::string strkey;
s >> strkey;
while (strkey != "+" && strkey != "-")
s >> strkey;
// load children
if (strkey == "+")
{
size_t i = 0;
while (true)
{
toDo.Start(i++);
bool const isContinue = LoadTreeAsText(s, toDo);
toDo.End();
if (!isContinue)
{
toDo.EndChilds();
break;
}
}
ASSERT ( i <= 128, ("too many features at level = ", name) );
}
return true;
}
}