00001 // ZenLib::ZtringListList - vector<vector<std::string>> is better 00002 // Copyright (C) 2002-2003 Jérôme Martinez, Zen@MediaArea.net 00003 // 00004 // This software is provided 'as-is', without any express or implied 00005 // warranty. In no event will the authors be held liable for any damages 00006 // arising from the use of this software. 00007 // 00008 // Permission is granted to anyone to use this software for any purpose, 00009 // including commercial applications, and to alter it and redistribute it 00010 // freely, subject to the following restrictions: 00011 // 00012 // 1. The origin of this software must not be misrepresented; you must not 00013 // claim that you wrote the original software. If you use this software 00014 // in a product, an acknowledgment in the product documentation would be 00015 // appreciated but is not required. 00016 // 2. Altered source versions must be plainly marked as such, and must not be 00017 // misrepresented as being the original software. 00018 // 3. This notice may not be removed or altered from any source distribution. 00019 // 00020 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00021 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00022 // ZtringListList 00023 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00024 // 00025 // Version 0.0.1 00026 // ------------- 00027 // 00028 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00029 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00030 // 00031 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00032 00033 //--------------------------------------------------------------------------- 00034 #ifndef CChaine_Tableau2H 00035 #define CChaine_Tableau2H 00036 //--------------------------------------------------------------------------- 00037 00038 //--------------------------------------------------------------------------- 00039 #include <ZenLib/ZtringList.h> 00040 //--------------------------------------------------------------------------- 00041 00042 //--------------------------------------------------------------------------- 00043 #define CCHAINE_TABLEAU2_CASSE 1 //Active la sensibilite a la casse (min/maj) 00044 #define CCHAINE_TABLEAU2_DESC 2 //Tri descendant au lieu d'ascendant 00045 //--------------------------------------------------------------------------- 00046 00047 //*************************************************************************** 00048 // Classe ZtringListList 00049 //*************************************************************************** 00050 00051 namespace ZenLib 00052 { 00053 00054 class ZtringListList : public std::vector<ZtringList> 00055 { 00056 public : 00057 //Gestion de la classe 00058 void CChaine_Tableau2_Commun (int Taille_Max2=0, int Taille_Max1=0, const Ztring &Separateur1="\r\n", const Ztring &Separateur2=";", const char *Source=""); 00059 ZtringListList (int Taille_Max2=0, int Taille_Max1=0, const Ztring &Separateur1="\r\n", const Ztring &Separateur2=";", const Ztring &Source=""); 00060 ZtringListList (const ZtringListList &Source); 00061 ZtringListList (const Ztring &Source); 00062 ZtringListList (const char* Source); 00063 ~ZtringListList (); 00064 00065 //Operateurs 00066 ZtringListList &operator = (const ZtringListList &Source); 00067 ZtringListList &operator += (const ZtringListList &Source); 00068 ZtringListList operator + (const ZtringListList &Source) const; 00069 bool operator == (const ZtringListList &Source) const; 00070 bool operator != (const ZtringListList &Source) const; 00071 /* 00072 CChaine_Tableau1 &operator [] (int Pos0); //Lecture ecriture 00073 CChaine_Tableau1 &operator [] (int Pos0) const; //Lecture seulement 00074 */ 00075 ZtringList &operator () (size_t Pos0); //Lecture ecriture 00076 // CChaine_Tableau1 &operator () (int Pos0) const; //Lecture seulement 00077 00078 Ztring &operator () (size_t Pos0, size_t Pos1); //Lecture ecriture 00079 Ztring &operator () (const Ztring &Pos0, size_t Pos1=1); //Lecture ecriture 00080 Ztring &operator () (const Ztring &Pos0, size_t Pos0_1, size_t Pos1); //Lecture ecriture 00081 // CChaine &operator () (int Pos0, int Pos1) const; //Lecture seulement 00082 00083 //Edition 00084 Ztring Lire () const; //Lecture de tout 00085 Ztring Lire (size_t Pos0) const; //Lecture d'une ligne 00086 Ztring Lire (size_t Pos0, size_t Pos1) const; //Lecture d'un champs 00087 Ztring Lire (const Ztring &Pos0, size_t Pos1=1) const; //Lecture d'un champs en position 0 00088 Ztring Lire (const Ztring &Pos0, Ztring Default, size_t Pos1=1) const; //Lecture d'un champs en position 0 avec une option par defaut 00089 // CChaine Lire (const CChaine &Pos0, int Pos0_1, int Pos1) const; //Lecture d'un champs en position Pos0_1 00090 00091 Ztring Lire1 (size_t Pos1) const; //Lecture d'une colonne 00092 int Ecrire (const Ztring &AEcrire); //Ecriture de tout 00093 int Ecrire (const char *AEcrire, size_t Pos0); //Ecriture d'une ligne 00094 int Ecrire (const Ztring &AEcrire, size_t Pos0); //Ecriture d'une ligne 00095 int Ecrire (const ZtringList &AEcrire, size_t Pos0); //Ecriture d'une ligne 00096 int Ecrire (const Ztring &AEcrire, size_t Pos0, size_t Pos1); //Ecriture d'un champs 00097 void push_back (char* ToAdd); 00098 void push_back (const ZtringList &ToAdd); 00099 00100 /* int Ecrire (const CChaine &AEcrire, const CChaine &Pos0, int Pos1=1); //Ecriture d'un champs en recherchant Pos0T en position 0 00101 int Ecrire (const CChaine &AEcrire, const CChaine &Pos0, int Pos0_1, int Pos1); //Ecriture d'un champs en recherchant Pos0T en position Pos0_1 00102 /* 00103 int EcrireEx (const CChaine &AEcrire, int Pos0, int Pos1); //Remplir un champ avec options (Espace = Ne pas ecrire) 00104 int Ajouter (const CChaine_Tableau1 &AAjouter); //Ajout d'une ligne a la fin 00105 int Ajouter1 (const CChaine &AAjouter); //Ajout d'une nouvelle colonne 00106 int Inserer (const CChaine_Tableau1 &AInserer, int Pos0); // Insertion d'un champs et decalage des champs suivants 00107 int Inserer1 (const CChaine &AInserer, int Pos1); // Insertion d'une colonne 00108 int Permuter (int Pos0_A, int Pos0_B); // Permutation de deux ligne 00109 int Permuter1 (int Pos1_A, int Pos1_B); // Permutation de deux colonnes 00110 int Supprimer (); //Suppression de tout 00111 int Supprimer (int Pos0); //Suppression d'une ligne et decalage des champs suivants 00112 int Supprimer (const CChaine &ARechercher, int Pos1=0, const CChaine &Comparaison="=="); //Suppression de plusieurs lignes avec un selecteur au niveau d'une colonne 00113 int Supprimer1 (int Pos1); //Suppression d'une colonne 00114 int Trier (int Pos1=0, int Options=0); //Tri en fonction d'une colonne 00115 */ 00116 int Rechercher (const Ztring &ARechercher, size_t Pos1=0, size_t Pos0Debut=0, const Ztring &Comparaison="==", int Options=0) const; //recherche une ligne contenant ARechercher dans une colonne 00117 Ztring RechercherValeur (const Ztring &ARechercher, size_t Pos1Valeur=1, size_t Pos1=0, size_t Pos0Debut=0, const Ztring &Comparaison="==", int Options=0) const; //retourne le champs Pos1Valeur correspondant a la ligne trouvee 00118 /* 00119 int Remplacer (const CChaine &ARechercher, const CChaine &ARemplacer, int Pos1=-1, const CChaine &Comparaison="==", int Options=0); //Remplace toutes les occurences 00120 00121 //Informations 00122 int Taille_Get (int Rang=0) const; //Nombre de champs 00123 int Taille_Max_Set (int Taille_Max_Nouveau0, int Taille_Max_Nouveau1=-1); 00124 */ 00125 int Separateur_Set (const Ztring &Separateur_Nouveau0, const Ztring &Separateur_Nouveau1=";"); 00126 //size_t size() const; 00127 00128 //Divers 00129 ZtringListList SousTableau (const Ztring &ARechercher, int Pos1=0, int Pos0Debut=0, const Ztring &Comparaison="==", int Options=0) const; //retourne tout 00130 00131 protected : 00132 //CChaine_Tableau1** Chaine; 00133 //int Taille[2]; 00134 //int Taille_Max[2]; 00135 Ztring Separateur[2]; 00136 int Nettoyer(); //Rendu necessaire par operateur () et [] 00137 //size_t size_; 00138 00139 }; 00140 00141 } //namespace 00142 #endif 00143