name storing system, implementation (2/2)
[quarnos.git] / manes / creator.h
blob45783affa2b3900ac5a86b9038e9d5e786d501c0
1 /* Quarn OS
3 * Creator class
5 * Copyright (C) 2008 Pawel Dziepak
8 */
10 #ifndef _CREATOR_H_
11 #define _CREATOR_H_
13 #include "component.h"
14 #include "component_name.h"
15 #include "type_name.h"
17 #inlucde "libs/list.h"
19 namespace manes {
20 /* Interface */
21 class creator : public virtual interface {
22 public:
23 virtual bool initialize() = 0;
24 virtual bool type_added(type_name) = 0;
26 virtual component &new_component(type_name) = 0;
27 virtual component &get_component(component_name) = 0;
30 /* Implementation */
31 class creator_impl : public implementation, public creator {
32 private:
33 list<component*> components;
35 public:
36 virtual bool initialize() = 0;
37 virtual bool type_added(type_name) = 0;
39 virtual component &new_component(type_name);
40 virtual component &get_component(component_name);
44 #endif