Replace remaining GenericVector by std::vector for src/classify

Signed-off-by: Stefan Weil <sw@weilnetz.de>
This commit is contained in:
Stefan Weil 2021-03-16 07:49:30 +01:00
parent 7df1cb0bab
commit a847e0f9b5
6 changed files with 23 additions and 18 deletions

View File

@ -356,6 +356,7 @@ void DENORM::LocalDenormTransform(const TPOINT &pt, TPOINT *original) const {
original->x = IntCastRounded(float_result.x());
original->y = IntCastRounded(float_result.y());
}
void DENORM::LocalDenormTransform(const FCOORD &pt, FCOORD *original) const {
FCOORD rotated(pt.x() - final_xshift_, pt.y() - final_yshift_);
if (x_map_ != nullptr && y_map_ != nullptr) {

View File

@ -21,6 +21,7 @@
#include <vector>
#include <tesseract/export.h>
#include <vector>
struct Pix;

View File

@ -29,7 +29,11 @@ IndexMap::~IndexMap() = default;
// Uses a binary search to find the result. For faster speed use
// IndexMapBiDi, but that takes more memory.
int IndexMap::SparseToCompact(int sparse_index) const {
int result = compact_map_.binary_search(sparse_index);
auto pos = std::upper_bound(compact_map_.begin(), compact_map_.end(), sparse_index);
if (pos > compact_map_.begin()) {
--pos;
}
auto result = pos - compact_map_.begin();
return compact_map_[result] == sparse_index ? result : -1;
}
@ -45,7 +49,7 @@ void IndexMap::CopyFrom(const IndexMapBiDi &src) {
// Writes to the given file. Returns false in case of error.
bool IndexMap::Serialize(FILE *fp) const {
return tesseract::Serialize(fp, &sparse_size_) && compact_map_.Serialize(fp);
return tesseract::Serialize(fp, &sparse_size_) && tesseract::Serialize(fp, compact_map_);
}
// Reads from the given file. Returns false in case of error.
@ -60,7 +64,7 @@ bool IndexMap::DeSerialize(bool swap, FILE *fp) {
if (sparse_size > UINT16_MAX)
return false;
sparse_size_ = sparse_size;
return compact_map_.DeSerialize(swap, fp);
return tesseract::DeSerialize(swap, fp, compact_map_);
}
// Destructor.
@ -85,7 +89,7 @@ void IndexMapBiDi::InitAndSetupRange(int sparse_size, int start, int end) {
// Call Setup immediately after, or make calls to SetMap first to adjust the
// mapping and then call Setup before using the map.
void IndexMapBiDi::Init(int size, bool all_mapped) {
sparse_map_.init_to_size(size, -1);
sparse_map_.resize(size, -1);
if (all_mapped) {
for (int i = 0; i < size; ++i)
sparse_map_[i] = i;
@ -107,7 +111,7 @@ void IndexMapBiDi::Setup() {
sparse_map_[i] = compact_size++;
}
}
compact_map_.init_to_size(compact_size, -1);
compact_map_.resize(compact_size, -1);
for (int i = 0; i < sparse_map_.size(); ++i) {
if (sparse_map_[i] >= 0) {
compact_map_[sparse_map_[i]] = i;
@ -168,7 +172,7 @@ void IndexMapBiDi::CompleteMerges() {
compact_size = compact_index + 1;
}
// Re-generate the compact_map leaving holes for unused indices.
compact_map_.init_to_size(compact_size, -1);
compact_map_.resize(compact_size, -1);
for (int i = 0; i < sparse_map_.size(); ++i) {
if (sparse_map_[i] >= 0) {
if (compact_map_[sparse_map_[i]] == -1)
@ -177,8 +181,8 @@ void IndexMapBiDi::CompleteMerges() {
}
// Compact the compact_map, leaving tmp_compact_map saying where each
// index went to in the compacted map.
GenericVector<int32_t> tmp_compact_map;
tmp_compact_map.init_to_size(compact_size, -1);
std::vector<int32_t> tmp_compact_map;
tmp_compact_map.resize(compact_size, -1);
compact_size = 0;
for (int i = 0; i < compact_map_.size(); ++i) {
if (compact_map_[i] >= 0) {
@ -186,7 +190,7 @@ void IndexMapBiDi::CompleteMerges() {
compact_map_[compact_size++] = compact_map_[i];
}
}
compact_map_.truncate(compact_size);
compact_map_.resize(compact_size);
// Now modify the entries in the sparse map to point to the new locations.
for (int i = 0; i < sparse_map_.size(); ++i) {
if (sparse_map_[i] >= 0) {
@ -202,14 +206,14 @@ bool IndexMapBiDi::Serialize(FILE *fp) const {
// Make a vector containing the rest of the map. If the map is many-to-one
// then each additional sparse entry needs to be stored.
// Normally we store only the compact map to save space.
GenericVector<int32_t> remaining_pairs;
std::vector<int32_t> remaining_pairs;
for (int i = 0; i < sparse_map_.size(); ++i) {
if (sparse_map_[i] >= 0 && compact_map_[sparse_map_[i]] != i) {
remaining_pairs.push_back(i);
remaining_pairs.push_back(sparse_map_[i]);
}
}
if (!remaining_pairs.Serialize(fp))
if (!tesseract::Serialize(fp, remaining_pairs))
return false;
return true;
}
@ -219,10 +223,10 @@ bool IndexMapBiDi::Serialize(FILE *fp) const {
bool IndexMapBiDi::DeSerialize(bool swap, FILE *fp) {
if (!IndexMap::DeSerialize(swap, fp))
return false;
GenericVector<int32_t> remaining_pairs;
if (!remaining_pairs.DeSerialize(swap, fp))
std::vector<int32_t> remaining_pairs;
if (!tesseract::DeSerialize(swap, fp, remaining_pairs))
return false;
sparse_map_.init_to_size(sparse_size_, -1);
sparse_map_.resize(sparse_size_, -1);
for (int i = 0; i < compact_map_.size(); ++i) {
sparse_map_[compact_map_[i]] = i;
}

View File

@ -2,7 +2,6 @@
// File: indexmapbidi.h
// Description: Bi-directional mapping between a sparse and compact space.
// Author: rays@google.com (Ray Smith)
// Created: Tue Apr 06 11:33:59 PDT 2010
//
// (C) Copyright 2010, Google Inc.
// Licensed under the Apache License, Version 2.0 (the "License");
@ -77,7 +76,7 @@ protected:
int32_t sparse_size_;
// The compact space covers integers in the range [0, compact_map_.size()-1].
// Each element contains the corresponding sparse index.
GenericVector<int32_t> compact_map_;
std::vector<int32_t> compact_map_;
};
// Bidirectional many-to-one mapping between a sparse and a compact discrete
@ -170,7 +169,7 @@ private:
}
// Direct look-up of the compact index for each element in sparse space.
GenericVector<int32_t> sparse_map_;
std::vector<int32_t> sparse_map_;
};
} // namespace tesseract.

View File

@ -4,7 +4,6 @@
// File: intfeaturemap.cpp
// Description: Encapsulation of IntFeatureSpace with IndexMapBiDi
// to provide a subspace mapping and fast feature lookup.
// Created: Tue Oct 26 08:58:30 PDT 2010
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.

View File

@ -22,6 +22,7 @@
#include <allheaders.h>
#include "boxread.h"
#include "fontinfo.h"
//#include "helpers.h"
#include "indexmapbidi.h"
#include "intfeaturedist.h"
#include "intfeaturemap.h"