Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Side by Side Diff: third_party/WebKit/Source/build/scripts/templates/BaseComputedStyle.h.tmpl

Issue 2187493004: Add a generated ComputedStyleBase class that ComputedStyle extends (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@_make_visibility_enum_class_rebase
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 {% from 'macros.tmpl' import license %}
sashab 2016/07/27 03:23:19 Ugh, this is so hard to read with no syntax highli
2 {{license()}}
3
4 #ifndef BaseComputedStyle_h
5 #define BaseComputedStyle_h
6
7 #include "core/BaseComputedStyleConstants.h"
8 #include "core/CoreExport.h"
9 #include "wtf/RefCounted.h"
10
11 {# Returns the default value for the field, converted to fit in the storage cont ainer. #}
12 {% macro default_value(field) %}
13 {# We only support enum fields for now. #}
14 static_cast<unsigned>({{field.default_value}}){% endmacro %}
15
16 namespace blink {
17
18 // The generated portion of ComputedStyle. For more info, see the header comment
19 // in ComputedStyle.h.
20 class CORE_EXPORT BaseComputedStyle : public RefCounted<BaseComputedStyle> {
21 public:
22 ALWAYS_INLINE BaseComputedStyle() :
23 RefCounted<BaseComputedStyle>(),
24 {% for field in fields %}
25 {% set trailing_comma = "," if field != fields[-1] else "" %}
26 {{field.name}}({{default_value(field)}}){{trailing_comma}}
27 {% endfor %}
28 {}
29 ~BaseComputedStyle() {}
30
31 ALWAYS_INLINE BaseComputedStyle(const BaseComputedStyle& o) :
32 {% for field in fields %}
33 {% set trailing_comma = "," if field != fields[-1] else "" %}
34 {{field.name}}(o.{{field.name}}){{trailing_comma}}
35 {% endfor %}
36 {}
37
38 bool operator==(const BaseComputedStyle& o) const
39 {
40 return true
41 {% for field in fields %}
42 && {{field.name}} == o.{{field.name}}
43 {% endfor %}
44 && true;
sashab 2016/07/27 03:23:19 This && true stuff was just my not-so-clever way o
45 }
46
47 bool operator!=(const BaseComputedStyle& o) const { return !(*this == o); }
48
49 inline bool inheritedEqual(const BaseComputedStyle& o) const
50 {
51 return true
52 {% for field in fields if field.property['inherited'] %}
53 && {{field.name}} == o.{{field.name}}
54 {% endfor %}
55 && true;
56 }
57
58 inline bool nonInheritedEqual(const BaseComputedStyle& o) const
59 {
60 return true
61 {% for field in fields if not field.property['inherited'] %}
62 && {{field.name}} == o.{{field.name}}
63 {% endfor %}
64 && true;
65 }
66
67 void setBitDefaults()
68 {
69 {% for field in fields %}
70 reset{{field.property['upper_camel_name']}}();
71 {% endfor %}
72 }
73
74 void inheritFrom(const BaseComputedStyle& inheritParent, IsAtShadowBoundary isAtShadowBoundary = NotAtShadowBoundary);
75
76 // Fields.
77 // TODO(sashab): Remove initialFoo() static methods and update callers to
78 // use resetFoo(), which can be more efficient.
79 {% for field in fields %}
80 // {{field.property['name']}}
81 inline static {{field.type}} initial{{field.property['upper_camel_name']}}() { return {{field.default_value}}; }
82 {{field.type}} {{field.property['lower_camel_name']}}() const { return stati c_cast<{{field.type}}>({{field.name}}); }
83 void set{{field.property['upper_camel_name']}}({{field.type}} v) { {{field.n ame}} = static_cast<unsigned>(v); }
84 inline void reset{{field.property['upper_camel_name']}}() { {{field.name}} = {{default_value(field)}}; }
85
86 {% endfor %}
87 protected:
88 // Storage.
89 {% for field in fields %}
90 unsigned {{field.name}} : {{field.size}}; // {{field.type}}
91 {% endfor %}
92 };
93
94 } // namespace blink
95
96 #endif // BaseComputedStyle_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698