Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
DataStorageFactory.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 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/* DataStorageFactory.h (C) 2000-2021 */
9/* */
10/* Fabrique de conteneur d'une donnée. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IMPL_DATASTORAGEFACTORY_H
13#define ARCANE_IMPL_DATASTORAGEFACTORY_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/Ref.h"
18#include "arcane/utils/ITraceMng.h"
19
20#include "arcane/IDataStorageFactory.h"
21#include "arcane/IData.h"
22#include "arcane/IDataFactory.h"
23#include "arcane/IDataFactoryMng.h"
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28namespace Arcane
29{
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
37class ARCANE_IMPL_EXPORT AbstractDataStorageFactory
39{
40 public:
42 : m_storage_type_info(dsti){}
43 public:
46 {
47 return m_storage_type_info;
48 }
49 private:
50 DataStorageTypeInfo m_storage_type_info;
51};
52
53/*---------------------------------------------------------------------------*/
54/*---------------------------------------------------------------------------*/
59template<typename DataType> class DataStorageFactory
61{
62 public:
63
66
67 public:
68
71 {
72 IData* d = new DataType(dsbi);
73 return makeRef(d);
74 }
75
78 {
79 using DataContainerType = DataType;
80 ITraceMng* trace = dfm->traceMng();
81 DataStorageTypeInfo t = DataContainerType::staticStorageTypeInfo();
82 const bool print_info = false;
83 if (print_info && trace)
84 trace->info() << "TYPE=" << t.basicDataType()
85 << " nb_basic=" << t.nbBasicElement()
86 << " dimension=" << t.dimension()
87 << " multi_tag=" << t.multiTag()
88 << " full_name=" << t.fullName()
89 << "\n";
91 dfm->registerDataStorageFactory(makeRef(sf));
92 }
93};
94
95/*---------------------------------------------------------------------------*/
96/*---------------------------------------------------------------------------*/
97
98} // End namespace Arcane
99
100/*---------------------------------------------------------------------------*/
101/*---------------------------------------------------------------------------*/
102
103#endif
Fabrique de conteneur d'une donnée.
DataStorageTypeInfo storageTypeInfo() override
Informations sur le type de conteneur créé
Informations pour construire une instance de 'IData'.
Fabrique de conteneur d'une donnée.
static void registerDataFactory(IDataFactoryMng *dfm)
Enregistre dans dfm une fabrique pour la donnée DataType.
Ref< IData > createSimpleDataRef(const DataStorageBuildInfo &dsbi) override
Créé une donnée d'un type simple.
Informations de type pour un conteneur de données.
Interface du gestionnaire de fabrique d'une donnée.
Interface d'une fabrique de conteneur d'une donnée.
Interface d'une donnée.
Definition IData.h:33
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Interface du gestionnaire de traces.
virtual TraceMessage info()=0
Flot pour un message d'information.
ITraceMng * traceMng() const
Gestionnaire de trace.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-