// 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 "sky/engine/config.h"
#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
