Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Ptr.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* Ptr.h (C) 2000-2024 */
9/* */
10/* Classes diverses encapsulant des pointeurs. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_UTILS_PTR_H
13#define ARCANE_UTILS_PTR_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
43template <class T>
44class PtrT
45{
46 protected:
50 {
51 m_value = from.m_value;
52 return (*this);
53 }
54
55 template <typename T2>
57 {
58 m_value = from.get();
59 return (*this);
60 }
61
64 {
66 return (*this);
67 }
68
72 {}
73
75 template <typename T2>
78 {}
79
80 public:
81
83 PtrT() = default;
84
86 explicit PtrT(T* t)
87 : m_value(t)
88 {}
89
90 virtual ~PtrT() = default;
91
92 public:
93 public:
94
96 inline T* operator->() const
97 {
98#ifdef ARCANE_CHECK
99 if (!m_value)
101#endif
102 return m_value;
103 }
104
106 inline T& operator*() const
107 {
108#ifdef ARCANE_CHECK
109 if (!m_value)
111#endif
112 return *m_value;
113 }
114
121 T* get() const { return m_value; }
122
123 bool isNull() const { return !m_value; }
124
125 protected:
126
127 T* m_value = nullptr;
128};
129
130/*---------------------------------------------------------------------------*/
131/*---------------------------------------------------------------------------*/
139template <typename T1, typename T2> inline bool
140operator==(const PtrT<T1>& v1, const PtrT<T2>& v2)
141{
142 return v1.get() == v2.get();
143}
144
145/*---------------------------------------------------------------------------*/
146/*---------------------------------------------------------------------------*/
147
154template <typename T1, typename T2> inline bool
155operator!=(const PtrT<T1>& v1, const PtrT<T2>& v2)
156{
157 return v1.get() != v2.get();
158}
159
160/*---------------------------------------------------------------------------*/
161/*---------------------------------------------------------------------------*/
162
163} // namespace Arcane
164
165/*---------------------------------------------------------------------------*/
166/*---------------------------------------------------------------------------*/
167
168#endif
Fichier de configuration d'Arcane.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Encapsulation d'un pointeur.
Definition Ptr.h:45
T * m_value
Pointeur sur l'objet référencé
Definition Ptr.h:127
T * operator->() const
Retourne l'objet référé par l'instance.
Definition Ptr.h:96
PtrT< T > & operator=(const PtrT< T > &from)
Opérateur de copie.
Definition Ptr.h:49
PtrT(const PtrT< T > &from)
Construit une référence référant from.
Definition Ptr.h:70
T * get() const
Retourne l'objet référé par l'instance.
Definition Ptr.h:121
PtrT()=default
Construit une instance sans référence.
PtrT(const PtrT< T2 > &from)
Construit une référence référant from.
Definition Ptr.h:76
PtrT< T > & operator=(T *new_value)
Affecte à l'instance la value new_value.
Definition Ptr.h:63
T & operator*() const
Retourne l'objet référé par l'instance.
Definition Ptr.h:106
PtrT(T *t)
Construit une instance référant t.
Definition Ptr.h:86
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
void arcaneNullPointerError()
Signalue l'utilisation d'un pointeur nul.