blob: d916167d5d9a7cd585edda62dedb0eb863458faf [file] [log] [blame]
{######################################}
{% macro install_constants() %}
{% if has_constant_configuration %}
{# Normal constants #}
static const V8DOMConfiguration::ConstantConfiguration {{v8_class}}Constants[] = {
{% for constant in constants if not constant.runtime_enabled_function %}
{% if constant.idl_type in ('Double', 'Float') %}
{% set value = '0, %s, 0' % constant.value %}
{% elif constant.idl_type == 'String' %}
{% set value = '0, 0, %s' % constant.value %}
{% else %}
{# 'Short', 'Long' etc. #}
{% set value = '%s, 0, 0' % constant.value %}
{% endif %}
{"{{constant.name}}", {{value}}, V8DOMConfiguration::ConstantType{{constant.idl_type}}},
{% endfor %}
};
V8DOMConfiguration::installConstants(functionTemplate, prototypeTemplate, {{v8_class}}Constants, WTF_ARRAY_LENGTH({{v8_class}}Constants), isolate);
{% endif %}
{# Runtime-enabled constants #}
{% for constant in constants if constant.runtime_enabled_function %}
if ({{constant.runtime_enabled_function}}()) {
{% if constant.idl_type in ('Double', 'Float') %}
{% set value = '0, %s, 0' % constant.value %}
{% elif constant.idl_type == 'String' %}
{% set value = '0, 0, %s' % constant.value %}
{% else %}
{# 'Short', 'Long' etc. #}
{% set value = '%s, 0, 0' % constant.value %}
{% endif %}
static const V8DOMConfiguration::ConstantConfiguration constantConfiguration = {"{{constant.name}}", {{value}}, V8DOMConfiguration::ConstantType{{constant.idl_type}}};
V8DOMConfiguration::installConstants(functionTemplate, prototypeTemplate, &constantConfiguration, 1, isolate);
}
{% endfor %}
{# Check constants #}
{% if not do_not_check_constants %}
{% for constant in constants %}
{% if constant.idl_type not in ('Double', 'Float', 'String') %}
{% set constant_cpp_class = constant.cpp_class or cpp_class %}
COMPILE_ASSERT({{constant.value}} == {{constant_cpp_class}}::{{constant.reflected_name}}, TheValueOf{{cpp_class}}_{{constant.reflected_name}}DoesntMatchWithImplementation);
{% endif %}
{% endfor %}
{% endif %}
{% endmacro %}