コード例 #1
0
way::way(const tags_t &a, const tags_t &t, const std::vector<id_t> &wn) 
  : element(a, t), way_nodes(wn) {
  tags_t::const_iterator itr = a.find("tiles");
  if ((itr != a.end()) && (!itr->second.empty())) {
    tiles_cache = CompressedBitset(itr->second);
  }
}
コード例 #2
0
void xml_formatter::write_tags(const tags_t &tags) {
  for (tags_t::const_iterator itr = tags.begin(); itr != tags.end(); ++itr) {
    writer->start("tag");
    writer->attribute("k", itr->first);
    writer->attribute("v", itr->second);
    writer->end();
  }
}
コード例 #3
0
ファイル: json_formatter.cpp プロジェクト: Firefishy/cgimap
void json_formatter::write_tags(const tags_t &tags) {
  writer->object_key("tags");
  writer->start_object();
  for (tags_t::const_iterator itr = tags.begin(); itr != tags.end(); ++itr) {
    writer->object_key(itr->first);
    writer->entry_string(itr->second);
  }
  writer->end_object();
}
コード例 #4
0
ファイル: Query.cpp プロジェクト: ademko/hydra
int hydra::scoreValue(const tags_t &tags)
{
  for (tags_t::const_iterator ii=tags.begin(); ii != tags.end(); ++ii) {
    assert(!ii->isEmpty());
    if ((*ii)[0] == SCORE_CHAR)
      return ii->size();
  }

  return 0;
}
コード例 #5
0
ファイル: soimport.cpp プロジェクト: mcmayer/sodata
void sopostloader::add_column(const column_spec &col, const char *value) {
	soloader::add_column(col, value);

	plidx_cur++;
	if (!value)
		return;

	if (plidx_cur == plidx_id) {
		pl_curid = atoi(value);
	}
	else if (plidx_cur == plidx_posttypeid) {
		pl_curposttype = atoi(value);
	}
	else if (config.tags && (plidx_cur == plidx_tags) && (pl_curposttype == 1)) {
		std::string tname(value);
		size_t s, e;
		s = 0;
		while (s < tname.length()) {
			e = tname.find('>', s);
			if ((tname[s] != '<') || (e == tname.npos)) {
				std::cerr << "invalid tags: " << tname << std::endl;
				break;
			}
			std::string tag(tname.substr(s+1, e-s-1));
			tags.push_back(std::make_pair(pl_curid, tag));
			s = e + 1;
		}
	}
}
コード例 #6
0
void 
OWLDiff::update_metadata(const tags_t &attrs) {
  tags_t::const_iterator uid_itr = attrs.find("uid");
  tags_t::const_iterator user_itr = attrs.find("user");
  tags_t::const_iterator changeset_itr = attrs.find("changeset");

  if ((uid_itr != attrs.end()) &&
      (user_itr != attrs.end()) &&
      (changeset_itr != attrs.end())) {
    id_t id = lexical_cast<id_t>(uid_itr->second);
    const string &name = user_itr->second;
    id_t cs_id = lexical_cast<id_t>(changeset_itr->second);

    map<id_t, string>::iterator itr = users_seen.find(id);
    if (itr != users_seen.end()) {
      if (itr->second != name) {
        itr->second = name;
      }
    } else {
      users_seen.insert(std::make_pair(id, name));
    }

    map<id_t, id_t>::iterator jtr = changesets_seen.find(cs_id);
    if (jtr == changesets_seen.end()) {
      changesets_seen.insert(std::make_pair(cs_id, id));
    } else {
      // this should be forbidden by the OSM data model... but it's always worth
      // checking these things.
      if (jtr->second != id) {
        throw runtime_error("Changeset ID refers to two different user IDs!");
      }
    }
  }
}
コード例 #7
0
void json_formatter::write_tags(const tags_t &tags) {

  if (tags.empty())
    return;

  writer->object_key("tags");
  writer->start_object();
  for (const auto& tag : tags) {
    writer->object_key(tag.first);
    writer->entry_string(tag.second);
  }
  writer->end_object();
}
コード例 #8
0
ファイル: soimport.cpp プロジェクト: mcmayer/sodata
void sopostloader::write_tags(const table_spec &spec) {
	std::cout << "writing " << spec.name << std::endl;
	std::vector<column_spec> columns = spec.columns();
	builder.open_table(spec);
	int counter(0);
	for (tags_t::iterator it = tags.begin(); it != tags.end(); ++it) {
		if (++counter % 100000 == 0)
			std::cout << "  (" << counter << " datasets)" << std::endl;
		builder.open_row();
		dbvalue id(it->first);
		builder.add_column(columns[0], id.get());
		builder.add_column(columns[1], it->second.c_str());
		builder.row_complete();
	}
	std::cout << "  (" << counter << " datasets)" << std::endl;
	builder.table_complete();
	if (config.indexes) {
		std::cout << "  (indexing " << columns[0].name << "...)" << std::endl;
		builder.add_index(columns[0].name);
		std::cout << "  (indexing " << columns[1].name << "...)" << std::endl;
		builder.add_index(columns[1].name);
	}
}
コード例 #9
0
ファイル: main.cpp プロジェクト: skifcorp/amigo
extern "C" void executeModule( tags_t& tags, function<void()> stop_module_func )
{
  Q_ASSERT_X(false, __FUNC__, "you should not use this function");
#if 0
  qDebug () << "QtApp started";
  
  QApplication app( tags.argc(), tags.argv() );
 
  list<QString> modules_paths = parse_conf( tags.projectFolder() );
  list<shared_ptr<QLibrary>> libs;
  StopFuncs stop_funcs;
  
  for (auto p : modules_paths) {
    QString nam = QString::fromStdString (a::fs::lib_path()) + QDir::separator() + "qt"+ QDir::separator() + a::fs::lib_name(p);
    
    libs.push_back( shared_ptr<QLibrary>( new QLibrary(nam) ) );
    if (!libs.back()->load() ) {
      qWarning() << "qtapp: cant load library: "<<nam; continue;
    }
    
    stop_funcs.push_back( pair<QString, function<void()>>(nam, function<void()>() ) );
    
    vis_func_type f = reinterpret_cast<vis_func_type>(libs.back()->resolve("executeModule"));
    if (!f) {
      qWarning() << "qtapp: cant resolve func executeModule for lib: "<<p; libs.back()->unload(); continue;
    }
    f(tags, &stop_funcs.back().second, app);
  }
  
  stop_module_func = bind (stop, std::ref(app), std::ref(stop_funcs));
  
  app.exec();
#endif

  
}
コード例 #10
0
bool operator==(const tags_t &a, const tags_t &b) {
  if (a.size() != b.size()) {
    return false;
  }

  for (tags_t::const_iterator atr = a.begin(); atr != a.end(); ++atr) {
    tags_t::const_iterator btr = b.find(atr->first);
    if (btr == b.end()) {
      return false;
    } else if (atr->second != btr->second) {
      return false;
    }
  }

  return true;
}