]> git.tdb.fi Git - poefilter.git/blob - source/filter.h
Initial version from when I last played
[poefilter.git] / source / filter.h
1 #ifndef FILTER_H_
2 #define FILTER_H_
3
4 #include <list>
5 #include <map>
6 #include <string>
7 #include <msp/datafile/objectloader.h>
8 #include <msp/io/base.h>
9
10 class Category;
11 class PoeFilter;
12 class Theme;
13
14 class FilterStatement
15 {
16 private:
17         bool show;
18         std::list<std::string> lines;
19
20 public:
21         FilterStatement();
22
23         void set_show(bool);
24         void add_line(const std::string &);
25
26         static void add_line(std::list<FilterStatement> &, const std::string &);
27
28         void write(Msp::IO::Base &) const;
29 };
30
31
32 class Filter
33 {
34 public:
35         class Loader: public Msp::DataFile::ObjectLoader<Filter>
36         {
37         private:
38                 const PoeFilter &poe;
39
40         public:
41                 Loader(Filter &, const PoeFilter &);
42
43         private:
44                 static std::string glob_to_re(const std::string &);
45                 static bool category_order(const Category *, const Category *);
46
47                 void hide(const std::string &);
48                 void include(const std::string &);
49                 void show(const std::string &);
50         };
51
52 private:
53         std::list<const Category *> categories;
54         bool abstract;
55
56 public:
57         Filter();
58
59         bool is_abstract() const { return abstract; }
60         void write(Msp::IO::Base &, const Theme &) const;
61 };
62
63 #endif