// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. #ifndef BIN_BUILTIN_H_ #define BIN_BUILTIN_H_ #include #include #include "include/dart_api.h" #include "platform/assert.h" #include "platform/globals.h" #define FUNCTION_NAME(name) Builtin_##name #define REGISTER_FUNCTION(name, count) \ { ""#name, FUNCTION_NAME(name), count }, #define DECLARE_FUNCTION(name, count) \ extern void FUNCTION_NAME(name)(Dart_NativeArguments args); class Builtin { public: // Note: Changes to this enum should be accompanied with changes to // the builtin_libraries_ array in builtin.cc and builtin_nolib.cc. enum BuiltinLibraryId { kBuiltinLibrary = 0, kJsonLibrary, kUriLibrary, kCryptoLibrary, kIOLibrary, kUtfLibrary, kInvalidLibrary, }; static Dart_Handle Source(BuiltinLibraryId id); static void SetNativeResolver(BuiltinLibraryId id); static Dart_Handle LoadAndCheckLibrary(BuiltinLibraryId id); static void PrintString(FILE* out, Dart_Handle object); private: static Dart_NativeFunction NativeLookup(Dart_Handle name, int argument_count); static Dart_NativeFunction BuiltinNativeLookup(Dart_Handle name, int argument_count); static const char async_source_[]; static const char builtin_source_[]; static const char crypto_source_[]; static const char io_source_[]; static const char io_patch_[]; static const char json_source_[]; static const char uri_source_[]; static const char utf_source_[]; static const char web_source_[]; typedef struct { const char* url_; const char* source_; const char* patch_url_; const char* patch_source_; bool has_natives_; } builtin_lib_props; static builtin_lib_props builtin_libraries_[]; DISALLOW_ALLOCATION(); DISALLOW_IMPLICIT_CONSTRUCTORS(Builtin); }; #endif // BIN_BUILTIN_H_