// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This file has been auto-generated by {{code_generator}}. DO NOT MODIFY!

#include "config.h"
#include "{{cpp_class}}.h"

{% for filename in cpp_includes %}
#include "{{filename}}"
{% endfor %}

namespace blink {

{# Constructor #}
{{cpp_class}}::{{cpp_class}}()
{
    {% for member in members if member.cpp_default_value %}
    {{member.setter_name}}({{member.cpp_default_value}});
    {% endfor %}
}

void {{cpp_class}}::trace(Visitor* visitor)
{
    {% for member in members if member.is_traceable %}
    visitor->trace(m_{{member.cpp_name}});
    {% endfor %}
}

} // namespace blink
