La première question n'a pas de réponse puisque c'est encore impossible. Par contre la deuxième, c'est possible.
Par exemple quand dans ton fichier tu vas détecter un type, int en
l'occurence. Tu vas ensuite lire le nom de la variable et la récupérer
sous forme d'un string. En meme temps, tu détectes une valeur ( 1 ici
). Donc admettons que tu possèdes une liste de doublet ( string, valeur
), tu vas ajouter à cette liste, un élément ("nombre", l'entier 1 ). En
fait l'entier 1 sera plutot un pointeur sur un entier dont la valeur
vaut 1, que tu aurais créé par :
int * pointeur_sur_entier = new int( 1 );
puis string name("nombre");
puis Ajouter à la liste le couple (name,pointeur_sur_entier);
Par la suite, si tu as besoin de la valeur de nombre, tu balaies la
suite et la recherche du nom correspondant et tu prend la valeur.
Voila ce que je te propose, en tout cas, comment je vois les choses.
Pour les couples, soit tu créer deux listes ( <list> en C++ )
avec une, des string et l'autre les valeurs. Mais c'est plus délicat
puisque tu as deux listes. Ou alors tu te renseigne sur les types
utilitaires
#include <utility>
et notamment le type pair;
Un exemple que j'ai trouvé:
#include <iostream>
#include <utility>
using namespace std;
int main(void)
{
pair<string, int*> doublet("nombre", new int(1) );
cout << "doublet = (" << doublet.first << ", "
<< *doublet.second << ")" << endl;
return 0;
}
Tu vois le genre de chose.