// Copyright 2015 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.

// WARNING: Do not edit - generated code.

#include "gen/sky/bindings/DartGlobal.h"

{% for interface in interfaces %}
#include "gen/sky/bindings/Dart{{interface.name}}.h"
{% endfor %}

namespace blink {

Dart_NativeFunction skySnapshotResolver(Dart_Handle name, int argumentCount, bool* autoSetupScope)
{
{% for interface in interfaces %}
        {% if interface.has_resolver %}
    if (Dart_NativeFunction func = Dart{{interface.name}}::Resolver(name, argumentCount, autoSetupScope))
        return func;
        {% endif %}
{% endfor %}
    return 0;
}

const uint8_t* skySnapshotSymbolizer(Dart_NativeFunction nf)
{
{% for interface in interfaces %}
        {% if interface.has_resolver %}
    if (const uint8_t* r = Dart{{interface.name}}::Symbolizer(nf))
        return r;
        {% endif %}
{% endfor %}
    return 0;
}

} // namespace blink
