blob: 66d484f7f3cc3a2aebdf80d3ab0bd405f4eb9d7f [file] [log] [blame]
{% 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_