38 lines
1.5 KiB
C
38 lines
1.5 KiB
C
/******************************************************************************
|
|
* @file iban_analyzer.h
|
|
* @brief Normalisation, validation et extraction locale d'IBAN.
|
|
******************************************************************************/
|
|
#ifndef LABFY_INVESTIGATION_IBAN_ANALYZER_H
|
|
#define LABFY_INVESTIGATION_IBAN_ANALYZER_H
|
|
#include <glib.h>
|
|
G_BEGIN_DECLS
|
|
|
|
typedef enum
|
|
{
|
|
IBAN_ANALYZER_RESULT_VALID,
|
|
IBAN_ANALYZER_RESULT_INVALID,
|
|
IBAN_ANALYZER_RESULT_UNSUPPORTED_COUNTRY
|
|
} IbanAnalyzerResult;
|
|
/** @brief Normalise un IBAN en majuscules sans séparateurs. */
|
|
char *iban_analyzer_normalize(const char *text);
|
|
/** Normalise uniquement espaces ASCII, tabulations, CR/LF et tirets. */
|
|
char *iban_analyzer_normalize_canonical(const char *text);
|
|
/**
|
|
* Vérifie format, longueur nationale prise en charge et MOD-97.
|
|
*
|
|
* La table volontairement partielle de cette tranche couvre BE, DE, ES, FR,
|
|
* GB, IT, LU, NL et PT. Un code pays absent ne peut jamais être déclaré
|
|
* valide : iban_analyzer_validate_canonical_result() retourne alors
|
|
* IBAN_ANALYZER_RESULT_UNSUPPORTED_COUNTRY.
|
|
*/
|
|
gboolean iban_analyzer_validate_canonical(const char *iban);
|
|
IbanAnalyzerResult iban_analyzer_validate_canonical_result(const char *iban);
|
|
/** @brief Vérifie la structure et la clé de contrôle modulo 97. */
|
|
gboolean iban_analyzer_validate(const char *iban);
|
|
/**
|
|
* @brief Extrait les IBAN valides d'un texte OCR.
|
|
* @return Tableau possédé de chaînes uniques normalisées.
|
|
*/
|
|
GPtrArray *iban_analyzer_extract(const char *ocr_text);
|
|
G_END_DECLS
|
|
#endif
|