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

#ifndef TONIC_DART_BUILTIN_H_
#define TONIC_DART_BUILTIN_H_

#include "base/macros.h"
#include "dart/runtime/include/dart_api.h"

namespace tonic {

class DartBuiltin {
 public:
  struct Natives {
    const char* name;
    Dart_NativeFunction function;
    int argument_count;
  };

  DartBuiltin(const Natives* natives, size_t count);
  ~DartBuiltin();

  Dart_NativeFunction Resolver(Dart_Handle name,
                               int argument_count,
                               bool* auto_setup_scope) const;

  const uint8_t* Symbolizer(Dart_NativeFunction native_function) const;

  // Helper around Dart_LookupLibrary.
  static Dart_Handle LookupLibrary(const char* name);

 private:
  const Natives* natives_;
  size_t count_;

  DISALLOW_COPY_AND_ASSIGN(DartBuiltin);
};

}  // namespace tonic

#endif  // TONIC_DART_BUILTIN_H_
