source: XIOS/dev/dev_rv/src4/xmlio/object.hpp @ 2338

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