All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
PinRepository.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "IPinObservable.h"
7 #include "Pins.h"
8 #include <vector>
9 
10 namespace Eegeo
11 {
12  namespace Pins
13  {
22  {
23  public:
27  PinRepository();
28 
32 
38  void AddPin(Pin& pPinToAdd);
39 
44  void RemovePin(Pin& pPinToRemove);
45 
49  int GetNumOfPins() const;
50 
55  Pin* GetPinAtIndex(int pinIndex) const;
56 
61  Pin* GetPinById(TPinId id) const;
62 
67  virtual void AddPinObserver(IPinObserver& observerToAdd);
68 
74  virtual void RemovePinObserver(IPinObserver& observerToRemove);
75 
76  private:
77  typedef std::vector<Pin*> TPins;
78  TPins m_pins;
79 
80  typedef std::vector<IPinObserver*> TPinObservers;
81  TPinObservers m_observers;
82 
83  bool ContainsPin(const Pin* pPinToCheck) const;
84  bool ContainsPinId(TPinId pinId) const;
85  Pin* FindPinById(TPinId pinId) const;
86  };
87  }
88 }