Arcane  4.1.11.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
EdgeFamilyPolicyMng.cc
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/* EdgeFamilyPolicyMng.cc (C) 2000-2018 */
9/* */
10/* Edge family policy manager. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/utils/NotSupportedException.h"
15
16#include "arcane/core/IMesh.h"
17#include "arcane/core/IItemFamilyNetwork.h"
18
19#include "arcane/mesh/ItemFamilyPolicyMng.h"
20#include "arcane/mesh/ItemFamilyCompactPolicy.h"
21#include "arcane/mesh/IndirectItemFamilySerializer.h"
22#include "arcane/mesh/EdgeFamily.h"
23#include "arcane/mesh/ItemFamilySerializer.h"
24#include "arcane/mesh/DynamicMesh.h"
25#include "arcane/mesh/DynamicMeshIncrementalBuilder.h"
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30namespace Arcane::mesh
31{
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35
39class ARCANE_MESH_EXPORT EdgeFamilyPolicyMng
40: public ItemFamilyPolicyMng
41{
42 public:
43
44 EdgeFamilyPolicyMng(EdgeFamily* family)
45 : ItemFamilyPolicyMng(family, new StandardItemFamilyCompactPolicy(family))
46 , m_family(family)
47 {}
48
49 public:
50
51 IItemFamilySerializer* createSerializer(bool use_flags) override
52 {
53 if (use_flags)
54 throw NotSupportedException(A_FUNCINFO, "serialisation with 'use_flags==true'");
55 IMesh* mesh = m_family->mesh();
56 DynamicMesh* dmesh = ARCANE_CHECK_POINTER(dynamic_cast<DynamicMesh*>(mesh));
57 if (m_family->mesh()->useMeshItemFamilyDependencies())
58 return new ItemFamilySerializer(m_family, m_family, dmesh->incrementalBuilder());
59 else
60 return new IndirectItemFamilySerializer(m_family);
61 }
62
63 private:
64
65 EdgeFamily* m_family;
66};
67
68/*---------------------------------------------------------------------------*/
69/*---------------------------------------------------------------------------*/
70
71extern "C++" ARCANE_MESH_EXPORT IItemFamilyPolicyMng*
72createEdgeFamilyPolicyMng(ItemFamily* family)
73{
74 EdgeFamily* f = ARCANE_CHECK_POINTER(dynamic_cast<EdgeFamily*>(family));
75 return new EdgeFamilyPolicyMng(f);
76}
77
78/*---------------------------------------------------------------------------*/
79/*---------------------------------------------------------------------------*/
80
81} // namespace Arcane::mesh
82
83/*---------------------------------------------------------------------------*/
84/*---------------------------------------------------------------------------*/
#define ARCANE_CHECK_POINTER(ptr)
Macro retournant le pointeur ptr s'il est non nul ou lancant une exception s'il est nul.
Interface des politiques d'une famille d'entités.
Gère la sérialisation/désérialisation des entités d'une famille.
Exception lorsqu'une opération n'est pas supportée.
Implementation of a mesh.
Definition DynamicMesh.h:98
IItemFamilySerializer * createSerializer(bool use_flags) override
Créé une instance pour la sérialisation des entités. L'instance retournée doit être détruite par l'op...
Indirect serialization/deserialization of entity families.
Serialization/Deserialization of item families.
Compaction policy for Node, Edge, Face, or Cell entity families.