Drive Engine  1.0.0
Plateforme de reconstruction 3D
DefaultParameterList.h
1 // Copyright (c) 2015. All rights reserved to DriveEngine Team.
2 
3 #pragma once
4 
5 #include "Public/Collections/IParameterList.h"
6 #include "Public/Datatypes/IParameter.h"
7 #include "Public/ImplementationUtilities/ImplementationUtilities.h"
8 #include <map>
9 #include <string>
10 
11 namespace DriveEngine
12 {
19  {
20  private:
21  typedef std::map<std::string, IParameter*> Parameters;
22  typedef std::pair<std::string, IParameter*> ParametersPair;
23 
24  Parameters parameters;
25 
26  public:
27  CONSTRUCTOR_H(IParameterList, DefaultParameterList);
28  DESTRUCTOR_H(DefaultParameterList);
29 
30 
31  // ICollection
32 
33  virtual Size GetSize() const;
34  virtual bool IsEmpty() const;
35  virtual IEnumerator* GetEnumerator() const;
36  virtual IConstEnumerator* GetConstEnumerator() const;
37  virtual void Clear();
38 
39 
40  // IList
41 
42  virtual IExportable* GetElement(Index index) const;
43  virtual const IExportable* GetConstElement(Index index) const;
44  virtual void Add(IExportable &item);
45  virtual void Remove(IExportable &item);
46  virtual void AddList(const IList &list);
47  virtual void RemoveList(const IList &list);
48 
49 
50  // IParameterList
51 
52  virtual IParameter* GetParameter(const char* name) const;
53  virtual void Add(IParameter& parameter);
54  virtual void Remove(IParameter& parameter);
55 
56  private:
57  IParameter* CastToParameter(IExportable& exportable);
58 
59  class Enumerator : public IEnumerator
60  {
61  private:
62  bool hasMovedAtLeastOnce;
63  Parameters::const_iterator iterator;
64  Parameters::const_iterator begin;
65  Parameters::const_iterator end;
66 
67  public:
68  CONSTRUCTOR_H(IEnumerator, Enumerator, Parameters::const_iterator& begin, Parameters::const_iterator& end);
69  DESTRUCTOR_H(Enumerator);
70 
71 
72  // IEnumerator
73 
74  virtual bool MoveNext();
75  virtual IExportable* GetCurrent() const;
76  virtual void Reset();
77  };
78 
79  class ConstEnumerator : public IConstEnumerator
80  {
81  private:
82  bool hasMovedAtLeastOnce;
83  Parameters::const_iterator iterator;
84  Parameters::const_iterator begin;
85  Parameters::const_iterator end;
86 
87  public:
88  CONSTRUCTOR_H(IConstEnumerator, ConstEnumerator, Parameters::const_iterator& begin, Parameters::const_iterator& end);
89  DESTRUCTOR_H(ConstEnumerator);
90 
91 
92  // IEnumerator
93 
94  virtual bool MoveNext();
95  virtual const IExportable* GetCurrent() const;
96  virtual void Reset();
97  };
98  };
99 }
virtual IConstEnumerator * GetConstEnumerator() const
Gets a constant enumerator.
Definition: DefaultParameterList.cpp:33
List of parameters. Used to configure module implementations.
Definition: IParameterList.h:16
virtual IParameter * GetParameter(const char *name) const
Gets a parameter.
Definition: DefaultParameterList.cpp:124
virtual void Clear()
Remove every element contained in the collection.
Definition: DefaultParameterList.cpp:38
virtual IEnumerator * GetEnumerator() const
Gets an enumerator.
Definition: DefaultParameterList.cpp:28
virtual void AddList(const IList &list)
Adds every element of a list.
Definition: DefaultParameterList.cpp:84
Definition: DefaultCalibrationInfoList.h:12
virtual void Add(IExportable &item)
Adds an element.
Definition: DefaultParameterList.cpp:68
virtual void Remove(IExportable &item)
Removes an element.
Definition: DefaultParameterList.cpp:76
virtual const IExportable * GetConstElement(Index index) const
Gets a constant element.
Definition: DefaultParameterList.cpp:63
virtual Size GetSize() const
Gets the size, that is the number of elements contained in the collection.
Definition: DefaultParameterList.cpp:18
The list interface.
Definition: IList.h:17
virtual bool IsEmpty() const
Verify if the collection is empty.
Definition: DefaultParameterList.cpp:23
The main interface
Definition: IExportable.h:12
The constant enumerator interface.
Definition: IConstEnumerator.h:36
The enumerator interface.
Definition: IEnumerator.h:35
The parameter datatype interface.
Definition: IParameter.h:16
virtual void RemoveList(const IList &list)
Remove every element of a list.
Definition: DefaultParameterList.cpp:96
virtual IExportable * GetElement(Index index) const
Gets an element.
Definition: DefaultParameterList.cpp:46
Default implementation of the parameters list.
Definition: DefaultParameterList.h:18