Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
IModuleFactory.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/* IModuleFactory.h (C) 2000-2019 */
9/* */
10/* Module manufacturing interface. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IMODULEFACTORY_H
13#define ARCANE_IMODULEFACTORY_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arccore/base/ReferenceCounter.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane
24{
25class MeshHandle;
26class IModuleFactory2;
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
42class ARCANE_CORE_EXPORT IModuleFactoryInfo
43{
44 protected:
45
48
49 public:
50
51 virtual void addReference() = 0;
52 virtual void removeReference() = 0;
59 virtual bool isAutoload() const = 0;
60
70 virtual void initializeModuleFactory(ISubDomain* sub_domain) = 0;
71
82 virtual Ref<IModule> createModule(ISubDomain* parent, const MeshHandle& mesh_handle) = 0;
83
85 virtual String moduleName() const = 0;
86
94 virtual const IServiceInfo* serviceInfo() const = 0;
95};
96
97/*---------------------------------------------------------------------------*/
98/*---------------------------------------------------------------------------*/
99
107class ARCANE_CORE_EXPORT IModuleFactory2
108{
109 public:
110
111 virtual ~IModuleFactory2() {}
112
113 public:
114
122 virtual Ref<IModule> createModuleInstance(ISubDomain* sd, const MeshHandle& mesh_handle) = 0;
123
132 virtual void initializeModuleFactory(ISubDomain* sd) = 0;
133
135 virtual String moduleName() const = 0;
136
138 virtual const IServiceInfo* serviceInfo() const = 0;
139};
140
141/*---------------------------------------------------------------------------*/
142/*---------------------------------------------------------------------------*/
143
147class ARCANE_CORE_EXPORT ModuleFactoryReference
148: ReferenceCounter<IModuleFactoryInfo>
149{
150 public:
151
153
154 public:
155
156 explicit ModuleFactoryReference(IModuleFactoryInfo* f)
157 : Base(f)
158 {}
159 ModuleFactoryReference(Ref<IModuleFactory2> factory, bool is_autoload);
160
161 public:
162
163 IModuleFactoryInfo* factory() const { return get(); }
164};
165
166/*---------------------------------------------------------------------------*/
167/*---------------------------------------------------------------------------*/
168
169} // End namespace Arcane
170
171/*---------------------------------------------------------------------------*/
172/*---------------------------------------------------------------------------*/
173
174#endif
Arcane configuration file.
T * get() const
Returns the object referenced by the instance.
Module factory interface (V2).
virtual Ref< IModule > createModuleInstance(ISubDomain *sd, const MeshHandle &mesh_handle)=0
Creates a module instance.
virtual String moduleName() const =0
Name of the module created by this factory.
virtual void initializeModuleFactory(ISubDomain *sd)=0
Static initialization of the module.
virtual const IServiceInfo * serviceInfo() const =0
Information about the module that can be created by this factory.
Information about a module factory.
virtual String moduleName() const =0
Name of the module created by this factory.
virtual ~IModuleFactoryInfo()
Releases resources.
virtual void initializeModuleFactory(ISubDomain *sub_domain)=0
If the factory is a one-to-one module, initializes it on the sub-domain sub_domain.
virtual Ref< IModule > createModule(ISubDomain *parent, const MeshHandle &mesh_handle)=0
Creates a module.
virtual bool isAutoload() const =0
Indicates if the module should be loaded automatically.
virtual const IServiceInfo * serviceInfo() const =0
Information about the module that can be created by this factory.
Interface for service or module information.
Interface of the subdomain manager.
Definition ISubDomain.h:75
Handle on a mesh.
Definition MeshHandle.h:48
Reference to an instance.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --