69 lines
2.3 KiB
C++
69 lines
2.3 KiB
C++
/*
|
||
// Line.h: interface for the C_Line class.
|
||
//////////////////////////////////////////////////////////////////////
|
||
*/
|
||
// Levenshtein.h: interface for the Levenshtein class.
|
||
//
|
||
//////////////////////////////////////////////////////////////////////
|
||
#if !defined(LEVENSHTEIN_H)
|
||
#define LEVENSHTEIN_H
|
||
#if _MSC_VER > 1000
|
||
#pragma once
|
||
#endif // _MSC_VER > 1000
|
||
#include <cstddef>
|
||
|
||
/// \brief une classe qui sert <20> calculer la distance entre deux chaines de caracters
|
||
/*! \class C_OCROutput
|
||
* \brief une classe qui sert <20> calculer la distance entre deux chaines de caracters
|
||
**
|
||
*/
|
||
class Levenshtein
|
||
{
|
||
public:
|
||
//****************************
|
||
// Get minimum edit (levenstein) between two strings
|
||
//****************************
|
||
[[nodiscard]] int Get (const char* a, const char* b);
|
||
[[nodiscard]] int Get (const char* a, size_t aLen, const char* b, size_t bLen);
|
||
[[nodiscard]] int Get2 (char const *s, char const *t);
|
||
[[nodiscard]] int Get2 (char const *s, size_t n, char const *t, size_t dst);
|
||
//**************************
|
||
// construct/destruct
|
||
//**************************
|
||
Levenshtein();
|
||
virtual ~Levenshtein();
|
||
private:
|
||
//****************************
|
||
// Get minimum of three values
|
||
//****************************
|
||
int Minimum (int a, int b, int c)
|
||
{
|
||
int mi = a;
|
||
if (b < mi) mi = b;
|
||
if (c < mi) mi = c;
|
||
return mi;
|
||
}
|
||
//**************************************************
|
||
// Get a pointer to the specified cell of the matrix
|
||
//**************************************************
|
||
int *GetCellPointer (int *pOrigin, size_t col, size_t row, size_t nCols)
|
||
{ return pOrigin + col + (row * (nCols + 1)); }
|
||
//*****************************************************
|
||
// Get the contents of the specified cell in the matrix
|
||
//*****************************************************
|
||
int GetAt (int *pOrigin, size_t col, size_t row, size_t nCols)
|
||
{
|
||
int *pCell = GetCellPointer (pOrigin, col, row, nCols);
|
||
return *pCell;
|
||
}
|
||
//********************************************************
|
||
// Fill the specified cell in the matrix with the value x
|
||
//********************************************************
|
||
void PutAt (int *pOrigin, size_t col, size_t row, size_t nCols, int x)
|
||
{
|
||
int *pCell = GetCellPointer (pOrigin, col, row, nCols);
|
||
*pCell = x;
|
||
}
|
||
};
|
||
#endif // !defined(LEVENSHTEIN_H)
|