22#ifndef CPP_CALLBACK_SCRIPT_ENVIRONMENT_H
33#define CPP_CALLBACK_SCRIPT_ENVIRONMENT_H
44
5- #include " EnvironmentListener.h"
65#include " EnvironmentProvider.h"
76
87#include < map>
@@ -13,34 +12,38 @@ class Environment
1312 Environment () { }
1413 ~Environment () { }
1514
16- void addListener (const String &key, EnvironmentListener *listener )
15+ void addProvider (const String &key, EnvironmentProvider *provider )
1716 {
18- this ->listeners .insert (
19- std::pair<String, EnvironmentListener *>(key, listener ));
17+ this ->providers .insert (
18+ std::pair<String, EnvironmentProvider *>(key, provider ));
2019 }
2120
2221 Strings get (const String &key)
2322 {
23+ for (auto it : this ->providers )
24+ {
25+ if (it.second ->hasGetter (key))
26+ {
27+ return it.second ->get (key);
28+ }
29+ }
2430 Strings stub;
25- // TODO
2631 return stub;
2732 }
28- // void report(const String &key, const Strings &values);
2933 void set (const String &key, const Strings &values)
3034 {
31- // TODO
32-
33- }
34- void setProvider ( const String &key, EnvironmentProvider *provider)
35- {
36- // TODO
37-
35+ for ( auto it : this -> providers )
36+ {
37+ if (it. second -> hasSetter (key))
38+ {
39+ it. second -> set (key, values);
40+ }
41+ }
3842 }
3943
4044 private:
41- std::map<String, EnvironmentListener *> listeners;
42- std::map<String, EnvironmentProvider *> providers;
43-
45+ typedef std::map<String, EnvironmentProvider *> Providers;
46+ Providers providers;
4447};
4548
4649#endif // CPP_CALLBACK_SCRIPT_ENVIRONMENT_H
0 commit comments