Portál AbcLinuxu, 3. listopadu 2025 00:59
#include <stdio.h>
#include <string.h>
#define XP_UNIX
#include <mozjs/jsapi.h>
int main(void) {
// premenne
JSRuntime *rt;
JSContext *cx;
JSObject *global;
JSClass global_class = {"global",0,
JS_PropertyStub,JS_PropertyStub,JS_PropertyStub,JS_PropertyStub,
JS_EnumerateStub,JS_ResolveStub,JS_ConvertStub,JS_FinalizeStub};
// inicializacia
rt = JS_NewRuntime(0x100000); // jeden runtime na kazdy proces
cx = JS_NewContext(rt, 0x1000); // jeden kontext na kazdy thread
global = JS_NewObject(cx, &global_class, NULL, NULL); // globalny objekt pre kazdy kontext
JS_InitStandardClasses(cx, global); // standardne triedy (Date,...)
// samotny skript - faktorial 5
char *script = "(function fact(n){if (n <= 1) return 1; return n * fact(n-1)})(5)";
char *filename;
int lineno;
jsval rval;
JSString *str;
JSBool ok;
// spustime
ok = JS_EvaluateScript(cx, global, script, strlen(script),
filename, lineno, &rval);
// navratova hodnota
str = JS_ValueToString(cx, rval);
printf("script result: %s\n", JS_GetStringBytes(str));
return 0;
}
Kompilacia a spustenie
$ gcc -lmozjs -ggdb -o pokus pokus.c $ ./pokus script result: 120
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.