Orcus
css_types.hpp
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This Source Code Form is subject to the terms of the Mozilla Public
4  * License, v. 2.0. If a copy of the MPL was not distributed with this
5  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
6  */
7 
8 #ifndef INCLUDED_ORCUS_CSS_TYPES_HPP
9 #define INCLUDED_ORCUS_CSS_TYPES_HPP
10 
11 #include "orcus/env.hpp"
12 #include <cstdlib>
13 #include <inttypes.h>
14 #include <string>
15 
16 namespace orcus { namespace css {
17 
18 enum class combinator_t
19 {
21  descendant,
23  direct_child,
25  next_sibling
26 };
27 
31 enum class property_function_t
32 {
33  unknown = 0,
34  hsl,
35  hsla,
36  rgb,
37  rgba,
38  url
39 };
40 
41 enum class property_value_t
42 {
43  none = 0,
44  string,
45  hsl,
46  hsla,
47  rgb,
48  rgba,
49  url
50 };
51 
52 using pseudo_element_t = uint16_t;
53 using pseudo_class_t = uint64_t;
54 
55 ORCUS_PSR_DLLPUBLIC extern const pseudo_element_t pseudo_element_after;
56 ORCUS_PSR_DLLPUBLIC extern const pseudo_element_t pseudo_element_before;
57 ORCUS_PSR_DLLPUBLIC extern const pseudo_element_t pseudo_element_first_letter;
58 ORCUS_PSR_DLLPUBLIC extern const pseudo_element_t pseudo_element_first_line;
59 ORCUS_PSR_DLLPUBLIC extern const pseudo_element_t pseudo_element_selection;
60 ORCUS_PSR_DLLPUBLIC extern const pseudo_element_t pseudo_element_backdrop;
61 
62 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_active;
63 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_checked;
64 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_default;
65 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_dir;
66 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_disabled;
67 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_empty;
68 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_enabled;
69 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_first;
70 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_first_child;
71 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_first_of_type;
72 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_fullscreen;
73 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_focus;
74 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_hover;
75 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_indeterminate;
76 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_in_range;
77 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_invalid;
78 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_lang;
79 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_last_child;
80 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_last_of_type;
81 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_left;
82 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_link;
83 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_not;
84 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_nth_child;
85 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_nth_last_child;
86 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_nth_last_of_type;
87 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_nth_of_type;
88 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_only_child;
89 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_only_of_type;
90 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_optional;
91 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_out_of_range;
92 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_read_only;
93 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_read_write;
94 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_required;
95 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_right;
96 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_root;
97 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_scope;
98 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_target;
99 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_valid;
100 ORCUS_PSR_DLLPUBLIC extern const pseudo_class_t pseudo_class_visited;
101 
106 ORCUS_PSR_DLLPUBLIC pseudo_element_t to_pseudo_element(const char* p, size_t n);
107 
112 ORCUS_PSR_DLLPUBLIC pseudo_class_t to_pseudo_class(const char* p, size_t n);
113 
114 ORCUS_PSR_DLLPUBLIC std::string pseudo_class_to_string(pseudo_class_t val);
115 
116 ORCUS_PSR_DLLPUBLIC property_function_t to_property_function(const char* p, size_t n);
117 
118 }}
119 
120 #endif
121 
122 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */