1 // Copyright 2011 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef V8_NATIVES_H_ 6 #define V8_NATIVES_H_ 7 8 #include "src/vector.h" 9 10 namespace v8 { class StartupData; } // Forward declaration. 11 12 namespace v8 { 13 namespace internal { 14 15 typedef bool (*NativeSourceCallback)(Vector<const char> name, 16 Vector<const char> source, 17 int index); 18 19 enum NativeType { 20 CORE, EXPERIMENTAL, D8, TEST 21 }; 22 23 template <NativeType type> 24 class NativesCollection { 25 public: 26 // Number of built-in scripts. 27 static int GetBuiltinsCount(); 28 // Number of debugger implementation scripts. 29 static int GetDebuggerCount(); 30 31 // These are used to access built-in scripts. The debugger implementation 32 // scripts have an index in the interval [0, GetDebuggerCount()). The 33 // non-debugger scripts have an index in the interval [GetDebuggerCount(), 34 // GetNativesCount()). 35 static int GetIndex(const char* name); 36 static int GetRawScriptsSize(); 37 static Vector<const char> GetRawScriptSource(int index); 38 static Vector<const char> GetScriptName(int index); 39 static Vector<const byte> GetScriptsSource(); 40 static void SetRawScriptsSource(Vector<const char> raw_source); 41 }; 42 43 typedef NativesCollection<CORE> Natives; 44 typedef NativesCollection<EXPERIMENTAL> ExperimentalNatives; 45 46 #ifdef V8_USE_EXTERNAL_STARTUP_DATA 47 // Used for reading the natives at runtime. Implementation in natives-empty.cc 48 void SetNativesFromFile(StartupData* natives_blob); 49 #endif 50 51 } } // namespace v8::internal 52 53 #endif // V8_NATIVES_H_ 54