blob: 2571de7d264581e93311af165ad0e82a9f3616a1 [file] [log] [blame]
{% from 'dictionary_impl_common.cc.tmpl' import dictionary_setter_impl with context %}
{% filter format_blink_cpp_source_code %}
{% include 'copyright_block.txt' %}
#ifndef {{header_guard}}
#define {{header_guard}}
{% for filename in header_includes %}
#include "{{filename}}"
{% endfor %}
namespace blink {
{% for decl in header_forward_decls %}
class {{decl}};
{% endfor %}
{# FIXME: Add "final" if this class doesn\'t have subclasses #}
class {{exported}}{{cpp_class}} : public {{parent_cpp_class}} {
public:
static {{cpp_class}}* Create() { return MakeGarbageCollected<{{cpp_class}}>(); }
static {{cpp_class}}* Create(v8::Isolate* isolate) {
return MakeGarbageCollected<{{cpp_class}}>();
}
{{cpp_class}}();
virtual ~{{cpp_class}}();
{% for member in members %}
bool {{member.has_method_name}}() const { return {{member.has_method_expression}}; }
{{member.rvalue_cpp_type}} {{member.getter_name}}() const {
{% if member.nullable_indicator_name and not member.has_explicit_presence %}
DCHECK({{member.nullable_indicator_name}});
{% endif %}
return {{member.getter_expression}};
}
{{member.setter_inline}}void {{member.setter_name}}({{member.rvalue_cpp_type}});
{% if member.null_setter_name %}
{{member.setter_inline}}void {{member.null_setter_name}}();
{% endif %}
{% if member.is_nullable %}
// Migration adapters
// Returns true iff this member has a non-null value. Returns false if the
// value is missing or a null value.
bool {{member.non_null_has_method_name}}() const { return {{member.has_method_expression}}; }
// Returns the value if this member has a non-null value. Call
// |{{member.non_null_has_method_name}}| in advance to check the condition.
{{member.rvalue_cpp_type}} {{member.non_null_getter_name}}() const {
DCHECK({{member.non_null_has_method_name}}());
return {{member.getter_expression}};
}
{% endif %}
{% endfor %}
v8::Local<v8::Value> ToV8Impl(v8::Local<v8::Object>, v8::Isolate*) const override;
void Trace(Visitor*) const override;
private:
{% for member in members if member.nullable_indicator_name %}
bool {{member.nullable_indicator_name}} = false;
{% endfor %}
{% for member in members %}
{{member.member_cpp_type}} {{member.cpp_name}}_;
{% endfor %}
friend class V8{{cpp_class}};
};
{% for member in members if member.setter_inline %}
{{dictionary_setter_impl(member)}}
{% endfor %}
} // namespace blink
#endif // {{header_guard}}
{% endfilter %}{# format_blink_cpp_source_code #}