Google V8编程详解附录

时间:2024-04-01 23:02:51

Google V8编程详工具函数

头文件:utils.h

  1. #ifndef UTILS_H_
  2. #define UTILS_H_
  3. #include "v8.h"
  4. #include <iostream>
  5. using namespace v8;
  6. using namespace std;
  7. v8::Handle<v8::String> ReadJS(const char* name);
  8. void printValue(Handle<Value> result);
  9. #endif
  • ReadJS
  1. v8::Handle<v8::String> ReadJS(const char* name) {
  2. FILE* file = fopen(name, "rb");
  3. if (file == NULL) {
  4. return v8::Handle<v8::String>();
  5. }
  6. fseek(file, 0, SEEK_END);
  7. int size = ftell(file);
  8. rewind(file);
  9. char* chars = new char[size + 1];
  10. chars[size] = '\0';
  11. for (int i = 0; i < size;) {
  12. int read = fread(&chars[i], 1, size - i, file);
  13. i += read;
  14. }
  15. fclose(file);
  16. v8::Handle<v8::String> result = v8::String::New(chars, size);
  17. delete[] chars;
  18. return result;
  19. }
  • printValue
  1. void printValue(Handle<Value> result) {
  2. //感谢downmooner兄的提醒,这个String::Utf8Value str(result)的确让这段代码
  3. //南辕北辙
  4. //String::Utf8Value str(result);
  5. // just construct the "result" script
  6. Handle<Script> script = Script::Compile(String::New("result"));
  7. result = script->Run();
  8. cout << *String::Utf8Value(result) << endl;
  9. }

版权申明:
转载文章请注明原文出处,任何用于商业目的,请联系本人:hyman_tan@126.com