Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
ItemFamilyPolicyMng.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/* ItemFamilyPolicyMng.h (C) 2000-2017 */
9/* */
10/* Manager for the policies of a family of nodes. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MESH_ITEMFAMILYPOLICYMNG_H
13#define ARCANE_MESH_ITEMFAMILYPOLICYMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/Array.h"
18
19#include "arcane/core/IItemFamilyPolicyMng.h"
20
21#include "arcane/mesh/MeshGlobal.h"
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26namespace Arcane
27{
29} // namespace Arcane
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
33
34namespace Arcane::mesh
35{
36
37/*---------------------------------------------------------------------------*/
38/*---------------------------------------------------------------------------*/
39
40class ItemFamily;
42
43/*---------------------------------------------------------------------------*/
44/*---------------------------------------------------------------------------*/
48class ARCANE_MESH_EXPORT ItemFamilyPolicyMng
50{
51 public:
52
53 explicit ItemFamilyPolicyMng(ItemFamily* family,
54 IItemFamilyCompactPolicy* compact_policy = nullptr)
55 : m_item_family(family)
56 , m_compact_policy(compact_policy)
57 {}
58 ~ItemFamilyPolicyMng() override;
59
60 public:
61
63 {
64 return m_compact_policy;
65 }
66 IItemFamilyExchanger* createExchanger() override;
67 IItemFamilySerializer* createSerializer(bool with_flags) override;
68 void addSerializeStep(IItemFamilySerializeStepFactory* factory) override;
69 void removeSerializeStep(IItemFamilySerializeStepFactory* factory) override;
70
71 protected:
72
73 virtual ItemsExchangeInfo2* _createExchanger();
74
75 private:
76
77 ItemFamily* m_item_family;
78 IItemFamilyCompactPolicy* m_compact_policy;
79 UniqueArray<IItemFamilySerializeStepFactory*> m_serialize_step_factories;
80};
81
82/*---------------------------------------------------------------------------*/
83/*---------------------------------------------------------------------------*/
84
85} // namespace Arcane::mesh
86
87/*---------------------------------------------------------------------------*/
88/*---------------------------------------------------------------------------*/
89
90#endif
Exchange of entities and their characteristics for a given family.
Interface for entity family policies.
Factory for creating a step in the serialization of entity families.
Manages the serialization/deserialization of entities in a family.
1D data vector with value semantics (STL style).
IItemFamilyCompactPolicy * compactPolicy() override
Compaction policy.
Information for exchanging entities of a given family and their characteristics.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
ARCCORE_SERIALIZE_EXPORT Ref< ISerializer > createSerializer()
Creates an instance of ISerializer.