Moka libraries
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
voxel-list.hh
Go to the documentation of this file.
1 /*
2  * lib-spamod : Visualisation des objets en discret.
3  * Copyright (C) 2004, Moka Team, Université de Poitiers, Laboratoire SIC
4  * http://www.sic.sp2mi.univ-poitiers.fr/
5  * Copyright (C) 2009, Guillaume Damiand, CNRS, LIRIS,
6  * guillaume.damiand@liris.cnrs.fr, http://liris.cnrs.fr/
7  *
8  * This file is part of lib-spamod
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU Lesser General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * along with this program. If not, see <http://www.gnu.org/licenses/>.
22  */
23 
24 /******************************************************************************
25  * Fichier : Voxel_List.h *
26  * Auteur : DEXET Martine *
27  *----------------------------------------------------------------------------*
28  * Ce fichier contient la spécification de la classe Voxel_List. Cette *
29  * classe permet de stocker une liste d'objets de la classe Voxel en tant *
30  * qu'attribut. *
31  * *
32  *****************************************************************************/
33 
34 
35 #ifndef VOXEL_LIST_H
36 #define VOXEL_LIST_H
37 
38 #include "voxel.hh"
39 #include "attribute.hh"
40 
41 #include <list>
42 #include <iostream>
43 
44 
45 /******************************************************************************
46  * Classe Voxel_List *
47  *****************************************************************************/
48 
49 class Voxel_List : public CAttribute {
50 
51  public:
52 
53  // Constructeur.
54  Voxel_List();
55 
56  // Destructeur.
57  virtual ~Voxel_List();
58 
59  // Surcharge des méthodes de la classe CAttribute.
60  TAttributeId getType() const;
61  void * Get_Data();
62  CAttribute * copy() const;
63  void destroy();
64  void save(std::ostream &fd) const;
65  void load(std::istream &fd);
66 
67  private:
68 
69  // Pointeur sur une liste d'objets de la classe Voxel.
70  std::list<Voxel*> * lst;
71 };
72 
73 
74 /******************************************************************************
75  * Fichier : Voxel_List.inl *
76  * Auteur : DEXET Martine *
77  *----------------------------------------------------------------------------*
78  * Ce fichier contient l'implémentation des méthodes de la classe *
79  * Voxel_List. *
80  * *
81  *****************************************************************************/
82 
83 #include "user.hh"
84 
85 
86 // Constructeur.
87 inline
89 {
90  lst = new std::list<Voxel*>;
91 }
92 
93 
94 // Destructeur.
95 inline
97 {
98  std::list<Voxel*>::iterator iter;
99 
100  for (iter=lst->begin();
101  iter!=lst->end();
102  iter++)
103  if (*iter != NULL)
104  delete *iter;
105 
106  delete lst;
107 }
108 
109 
110 // Surcharge des méthodes de la classe CAttribute.
111 inline
112 TAttributeId Voxel_List::getType() const
113 {
115 }
116 
117 inline
119 {
120  return lst;
121 }
122 
123 inline
124 CAttribute * Voxel_List::copy() const
125 {
126  Voxel_List * l = new Voxel_List();
127  std::list<Voxel*>::iterator li;
128 
129  for (li=lst->begin(); li!=lst->end(); li++)
130  l->lst->push_front(*li);
131 
132  return l;
133 }
134 
135 inline
137 {
138  delete this;
139 }
140 
141 inline
142 void Voxel_List::save(std::ostream &fd) const
143 {
144  std::list<Voxel*>::iterator li;
145 
146  for (li=lst->begin(); li!=lst->end(); li++)
147  fd << *li;
148 }
149 
150 inline
151 void Voxel_List::load(std::istream &fd)
152 {
153 }
154 
155 #endif