From cfd16d8c8b9b403c9afd2fc835f5b89ca0f6d607 Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Mon, 16 May 2011 01:10:22 +0200 Subject: [generator_tool] Added feature types dumper Usage: ./generator_tool -dump_types -output= --- generator/dumper.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 generator/dumper.cpp (limited to 'generator/dumper.cpp') diff --git a/generator/dumper.cpp b/generator/dumper.cpp new file mode 100644 index 0000000000..ca91d3f4de --- /dev/null +++ b/generator/dumper.cpp @@ -0,0 +1,60 @@ +#include "dumper.hpp" + +#include "../indexer/feature_processor.hpp" +#include "../indexer/classificator.hpp" + +#include "../std/vector.hpp" +#include "../std/unordered_map.hpp" +#include "../std/iostream.hpp" + +namespace feature +{ + class TypesCollector + { + vector m_currFeatureTypes; + + public: + typedef unordered_map, size_t> value_type; + value_type m_stats; + + void operator()(FeatureType & f, uint32_t) + { + m_currFeatureTypes.clear(); + f.ForEachTypeRef(*this); + CHECK(!m_currFeatureTypes.empty(), ("Feature without any type???")); + pair found = m_stats.insert(make_pair(m_currFeatureTypes, 1)); + if (!found.second) + found.first->second++; + } + + void operator()(uint32_t type) + { + m_currFeatureTypes.push_back(type); + } + }; + + typedef pair, size_t> stats_elem_type; + static bool SortFunc(stats_elem_type const & first, + stats_elem_type const & second) + { + return first.second > second.second; + } + + void DumpTypes(string const & datFile) + { + TypesCollector doClass; + feature::ForEachFromDat(datFile, doClass); + + typedef vector vec_to_sort; + vec_to_sort vecToSort(doClass.m_stats.begin(), doClass.m_stats.end()); + sort(vecToSort.begin(), vecToSort.end(), SortFunc); + + for (vec_to_sort::iterator it = vecToSort.begin(); it != vecToSort.end(); ++it) + { + cout << it->second << " "; + for (size_t i = 0; i < it->first.size(); ++i) + cout << classif().GetFullObjectName(it->first[i]) << " "; + cout << endl; + } + } +} -- cgit v1.2.3