chromium/third_party/blink/renderer/build/scripts/templates/fields/derived_flag.tmpl

{% import 'templates/fields/base.tmpl' as base %}
{% from 'templates/fields/field.tmpl' import getter_method_name, setter_expression, bitfield_prefix %}
{% from 'templates/macros.tmpl' import print_if %}

{% macro decl_public_methods(field) %}
{% if not field.builder and field.getter_visibility == 'public' %}
bool CORE_EXPORT {{getter_method_name(field)}}() const;
{% endif %}
{% endmacro %}

{% macro decl_protected_methods(field) -%}
{% if not field.builder and field.getter_visibility == 'protected' %}
bool CORE_EXPORT {{getter_method_name(field)}}() const;
{% endif %}
{%- endmacro %}

{% macro define_impl(field, classname) -%}
bool {{classname}}::{{getter_method_name(field)}}() const {
  {% set raw_field = bitfield_prefix() + field.name %}
  {# Avoid field.getter_expression, because that macro calls this function
     for derived flags. Note that derived flags are required to be top-level
     fields of ComputedStyle. #}
  if (!{{raw_field}}) {
    {{raw_field}} = 0b10 | (static_cast<unsigned>(static_cast<const ComputedStyle*>(this)->{{field.derived_from}}()) & 1);
  }
  return {{raw_field}} & 1;
}
{%- endmacro %}

{% macro reset_expression(field) -%}
{% set raw_field = bitfield_prefix() + field.name %}
{{raw_field}} = 0;
{%- endmacro %}