dynLattice
Loading...
Searching...
No Matches
MaterialFactory.h
Go to the documentation of this file.
1
7#pragma once
8
10#include <jem/util/Properties.h>
11#include <jive/util/CtorMap.h>
12#include <jive/util/Factory.h>
13
14using jive::Properties;
15using jive::Ref;
16using jive::String;
17using jive::StringVector;
18using jive::util::Factory;
19
34class MaterialFactory : public Factory
35{
36public:
39
41 typedef Factory Super;
42
52 typedef Ref<Material> (*Constructor)(const String &name,
53 const Properties &conf,
54 const Properties &props,
55 const Properties &globdat);
56
63 static void declare(const String &type, Constructor ctor);
64
71 static bool exists(const String &type);
72
78 static StringVector listKnownTypes();
79
90 static Ref<Material> newInstance(const String &type,
91 const String &name,
92 const Properties &conf,
93 const Properties &props,
94 const Properties &globdat);
95
106 static Ref<Material> newInstance(const String &name,
107 const Properties &conf,
108 const Properties &props,
109 const Properties &globdat);
110
111private:
113 class CtorMap_;
114};
115
121class MaterialFactory::CtorMap_ : public jive::util::CtorMap<Constructor>
122{
123};
Material class for representing different materials in the simulation.
Internal constructor map for MaterialFactory.
Definition MaterialFactory.h:122
Factory for dynamic material creation and registration.
Definition MaterialFactory.h:35
static bool exists(const String &type)
Check if a material type is registered.
Definition MaterialFactory.cpp:32
static Ref< Material > newInstance(const String &type, const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
Create material instance with explicit type.
Definition MaterialFactory.cpp:52
Ref< Material >(* Constructor)(const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
Constructor function pointer for material creation.
Definition MaterialFactory.h:52
static void declare(const String &type, Constructor ctor)
Register a material type with the factory.
Definition MaterialFactory.cpp:19
MaterialFactory Self
Type alias for the MaterialFactory class itself.
Definition MaterialFactory.h:38
Factory Super
Type alias for the base Factory class.
Definition MaterialFactory.h:41
static StringVector listKnownTypes()
Get list of all registered material types.
Definition MaterialFactory.cpp:41