World.hpp
Go to the documentation of this file.
1 #pragma once
2 
4 #include <unordered_set>
5 
6 namespace iv
7 {
8 
12 template< class Component >
13 class World
14 {
15 public:
17 
18  World( iv::Instance * inst );
19  iv::Instance * instance() const;
20 
21  void Register( Component * );
22  void Unregister( Component * );
23 
24  std::unordered_set< Component * > const & components();
25 
26 protected:
27  virtual void Component_Registered( Component * component ) = 0;
28  virtual void Component_Unregistered( Component * component ) = 0;
29 
30 private:
31  iv::Instance * inst;
32  std::unordered_set< Component * > _components;
33 };
34 
35 }
36 
37 #include "World.inl"