| {% from 'templates/macros.tmpl' import license, source_files_for_generated_file %} |
| {{license()}} |
| |
| {{source_files_for_generated_file(template_file, input_files)}} |
| |
| #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CSS_VALUE_ID_MAPPINGS_GENERATED_H_ |
| #define THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CSS_VALUE_ID_MAPPINGS_GENERATED_H_ |
| |
| #include "base/logging.h" |
| #include "third_party/blink/renderer/core/css_value_keywords.h" |
| #include "third_party/blink/renderer/core/style/computed_style_base_constants.h" |
| {% for path in include_paths %} |
| #include "{{path}}" |
| {% endfor %} |
| |
| namespace blink { |
| |
| // Do not use these functions directly, use the non-generated versions |
| // in CSSValueMappings.h |
| |
| namespace detail { |
| |
| template <class T> |
| T cssValueIDToPlatformEnumGenerated(CSSValueID); |
| |
| {% for enum_name, mapping in mappings.items() %} |
| {% if 'segment' not in mapping %} |
| template <> |
| inline {{enum_name}} cssValueIDToPlatformEnumGenerated(CSSValueID v) { |
| switch (v) { |
| {% for cs_value, css_value in mapping['mapping']: %} |
| case {{css_value}}: |
| return {{enum_name}}::{{cs_value}}; |
| {% endfor %} |
| default: |
| NOTREACHED(); |
| return {{mapping['default_value']}}; |
| } |
| } |
| |
| inline CSSValueID platformEnumToCSSValueIDGenerated({{enum_name}} v) { |
| switch (v) { |
| {% for cs_value, css_value in mapping['mapping']: %} |
| case {{enum_name}}::{{cs_value}}: |
| return {{css_value}}; |
| {% endfor %} |
| default: |
| NOTREACHED(); |
| return CSSValueNone; |
| } |
| } |
| {% else %} |
| |
| template <> |
| inline {{enum_name}} cssValueIDToPlatformEnumGenerated(CSSValueID v) { |
| {% if mapping['mapping'] | length > mapping.longest_segment_length %} |
| switch (v) { |
| {% for cs_value, cs_num, css_value, css_num in mapping['mapping']: %} |
| {% if css_num < mapping.start_segment[3] or css_num > mapping.end_segment[3] %} |
| case {{css_value}}: |
| return {{enum_name}}::{{cs_value}}; |
| {% endif %} |
| {% endfor %} |
| default: |
| DCHECK_GE(v, {{mapping.start_segment[2]}}); |
| DCHECK_LE(v, {{mapping.end_segment[2]}}); |
| return static_cast<{{enum_name}}>(v - {{mapping.start_segment[2]}} + static_cast<int>({{enum_name}}::{{mapping.start_segment[0]}})); |
| } |
| {% else %} |
| DCHECK_GE(v, {{mapping.start_segment[2]}}); |
| DCHECK_LE(v, {{mapping.end_segment[2]}}); |
| return static_cast<{{enum_name}}>(v - {{mapping.start_segment[2]}} + static_cast<int>({{enum_name}}::{{mapping.start_segment[0]}})); |
| {% endif %} |
| } |
| |
| inline CSSValueID platformEnumToCSSValueIDGenerated({{enum_name}} v) { |
| {% if mapping['mapping'] | length > mapping.longest_segment_length %} |
| switch (v) { |
| {% for cs_value, cs_num, css_value, css_num in mapping['mapping']: %} |
| {% if cs_num < mapping.start_segment[1] or cs_num > mapping.end_segment[1] %} |
| case {{enum_name}}::{{cs_value}}: |
| return {{css_value}}; |
| {% endif %} |
| {% endfor %} |
| default: |
| DCHECK_GE(v, {{enum_name}}::{{mapping.start_segment[0]}}); |
| DCHECK_LE(v, {{enum_name}}::{{mapping.end_segment[0]}}); |
| return static_cast<CSSValueID>(static_cast<int>(v) - static_cast<int>({{enum_name}}::{{mapping.start_segment[0]}}) + static_cast<int>({{mapping.start_segment[2]}})); |
| } |
| {% else %} |
| DCHECK_GE(v, {{enum_name}}::{{mapping.start_segment[0]}}); |
| DCHECK_LE(v, {{enum_name}}::{{mapping.end_segment[0]}}); |
| return static_cast<CSSValueID>(static_cast<int>(v) - static_cast<int>({{enum_name}}::{{mapping.start_segment[0]}}) + static_cast<int>({{mapping.start_segment[2]}})); |
| {% endif %} |
| } |
| |
| {% endif %} |
| {% endfor %} |
| } // namespace detail |
| |
| } // namespace blink |
| |
| #endif // THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CSS_VALUE_ID_MAPPINGS_GENERATED_H_ |