Initial commit
[yaffs-website] / node_modules / node-sass / src / libsass / src / subset_map.hpp
1 #ifndef SASS_SUBSET_MAP_H
2 #define SASS_SUBSET_MAP_H
3
4 #include <map>
5 #include <set>
6 #include <vector>
7 #include <algorithm>
8 #include <iterator>
9
10 #include "ast_fwd_decl.hpp"
11
12
13 // #include <iostream>
14 // #include <sstream>
15 // template<typename T>
16 // std::string vector_to_string(std::vector<T> v)
17 // {
18 //   std::stringstream buffer;
19 //   buffer << "[";
20
21 //   if (!v.empty())
22 //   {  buffer << v[0]; }
23 //   else
24 //   { buffer << "]"; }
25
26 //   if (v.size() == 1)
27 //   { buffer << "]"; }
28 //   else
29 //   {
30 //     for (size_t i = 1, S = v.size(); i < S; ++i) buffer << ", " << v[i];
31 //     buffer << "]";
32 //   }
33
34 //   return buffer.str();
35 // }
36
37 // template<typename T>
38 // std::string set_to_string(set<T> v)
39 // {
40 //   std::stringstream buffer;
41 //   buffer << "[";
42 //   typename std::set<T>::iterator i = v.begin();
43 //   if (!v.empty())
44 //   {  buffer << *i; }
45 //   else
46 //   { buffer << "]"; }
47
48 //   if (v.size() == 1)
49 //   { buffer << "]"; }
50 //   else
51 //   {
52 //     for (++i; i != v.end(); ++i) buffer << ", " << *i;
53 //     buffer << "]";
54 //   }
55
56 //   return buffer.str();
57 // }
58
59 namespace Sass {
60
61   class Subset_Map {
62   private:
63     std::vector<SubSetMapPair> values_;
64     std::map<Simple_Selector_Obj, std::vector<std::pair<Compound_Selector_Obj, size_t> >, OrderNodes > hash_;
65   public:
66     void put(const Compound_Selector_Obj& sel, const SubSetMapPair& value);
67     std::vector<SubSetMapPair> get_kv(const Compound_Selector_Obj& s);
68     std::vector<SubSetMapPair> get_v(const Compound_Selector_Obj& s);
69     bool empty() { return values_.empty(); }
70     void clear() { values_.clear(); hash_.clear(); }
71     const std::vector<SubSetMapPair> values(void) { return values_; }
72   };
73
74 }
75
76 #endif