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

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