Table de hashage évoluée [ts envts] - dédiée à la traduction de logicielle

Description

pour toute explication relative au principe d'une table de hashage, veuillez vous reporter à ma source précédente :
http://www.cppfrance.com/code.aspx?ID=25352

cette évolution propose de fonctionner conjointement avec un fichier ini linguisitique respectant le formalisme déjà décrit dans cette source :
http://www.cppfrance.com/code.aspx?id=24887

l'évolution majeur de la table de hashage est qu'ici, elle charge automatiquement et a la demande les données depuis le .ini.
2e evolution, plus de malloc, uniquement des new

ainsi chacune ne sera chargée qu'une seule fois et les traitements sont tous accélérés.

Source / Exemple :


quelques macros utilisées dans MétaProg :

/// --------------------------------------------------------
/// ---------------- MACRO : MACRO_GET_TXT_LANGUE ----------------
/// --------------------------------------------------------
/// -----  Objectif	: récup d'un texte dans une langue paramétrée
/// -----  PreCond	: infos ds FICHIER_INI
/// -----  PostCond	: /
/// -----  Etat		: 1			(-1<0<1<2)
/// -----  Nota		: info langue dans le fichier ini: ['param']'Langue' puis [langue choisie]
/// -----  MaJ 20/08/04 : table de hashage, chaque D est récupérée une seule fois...
/// --------------------------------------------------------
/// -----  BString chaineDest : chaine à recup
/// -----  BString intitule : intitulé ds le fichier ini
/// -----  bool isForTrtt : pour le traitement ou pour le soft (choix langage...)
/// -----  ELangageDeProg iLangageTrtt (var globale) : langage de traitement
/// --------------------------------------------------------
#define MACRO_GET_TXT_LANGUE(chaineDest,intitule,isForTrtt) do{\
	BString langue;\
	switch(isForTrtt?iLangageTrtt:iLangageLogiciel)\
	{\
	case LANGUE_ANGLAISE : langue="Anglais";break;\
	case LANGUE_FRANCAISE : langue="Francais";break;\
	case LANGUE_ESPAGNOLE : langue="Espagnol";break;\
	case LANGUE_ALLEMANDE : langue="Allemand";break;\
	case LANGUE_PORTUGUAISE : langue="Portuguais";break;\
	case LANGUE_ITALIENNE : langue="Italien";break;\
	default:BVisuel::informe("langue non définie - english selection by default...",false);langue="Anglais";\
	}\
	if(isForTrtt)\
	chaineDest=*donneesLinguistiquesTrtt.get(intitule,&langue);\
	else\
	chaineDest=*donneesLinguistiquesSoft.get(intitule,&langue);\
	/*chaineDest=BFichierIni::get(langue,intitule,FICHIER_INI,true);\
	chaineDest=chaineDest.convertTxtMisEnForme(false);\

  • /}while(0)
/// ----------------------------------------------------------------- /// -------------- MACRO : MACRO_INIT_TOOLTIP_AND_NAME -------------- /// ----------------------------------------------------------------- /// ----- Objectif : récup d'un texte dans une langue paramétrée /// ----- PreCond : infos ds FICHIER_INI /// ----- PostCond : / /// ----- Etat : 1 (-1<0<1<2) /// ----- Nota : info langue dans le fichier ini: ['param']'Langue' puis [langue choisie] /// ----- MaJ 18/03/04 : nom langue récupéré dans le ini... /// -------------------------------------------------------- /// ----- BString chaineDest : chaine à recup /// ----- BString intitule : intitulé ds le fichier ini /// ----- ELangageDeProg iLangageTrtt (var globale) : langage de traitement /// -------------------------------------------------------- #define MACRO_INIT_TOOLTIP_AND_NAME(STR_ID,ID) do{\ MACRO_INIT_TOOLTIP(STR_ID,ID);\ MACRO_INIT_NAME(STR_ID,ID);\ }while(0) /// -------------------------------------------------------- /// -------------- MACRO : MACRO_INIT_TOOLTIP -------------- /// -------------------------------------------------------- /// ----- Objectif : récup d'un texte dans une langue paramétrée /// ----- PreCond : infos ds FICHIER_INI /// ----- PostCond : / /// ----- Etat : 1 (-1<0<1<2) /// ----- Nota : info langue dans le fichier ini: ['param']'Langue' puis [langue choisie] /// ----- MaJ 18/03/04 : nom langue récupéré dans le ini... /// -------------------------------------------------------- /// ----- BString chaineDest : chaine à recup /// ----- BString intitule : intitulé ds le fichier ini /// ----- ELangageDeProg iLangageTrtt (var globale) : langage de traitement /// -------------------------------------------------------- #define MACRO_INIT_TOOLTIP(STR_ID,ID) do{\ BString msg;\ MACRO_GET_TXT_LANGUE(msg,STR_ID,false);\ msg=msg.convertTxtMisEnForme();\ m_tooltip.AddTool(GetDlgItem(ID), msg);\ }while(0) /// -------------------------------------------------------- /// ---------------- MACRO : MACRO_INIT_NAME --------------- /// -------------------------------------------------------- /// ----- Objectif : récup d'un texte dans une langue paramétrée /// ----- PreCond : infos ds FICHIER_INI /// ----- PostCond : / /// ----- Etat : 1 (-1<0<1<2) /// ----- Nota : info langue dans le fichier ini: ['param']'Langue' puis [langue choisie] /// ----- MaJ 18/03/04 : nom langue récupéré dans le ini... /// -------------------------------------------------------- /// ----- BString chaineDest : chaine à recup /// ----- BString intitule : intitulé ds le fichier ini /// ----- ELangageDeProg iLangageTrtt (var globale) : langage de traitement /// -------------------------------------------------------- #define MACRO_INIT_NAME(STR_ID,ID) do{\ BString msg,data=STR_ID;data+="__";\ MACRO_GET_TXT_LANGUE(msg,data,false);\ msg=msg.convertTxtMisEnForme();\ GetDlgItem(ID)->SetWindowText (msg);\ }while(0) /// -------------------------------------------------------- /// ---------------- MACRO : MACRO_INIT_TITRE --------------- /// -------------------------------------------------------- /// ----- Objectif : initialise le nom de la fenetre /// ----- PreCond : infos ds FICHIER_INI /// ----- PostCond : / /// ----- Etat : 1 (-1<0<1<2) /// ----- Nota : info langue dans le fichier ini: ['param']'Langue' puis [langue choisie] /// ----- MaJ 18/03/04 : nom langue récupéré dans le ini... /// -------------------------------------------------------- /// ----- BString STR_ID : intitulé ds le fichier ini /// -------------------------------------------------------- #define MACRO_INIT_TITRE(STR_ID) do{\ BString msg;\ MACRO_GET_TXT_LANGUE(msg,STR_ID,false);\ SetWindowText (msg);\ }while(0)

Conclusion :


j'ai développé cette bibli pour MétaProg et ce projet est applicable pour tout logiciel

je vous le fournit en licence cardware : cad, envoyé un mail ou un mettez un post me disant ds quoi vs l'utilisez.

Bonne Prog

Magicalement,
Bruno.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.