Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
VariableBuildInfo.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 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/* VariableBuildInfo.h (C) 2000-2024 */
9/* */
10/* Information for building a variable. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_VARIABLEBUILDINFO_H
13#define ARCANE_VARIABLEBUILDINFO_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/String.h"
18#include "arcane/core/MeshHandle.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane
24{
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29class IModule;
30class ISubDomain;
31class IMesh;
32class IItemFamily;
33class IVariableMng;
34class VariablePrivate;
35class IDataFactoryMng;
36
37/*---------------------------------------------------------------------------*/
38/*---------------------------------------------------------------------------*/
39
43class ARCANE_CORE_EXPORT VariableBuildInfo
44{
45 public:
46
47 // To access the default constructor.
48 friend class NullVariableBuildInfo;
49 // TEMPORARY To access _subDomain(). To be removed later.
50 friend class VariablePrivate;
51
52 private:
53
55 struct NullTag
56 {};
57
58 public:
59
67 VariableBuildInfo(IModule* m, const String& name, int property = 0);
68
77 VariableBuildInfo(ISubDomain* sub_domain, const String& name, int property = 0);
78
87 VariableBuildInfo(IVariableMng* variable_mng, const String& name, int property = 0);
88
97 VariableBuildInfo(IMesh* mesh, const String& name, int property = 0);
98
107 VariableBuildInfo(const MeshHandle& mesh_handle, const String& name, int property = 0);
108
117 VariableBuildInfo(IModule* m, const String& name,
118 const String& item_family_name, int property = 0);
119
129 VariableBuildInfo(IMesh* mesh, const String& name,
130 const String& item_family_name, int property = 0);
131
141 VariableBuildInfo(const MeshHandle& mesh_handle, const String& name,
142 const String& item_family_name, int property = 0);
143
153 VariableBuildInfo(ISubDomain* sd, const String& name, const String& mesh_name,
154 const String& item_family_name, int property = 0);
155
165 VariableBuildInfo(IVariableMng* variable_mng, const String& name, const String& mesh_name,
166 const String& item_family_name, int property = 0);
167
176 VariableBuildInfo(IItemFamily* family, const String& name, int property = 0);
177
187 VariableBuildInfo(IModule* m, const String& name,
188 const String& item_family_name,
189 const String& item_group_name, int property = 0);
190
201 VariableBuildInfo(IMesh* mesh, const String& name,
202 const String& item_family_name,
203 const String& item_group_name, int property = 0);
204
215 VariableBuildInfo(const MeshHandle& mesh_handle, const String& name,
216 const String& item_family_name,
217 const String& item_group_name, int property = 0);
218
229 VariableBuildInfo(ISubDomain* sd, const String& name,
230 const String& mesh_name,
231 const String& item_family_name,
232 const String& item_group_name, int property = 0);
233
244 VariableBuildInfo(IVariableMng* variable_mng, const String& name,
245 const String& mesh_name,
246 const String& item_family_name,
247 const String& item_group_name, int property = 0);
248
249 private:
250
251 explicit VariableBuildInfo(const NullTag&);
252
253 public:
254
255 ARCCORE_DEPRECATED_2020("Do not use this method. Try to get ISubDomain from another way")
256 ISubDomain* subDomain() const { return m_sub_domain; }
257
258 public:
259
260 IVariableMng* variableMng() const;
261 IDataFactoryMng* dataFactoryMng() const;
262 ITraceMng* traceMng() const;
263 IModule* module() const { return m_module; }
264 IMesh* mesh() const { return m_mesh_handle.mesh(); }
265 const MeshHandle& meshHandle() const { return m_mesh_handle; }
266 const String& name() const { return m_name; }
267 const String& itemFamilyName() const { return m_item_family_name; }
268 const String& itemGroupName() const { return m_item_group_name; }
269 const String& meshName() const { return m_mesh_name; }
270 int property() const { return m_property; }
271 bool isNull() const { return m_is_null; }
272
273 private:
274
276 IModule* m_module = nullptr;
282 int m_property = 0;
283 bool m_is_null = false;
284
285 private:
286
287 void _init();
288 ISubDomain* _subDomain() const { return m_sub_domain; }
289};
290
291/*---------------------------------------------------------------------------*/
292/*---------------------------------------------------------------------------*/
293
299class ARCANE_CORE_EXPORT NullVariableBuildInfo
300: public VariableBuildInfo
301{
302 public:
303
304 NullVariableBuildInfo()
306 {}
307};
308
309/*---------------------------------------------------------------------------*/
310/*---------------------------------------------------------------------------*/
311
312} // End namespace Arcane
313
314/*---------------------------------------------------------------------------*/
315/*---------------------------------------------------------------------------*/
316
317#endif
Interface of the data factory manager.
Interface of an entity family.
Definition IItemFamily.h:83
Interface of a module.
Definition IModule.h:40
Interface of the subdomain manager.
Definition ISubDomain.h:75
Variable manager interface.
Handle on a mesh.
Definition MeshHandle.h:48
String m_item_group_name
Supported entity group name.
String m_mesh_name
Name of the mesh associated with the variable.
VariableBuildInfo(IModule *m, const String &name, int property=0)
Constructs an initializer for a variable.
IModule * m_module
Module associated with the variable.
MeshHandle m_mesh_handle
Handle on the mesh.
int m_property
Variable properties.
String m_item_family_name
Entity family name.
String m_name
Variable name.
ISubDomain * m_sub_domain
Subdomain manager.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Tag for a null VariableBuildInfo.