All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
IModelRepository.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 
7 #include <vector>
8 #include <map>
9 
10 namespace Eegeo
11 {
12  namespace Labels
13  {
14  template <typename TRepository>
16 
17  template <typename TKey, typename TValue, typename TIterator>
19  {
20  public:
22  typedef TKey KeyType;
23  typedef TValue ItemType;
24  typedef TIterator IteratorType;
26  public:
27  virtual ~IModelRepository() {;}
28 
29  virtual int Size() const = 0;
30 
31  virtual bool Contains(const KeyType& key) const = 0;
32 
33  virtual ItemType Get(const KeyType& key) const = 0;
34 
35  virtual void Add(const KeyType& key, const ItemType& value) = 0;
36 
37  virtual void Remove(const KeyType& key) = 0;
38 
39  virtual void Clear() = 0;
40 
41  virtual void AllKeys(std::vector<KeyType>& out_allKeys) const = 0;
42 
43  virtual void AllItems(std::vector<ItemType>& out_allItems) const = 0;
44 
45  virtual IteratorType Begin() const = 0;
46 
47  virtual IteratorType End() const = 0;
48 
49  virtual void AddObserver(ObserverType& observer) = 0;
50 
51  virtual void RemoveObserver(ObserverType& observer) = 0;
52  };
53  }
54 }