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
32class MaterialFactory : public Factory
33{
34 public:
37
39 typedef Factory Super;
40
48 typedef Ref<Material> (*Constructor)(const String &name,
49 const Properties &conf,
50 const Properties &props,
51 const Properties &globdat);
52
57 static void declare(const String &type, Constructor ctor);
58
63 static bool exists(const String &type);
64
68 static StringVector listKnownTypes();
69
78 static Ref<Material> newInstance(const String &type,
79 const String &name,
80 const Properties &conf,
81 const Properties &props,
82 const Properties &globdat);
83
92 static Ref<Material> newInstance(const String &name,
93 const Properties &conf,
94 const Properties &props,
95 const Properties &globdat);
96
97 private:
99 class CtorMap_;
100};
101
105class MaterialFactory::CtorMap_ : public jive::util::CtorMap<Constructor>
106{
107};
Material class for representing different materials in the simulation.
Internal constructor map for MaterialFactory.
Definition MaterialFactory.h:106
Factory for dynamic material creation and registration.
Definition MaterialFactory.h:33
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:48
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:36
Factory Super
Type alias for the base Factory class.
Definition MaterialFactory.h:39
static StringVector listKnownTypes()
Get list of all registered material types.
Definition MaterialFactory.cpp:41