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

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