« アラートウィンドウを閉じると終了 | メイン | SpiderMonkeyでJavaScriptの関数をコンパイル »

2005年05月11日

SmartScrollプラグイン開発:: SpiderMonkeyのサンプル

    

サンプルソース。
jsshellとjs/src/README.htmlAPI リファレンスを参考に作ってみた。
単に動かすだけなら、かなり簡単かも。
※動くことと、実行結果が正しいことは確認したけど、下記のソースコードで問題ないかどうかは知りません。ま、今日触り始めたばかりですから。

#define XP_WIN
#define JSFILE

#include "jsstddef.h"
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "jstypes.h"
#include "jsarena.h"
#include "jsutil.h"
#include "jsprf.h"
#include "jsapi.h"
#include "jsatom.h"
#include "jscntxt.h"
#include "jsdbgapi.h"
#include "jsemit.h"
#include "jsfun.h"
#include "jsgc.h"
#include "jslock.h"
#include "jsobj.h"
#include "jsparse.h"
#include "jsscope.h"
#include "jsscript.h"

global_class = { "global", 0, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub };

int main(int argc, char* argv[])
{
  JSRuntime *rt;
  JSContext *cx;
  JSObject *globalObj;
  jsval rval;
  char *source = "5.0 * 3";
  rt = JS_NewRuntime(64L * 1024L * 1024L);
  if( rt == NULL )
    return 1;
  cx = JS_NewContext(rt, 8192);
  if( cx == NULL )
    return 1;
  globalObj = JS_NewObject(cx, &global_class, 0, 0);
  JS_SetGlobalObject(cx, globalObj);
  if( JS_EvaluateScript(cx, globalObj, source, strlen(source), "sample.js", 0, &rval) )
  {
    jsdouble d;
    if( JS_ValueToNumber(cx, rval, &d) )
      printf( "%lf\n", d );
  }
  JS_DestroyContext(cx);
  JS_DestroyRuntime(rt);
  JS_ShutDown();
  return 0;
}



投稿者 Takenori : 2005年05月11日 22:25




comments powered by Disqus
Total : Today : Yesterday : なかのひと