|  | // Copyright (c) 2016, 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 RUNTIME_BIN_LOADER_H_ | 
|  | #define RUNTIME_BIN_LOADER_H_ | 
|  |  | 
|  | #include "bin/isolate_data.h" | 
|  | #include "bin/thread.h" | 
|  | #include "include/dart_api.h" | 
|  | #include "include/dart_native_api.h" | 
|  | #include "platform/assert.h" | 
|  | #include "platform/globals.h" | 
|  |  | 
|  | namespace dart { | 
|  | namespace bin { | 
|  |  | 
|  | class Loader { | 
|  | public: | 
|  | static Dart_Handle InitForSnapshot(const char* snapshot_uri, | 
|  | IsolateData* isolate_data); | 
|  |  | 
|  | // A static tag handler that hides all usage of a loader for an isolate. | 
|  | static Dart_Handle LibraryTagHandler(Dart_LibraryTag tag, | 
|  | Dart_Handle library, | 
|  | Dart_Handle url); | 
|  | static Dart_Handle DeferredLoadHandler(intptr_t loading_unit_id); | 
|  |  | 
|  | static void InitOnce(); | 
|  |  | 
|  | private: | 
|  | static Dart_Handle Init(const char* packages_file, | 
|  | const char* working_directory, | 
|  | const char* root_script_uri); | 
|  |  | 
|  | static Dart_Handle LoadImportExtension(const char* url_string, | 
|  | Dart_Handle library); | 
|  |  | 
|  | DISALLOW_ALLOCATION(); | 
|  | DISALLOW_IMPLICIT_CONSTRUCTORS(Loader); | 
|  | }; | 
|  |  | 
|  | }  // namespace bin | 
|  | }  // namespace dart | 
|  |  | 
|  | #endif  // RUNTIME_BIN_LOADER_H_ |