Google V8编程详解附录

Google V8编程详工具函数

头文件:utils.h

#ifndef UTILS_H_
#define UTILS_H_
#include "v8.h"
#include <iostream>
using namespace v8;
using namespace std;

v8::Handle<v8::String> ReadJS(const char* name);
void printValue(Handle<Value> result);
#endif
  • ReadJS
v8::Handle<v8::String> ReadJS(const char* name) {

        FILE* file = fopen(name, "rb");

        if (file == NULL) {
                return v8::Handle<v8::String>();
        }

        fseek(file, 0, SEEK_END);
        int size = ftell(file);
        rewind(file);

        char* chars = new char[size + 1];
        chars[size] = '\0';

        for (int i = 0; i < size;) {
                int read = fread(&chars[i], 1, size - i, file);
                i += read;
        }

        fclose(file);

        v8::Handle<v8::String> result = v8::String::New(chars, size);
        delete[] chars;
        return result;
}
  • printValue
void printValue(Handle<Value> result) {
	//感谢downmooner兄的提醒,这个String::Utf8Value str(result)的确让这段代码
	//南辕北辙
	//String::Utf8Value str(result);

	// just construct the "result" script
	Handle<Script> script = Script::Compile(String::New("result"));
	result = script->Run();
	cout << *String::Utf8Value(result) << endl;
}

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

时间: 2024-11-03 04:04:36

Google V8编程详解附录的相关文章

Google V8编程详解(五)JS调用C++

最近由于忙着解决个人单身的问题,时隔这么久才更新第五章. 上一章主要讲了Google V8的Context概念.那么其实Google V8的基本概念还有FunctionTemplate, ObjectTemplate等比较重要的基本概念,这些概念将在后续章节中进行渗透. 本章主要来讲讲如何通过V8来实现JS调用C++.JS调用C++,分为JS调用C++函数(全局),和调用C++类. JS调用C++函数 JS调用C++函数,就是通过FunctionTemplate和ObjectTemplate进行

Google V8编程详解(四)Context

上一章,比较略提了下V8的Context.本章将详细的讲解下Context的概念以及用法. Context Context是V8中一个非常重要的类,理解起来就一句话:JavaScript的执行环境.Context中包了JavaScript内建函数.对象等.所以,通过Context::New出来的Context都是一个全新的干净的JavaScript执行环境,切其他JavaScript环境的更改不影响New出来的Context的JavaScript执行环境,例如:修改JavaScript glob

Google V8编程详解(三)Handle &amp;amp; HandleScope

上一章简单的演示了一个Helloworld Demo.里面涉及到了V8的一些基本类型和概念,本章将围绕这个Demo对V8的基本类型和相关概念进行讲解. 这里还是先把Demo贴出来便于后面分析: #include <v8.h> using namespace v8; int main(int argc, char* argv[]) { // Create a stack-allocated handle scope. HandleScope handle_scope; // Create a n

Google V8编程详解(序)Cloud App

         应用程序发展到今天,应用程序的概念也在不断地发生着变化,WiKi的解释是这样的:"应用程序指为完成某项或多项特定工作的计算机程序".这里所指的应用程序在软件行的今天,绝大多数指的是需要经过下载安装在本定机器上运行的程序,称之为本地应用.而目前国内很多IT公司都在部署自己的移动互联网战略,主推Cloud App云应用,如阿里云OS.百度云应用.Cloud App正在形成一种新的应用程序形式,即不需要安装即可使用的程序.体现了Cloud App热部署的特点,这也是JS的特

Google V8编程详解(二)HelloWorld

上一章讲到了V8的编译和安装,这一章开始从一个demo着手. 这里选用了官方文档的一个非常简洁的HelloWorld.cc,代码如下: #include <v8.h> using namespace v8; int main(int argc, char* argv[]) { // Create a stack-allocated handle scope. HandleScope handle_scope; // Create a new context. Persistent<Con

Google V8编程详解(一)V8的编译安装(Ubuntu)

V8的编译比较简单,需要同时安装git和svn. 下载V8源码: git clone git://github.com/v8/v8.git v8 && cd v8 切换到最新版本: git pull --rebase origin master 安装依赖: make dependencies 编译: make native mode=debug library=shared snapshot=on 编译后库文件会在v8/out/ia32.release路径下 V8的Makefile不支持m

Android 手势操作编程详解_Android

      手势操作在我们使用智能设备的过程中奉献了不一样的体验.Android开发中必然会进行手势操作方面的编程.那么它的原理是怎样的呢?我们如何进行手势操作编程呢?        手势操作原理        首先,在Android系统中,每一次手势交互都会依照以下顺序执行.        1. 接触接触屏一刹那,触发一个MotionEvent事件.        2. 该事件被OnTouchListener监听,在其onTouch()方法里获得该MotionEvent对象.        3

PHP面向对象编程详解:类和对象

PHP面向对象编程详解:类和对象 从OOP的视角看,不应区分语言.无论是C++.无论是Java.无论是.net还有更多面向对象的语言,只要你了解了OO的真谛,便可以跨越语言,让你的思想轻松的跳跃.便没有对于Java..net.PHP 之间谁强谁弱的争执了. 希望这个介绍PHP5面向对象编程(OOP)的资料能让初学者受益,能让更多的PHPer开始转向OO的编程过程. 相对PHP4,PHP5在面向对象方面改变了很多.我们将只介绍PHP5环境下的面向对象.而我们必须改变自己来跟随PHP5的发展.如果代

Python的装饰器模式与面向切面编程详解

  这篇文章主要介绍了Python的装饰器模式与面向切面编程详解,概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能,本文详细了装饰器模式的方方面面,然后引出面向切面编程知识,需要的朋友可以参考下 今天来讨论一下装饰器.装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用.概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能. 1