All pastes #355658 Raw Edit

Untitled

public cpp v1 · immutable
·published 2007-02-14 16:58 UTC
rendered paste body
#include <map>#include <iostream>#include <cstdlib>#include <string>#define TYPE_INT 1#define TYPE_STRING 2#define TYPE_SUBBLOC 3class configBloc {    public:        string name;        map<string, unsigned short int> type;        map<string, map<unsigned int, string> > data;        map<string, configBloc*> subBloc;        configBloc();        configBloc(const configBloc&);        configBloc(char *name);        void setName(char *name) { this->name = name; };        bool add(char *var, char *value, unsigned int type);        string get(char *var, unsigned int index = 0);        configBloc s(char *name);};bool configBloc::add(char *var, char *value, unsigned int type){    cout << "Ajout de " << var << " dans " << this->name << "[" << this << "]" << endl;    string v(var);    string vv("");    if (value != NULL)         vv = value;    switch (type)    {        case TYPE_SUBBLOC:            this->subBloc[v] = new configBloc(value);            this->type[v] = type;        break;        case TYPE_INT:        case TYPE_STRING:            cout << "String/int" << endl;            map<string, map<unsigned int, string> >::iterator it = this->data.find(v);            if (it != this->data.end())                this->data[v][this->data[v].size()] = vv;            else                this->data[v][0] = vv;            this->type[v] = type;            cout << "Test : " << this->data[v][this->data[v].size() - 1] << ", total actuel : " << this->data.size() << endl;        break;    }    return true;}string configBloc::get(char *var, unsigned int index){    string v(var);    string empty(" ");    cout << "Demande de " << var << " dans " << this->name << "[" << this << "]" << endl;    map<string, map<unsigned int, string> >::iterator it = this->data.find(v);    cout << "Total : " << this->data.size() << endl;    if (it != this->data.end())    {        map<unsigned int, string>::iterator it2 = this->data[v].find(index);        if (it2 != this->data[v].end())            return this->data[v][index];        cout << var << " présent mais index #" << index << " non présent." << endl;        return empty;    }    cout << var << " non présent" << endl;    return empty;}configBloc configBloc::s(char *name){    string n(name);    return *(this->subBloc[n]);}configBloc::configBloc(const configBloc& old){    cout << "Copie de " << old.name << " depuis [" << &old << "] vers [" << this << "]" << endl;}configBloc::configBloc(char *name){    this->name = name;    cout << "Création ! [" << this << "]" << endl;}configBloc::configBloc(){    cout << "Création ! [" << this << "]" << endl;}int main(int argc, char **argv){        configBloc prp("root");        char teststr[] = "youpi";        char testint[] = "45";        prp.add("var_int", testint, TYPE_INT);        prp.add("var_int", "44", TYPE_INT);        prp.add("var_str", teststr, TYPE_STRING);        prp.add("sub", "test", TYPE_SUBBLOC);        prp.s("sub").add("var_test", teststr, TYPE_STRING);        cout << prp.get("var_int") << " - " << prp.get("var_int", 1) << " - " << prp.s("sub").get("var_test") << endl;        // prp.s("sub").get("var_test")  ne renvoie rien :/}/* exemple de sortie :Création ! [0xb74e8e28]Ajout de var_int dans root[0xb74e8e28]String/intTest : 45, total actuel : 1Ajout de var_int dans root[0xb74e8e28]String/intTest : 44, total actuel : 1Ajout de var_str dans root[0xb74e8e28]String/intTest : youpi, total actuel : 2Ajout de sub dans root[0xb74e8e28]Création ! [0x808c098]Copie de test depuis [0x808c098] vers [0xb74e8e80]Ajout de var_test dans [0xb74e8e80]String/intTest : youpi, total actuel : 1Copie de test depuis [0x808c098] vers [0xb74e8ed0]Demande de var_test dans [0xb74e8ed0]Total : 0var_test non présentDemande de var_int dans root[0xb74e8e28]Total : 2Demande de var_int dans root[0xb74e8e28]Total : 245 - 44 -*/