// This file is part of the Herezh++ application. // // The finite element software Herezh++ is dedicated to the field // of mechanics for large transformations of solid structures. // It is developed by Gérard Rio (APP: IDDN.FR.010.0106078.000.R.P.2006.035.20600) // INSTITUT DE RECHERCHE DUPUY DE LÔME (IRDL) . // // Herezh++ is distributed under GPL 3 license ou ultérieure. // // Copyright (C) 1997-2021 Université Bretagne Sud (France) // AUTHOR : Gérard Rio // E-MAIL : gerardrio56@free.fr // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, // or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty // of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // For more information, please consult: . /************************************************************************ * * * DATE: 23/01/97 * * $ * * AUTEUR: G RIO (mailto:gerardrio56@free.fr) * * $ * * PROJET: Herezh++ * * $ * ************************************************************************ * définition d'un tableau de réel de dimension quelconque. Dans le cas ou la dimension est comprise * entre 1 et 20, on utilise des listes de réels pour allouer de la mémoire et pour la désallouer, ce qui * permet d'être beaucoup plus rapide que l'opérateur classique new. * la construstion de la classe s'appuit sur une spécialisation d'une classe template. * $ * * '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' * * VERIFICATION: * * * * ! date ! auteur ! but ! * * ------------------------------------------------------------ * * ! ! ! ! * * * * $ * * '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' * * MODIFICATIONS: * * * ! date ! auteur ! but ! * * ------------------------------------------------------------ * * * * $ * * * ************************************************************************/ // définition d'un tableau de réel de dimension quelconque. Dans le cas ou la dimension est comprise // entre 1 et 20, on utilise des listes de réels pour allouer de la mémoire et pour la désallouer, ce qui // permet d'être beaucoup plus rapide que l'opérateur classique new. // la construstion de la classe s'appuit sur une spécialisation d'une classe template. #ifndef TABLEAU_DOUBLE_H #define TABLEAU_DOUBLE_H #include "Tableau_T.h" #include "PtTabRel.h" /// @addtogroup Les_Tableaux_generiques /// @{ /// class Tableau_double : public Tableau { public : // VARIABLES PUBLIQUES : // CONSTRUCTEURS : // CONSTRUCTEURS : // Constructeur par defaut Tableau_double () : Tableau() {}; // Constructeur fonction de la taille du tableau Tableau_double (int nb); // Constructeur fonction de la taille du tableau et d'une // valeur d'initialisation pour les composantes Tableau_double (int nb,double val); // Constructeur fonction d'un tableau de double Tableau_double (int nb,double* tab); // Constructeur de copie Tableau_double (const Tableau_double & tab); // DESTRUCTEUR : ~Tableau_double (); // METHODES : // Surcharge de l'operateur d'affectation = Tableau_double& operator= (const Tableau_double& tab); // Change la taille du tableau (la nouvelle taille est n) void Change_taille (int n); // Enleve la ieme composante du tableau void Enleve (int i); // Enleve toutes les composantes du tableau dont la valeur est val void Enleve_val (double val); // Permet de desallouer l'ensemble des elements du tableau void Libere (); protected : // allocator dans la liste de data // a priori on utilise un pointeur sur une liste de 3 réels, mais dans // le constructeur et dans le destructeur, on effectue un cast vers le // bon allocator qui normalement à la même dimension ReelsPointe* iapointe; // pointeur générique }; /// @} // end of group #endif