source: XMLIO_V2/dev/dev_rv/src4/xmlio/object.hpp @ 215

Last change on this file since 215 was 215, checked in by hozdoba, 10 years ago
File size: 4.8 KB
Line 
1/* ************************************************************************** *
2 *      Copyright © IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
3 * ************************************************************************** */
4
5#ifndef __OBJECT_HPP__
6#define __OBJECT_HPP__
7
8/**
9 * \file    object.hpp
10 * \brief   Base de tous les objets du projet XMLIOSERVER (entête).
11 * \author  Hervé Ozdoba
12 * \version 0.4
13 * \date    1er Juin 2011
14 */
15
16// C++ standard headers
17#include <string>
18#include <iostream>
19
20// Boost headers
21#include <boost/optional.hpp>
22
23// ////////////////////////////// Déclarations ///////////////////////////// //
24
25// Classe de gestion d'erreur.
26class CException;
27
28/// \brief Espace de nommage regroupant toutes les sources du projet.
29namespace xmlioserver
30{
31   /**
32    * \class CObject
33    * \brief Classe abstraite de base dans l'arborescence d'objets de la bibliothÚque.
34    */
35   class CObject
36   {
37      public : // Destructeur
38         
39         //! \brief Destructeur de l'objet.
40         virtual ~CObject(void);
41
42      public : // Accesseurs
43
44         /*!
45          * \brief Retourne l'identifiant de l'objet.
46          * \return la chaîne de caractÚres permettant d'identifier l'objet.
47          */
48         const std::string & getId(void) const;
49
50      public : // Mutateurs
51
52         /// \brief Supprime l'identifiant de l'objet, rendant ce dernier anonyme.
53         void resetId(void);
54
55         /*!
56          * \brief Assigne un identifiant à l'objet courant.
57          * \param _new_id : une chaîne de caractÚres identifiant l'objet.
58          * \see id
59          */
60         void setId(const std::string & _new_id);
61
62      public : // Tests sur l'objet
63
64         /*!
65          * \brief Indique si l'objet est identifié.
66          * \return <b>true</b> si l'objet est identifié, <b>false</b> sinon.
67          */
68         bool hasId(void) const;
69
70      public : // Opérateurs de comparaison
71
72         /*!
73          * \brief Indique si deux objets sont identiques.
74          * \param _other_obj : objet à comparer avec l'élément courant.
75          * \return <b>true</b> si les objets sont identiques, <b>false</b> sinon.
76          * \remarks Deux objets sont identiques s'ils sont du même type et ont le même identifiant.
77          */
78         bool operator == (const CObject & _other_obj) const;
79
80         /*!
81          * \brief Indique si deux objets sont différents.
82          * \param _other_obj : l'objet à comparer avec l'élément courant.
83          * \return <b>true</b> si les objets sont différents, <b>false</b> sinon.
84          * \remarks Deux objets sont identiques s'ils sont du même type et ont le même identifiant.
85          */
86         bool operator != (const CObject & _other_obj) const;
87
88      public :// Flux de sortie
89
90         /*!
91          * \brief Opérateur de flux de sortie ascii.
92          * \param _os : un objet de flux de sortie standard.
93          * \param _object : l'objet à sérialiser sous forme ascii.
94          * \return Le paramÚtre _os éventuellement modifié aprÚs appel de la méthode.
95          * \see toString
96          */
97         friend std::ostream & operator << (std::ostream & _os, const CObject & _object);
98
99      public : // virtual - Autres méthodes
100
101
102         /*!
103          * \brief Retourne une représentation ascii de l'objet.
104          * \return Une représentation ascii de l'objet
105          * \see fromString
106          */
107         virtual std::string toString(void) const = 0;
108
109         /*!
110          * \brief Modifie l'objet en fonction d'une chaîne de caractÚre.
111          * \param _object_str : une représentation ascii de l'objet
112          * \see toString
113          */
114         virtual void fromString(const std::string & _object_str) = 0;
115
116      protected : // Constructeurs
117
118          //! \brief Constructeur simple d'un objet anonyme (ie sans identifiant).
119         CObject(void);
120
121         /*!
122          * \brief Constructeur simple d'un objet identifié.
123          * \param _id : une chaîne de caractÚre permettant d'identifier l'objet.
124          * \see id
125          */
126         explicit CObject(const std::string & _id);
127
128         /*!
129          * \brief Constructeur par copie .
130          * \remarks L'objet d'origine (<i>référencé</i>) n'est jamais modifié.
131          * \param _object : référence de l'objet à copier.
132          */
133         CObject(const CObject & _object);
134
135         /*!
136          * \brief Constructeur par copie.
137          * \remarks L'objet d'origine (<i>pointé</i>) n'est jamais modifié.
138          * \param _object_ptr : le pointeur sur l'objet à copier.
139          */
140         CObject(const CObject * const _object_ptr); // NIY
141
142      private : // Propriétés
143
144         boost::optional<std::string> id ;  /*!< \brief (optionnel) Identifiant de l'objet. */
145
146   }; // class CObject
147
148} // namespace xmlioserver
149
150#endif  // __OBJECT_HPP__
151
Note: See TracBrowser for help on using the repository browser.