Moka libraries
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
point-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 : Point_List.h *
26  * Auteur : DEXET Martine *
27  *----------------------------------------------------------------------------*
28  * Ce fichier contient la spécification de la classe Point_List. Cette *
29  * classe permet de stocker une liste d'objets de la classe Point3D en tant *
30  * qu'attribut. *
31  * *
32  *****************************************************************************/
33 
34 
35 #ifndef POINT_LIST_H
36 #define POINT_LIST_H
37 
38 #include "attribute.hh"
39 #include "vertex.hh"
40 #include "user.hh"
41 
42 #include <list>
43 #include <iostream>
44 
45 /******************************************************************************
46  * Classe Point_List *
47  *****************************************************************************/
48 
49 class Point_List : public CAttribute {
50 
51  public:
52 
53  // Constructeurs.
54  Point_List();
55  Point_List(std::list<CVertex*> * l);
56 
57  // Destructeur.
58  virtual ~Point_List();
59 
60  // Surcharge des méthodes de la classe CAttribute.
61  TAttributeId getType() const;
62  std::list<CVertex*> * Get_Data();
63  CAttribute * copy() const;
64  void destroy();
65  void save(std::ostream &fd) const;
66  void load(std::istream &fd);
67 
68  private:
69 
70  // Pointeur sur une liste d'objets de la classe CVertex.
71  std::list<CVertex*> *lst;
72 };
73 
74 /******************************************************************************
75  * Fichier : Point_List.inl *
76  * Auteur : DEXET Martine *
77  *----------------------------------------------------------------------------*
78  * Ce fichier contient l'implémentation des méthodes de la classe *
79  * Point_List. *
80  * *
81  *****************************************************************************/
82 
83 
84 // Constructeurs.
85 inline
87 {
88  lst = new std::list<CVertex*>;
89 }
90 
91 inline
92 Point_List::Point_List(std::list<CVertex*> * l)
93 {
94  lst = l;
95 }
96 
97 
98 // Destructeur.
99 inline
101 {
102  delete lst;
103 }
104 
105 
106 // Surcharge des méthodes de la classe CAttribute.
107 inline
108 TAttributeId Point_List::getType() const
109 {
110  return PT_LIST_ATTRIBUTE_ID;
111 }
112 
113 inline
114 std::list<CVertex*> * Point_List::Get_Data()
115 {
116  return lst;
117 }
118 
119 inline
120 CAttribute * Point_List::copy() const
121 {
122  Point_List * l = new Point_List();
123  std::list<CVertex*>::iterator li;
124 
125  for (li=lst->begin(); li!=lst->end(); li++)
126  l->lst->push_front(*li);
127 
128  return l;
129 }
130 
131 inline
133 {
134  delete this;
135 }
136 
137 inline
138 void Point_List::save(std::ostream &fd)const
139 {
140  std::list<CVertex*>::iterator li;
141 
142  for (li=lst->begin(); li!=lst->end(); li++)
143  fd << *li;
144 }
145 
146 inline
147 void Point_List::load(std::istream &fd)
148 {
149 }
150 
151 
152 #endif