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

Last change on this file since 215 was 215, checked in by hozdoba, 10 years ago
File size: 2.9 KB
Line 
1/* ************************************************************************** *
2 *      Copyright © IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
3 * ************************************************************************** */
4
5/**
6 * \file    object.cpp
7 * \brief   Base de tous les objets du projet XMLIOSERVER (implémentation).
8 * \author  Hervé Ozdoba
9 * \version 0.4
10 * \date    1er Juin 2011
11 */
12
13// XMLIOServer headers
14#include "xmlioserver_spl.hpp"
15#include "object.hpp"
16
17// Boost headers
18#include <boost/none.hpp>
19
20// /////////////////////////////// Définitions ////////////////////////////// //
21
22namespace xmlioserver {
23
24   // ------------------------------ Constructeurs -----------------------------
25
26   //- Constructeur simple d'un objet anonyme (ie sans identifiant).
27   CObject::CObject(void) : id()
28   { /* Ne rien faire de plus */ }
29
30   //- Constructeur simple d'un objet identifié.
31   CObject::CObject(const std::string & id) : id(id)
32   { /* Ne rien faire de plus */ }
33
34   //- Constructeur par copie.
35   CObject::CObject(const CObject & object)
36      : id(object.id)
37   { /* Ne rien faire de plus */ }
38
39   // ------------------------------- Destructeur -----------------------------
40
41   //- Destructeur de l'objet.
42   CObject::~CObject(void)
43   { /* Ne rien faire de plus */ }
44
45   // ------------------------------- Accesseurs ------------------------------
46
47   //- Retourne l'identifiant de l'objet.
48   const std::string & CObject::getId(void) const
49   {
50      if (!this->hasId())
51         XIOS_ERROR("undefined_object_id",
52         << " L'identifiant de l'objet est requis mais n'est pas défini !");
53      return (this->id.get());
54   }
55
56   // --------------------------- Tests sur l'objet ---------------------------
57
58   //- Indique si l'objet est identifié.
59   bool CObject::hasId(void) const
60   {
61      return (!this->id);
62   }
63
64   // ------------------------------- Mutateurs -------------------------------
65
66   //- Supprime l'identifiant de l'objet, rendant ce dernier anonyme.
67   void CObject::resetId(void)
68   {
69      this->id = boost::none;
70   }
71
72   //- Assigne un identifiant à l'objet courant.
73   void CObject::setId(const std::string & id)
74   {
75      this->id = id ;
76   }
77
78   // ----------------------- Opérateurs de comparaison ----------------------
79
80   //- Indique si deux objets sont identiques.
81   bool CObject::operator==(const CObject & other) const
82   {
83      if(!this->hasId() || !other.hasId()) return (false);
84      return (this->id.get().compare(other.id.get()) == 0);
85   }
86
87   //- Indique si deux objets sont différents.
88   bool CObject::operator!=(const CObject & other) const
89   {
90      return (!(*this == other));
91   }
92
93   // --------------------------- Flux de sortie ----------------------------
94
95   //- Opérateur de flux de sortie ascii.
96   std::ostream & operator << (std::ostream & _os, const CObject & _object)
97   {
98      _os << _object.toString();
99      return (_os);
100   }
101
102} // namespace xmlioserver
Note: See TracBrowser for help on using the repository browser.