Commit | Line | Data |
---|---|---|
c295905f AW |
1 | /* |
2 | This file is part of Smoothie (http://smoothieware.org/). The motion control part is heavily based on Grbl (https://github.com/simen/grbl). | |
3 | Smoothie is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. | |
4 | Smoothie is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | |
df27a6a3 | 5 | You should have received a copy of the GNU General Public License along with Smoothie. If not, see <http://www.gnu.org/licenses/>. |
c295905f AW |
6 | */ |
7 | ||
8 | #ifndef CONFIGCACHE_H | |
9 | #define CONFIGCACHE_H | |
10 | ||
11 | using namespace std; | |
12 | #include <vector> | |
a2f7633f | 13 | #include <stdint.h> |
d41a043b | 14 | #include <map> |
c295905f | 15 | |
8d54c34c | 16 | class ConfigValue; |
a2f7633f | 17 | class StreamOutput; |
c295905f | 18 | |
a2f7633f | 19 | class ConfigCache { |
c295905f | 20 | public: |
a2f7633f JM |
21 | ConfigCache(); |
22 | ~ConfigCache(); | |
23 | void clear(); | |
24 | ||
d41a043b | 25 | void add(ConfigValue* v); |
cab80ea9 | 26 | void pop(); |
a2f7633f JM |
27 | |
28 | // lookup and return the entru that matches the check sums,return NULL if not found | |
29 | ConfigValue *lookup(const uint16_t *check_sums) const; | |
30 | ||
31 | // collect enabled checksums of the given family | |
32 | void collect(uint16_t family, uint16_t cs, vector<uint16_t> *list); | |
8d54c34c | 33 | |
df27a6a3 | 34 | // If we find an existing value, replace it, otherwise, push it at the back of the list |
8d54c34c | 35 | void replace_or_push_back(ConfigValue* new_value); |
c295905f | 36 | |
a2f7633f JM |
37 | // used for debugging, dumps the cache to a stream |
38 | void dump(StreamOutput *stream); | |
39 | ||
40 | private: | |
34a6a1d6 | 41 | typedef vector<ConfigValue*> storage_t; |
d41a043b | 42 | storage_t store; |
c295905f AW |
43 | }; |
44 | ||
45 | ||
46 | ||
47 | #endif |