rpmcudf-js.c | rpmcudf-js.c | |||
---|---|---|---|---|
skipping to change at line 44 | skipping to change at line 44 | |||
#define rpmcudf_equality NULL | #define rpmcudf_equality NULL | |||
#define rpmcudf_outerobject NULL | #define rpmcudf_outerobject NULL | |||
#define rpmcudf_innerobject NULL | #define rpmcudf_innerobject NULL | |||
#define rpmcudf_iteratorobject NULL | #define rpmcudf_iteratorobject NULL | |||
#define rpmcudf_wrappedobject NULL | #define rpmcudf_wrappedobject NULL | |||
/* --- helpers */ | /* --- helpers */ | |||
/* --- Object methods */ | /* --- Object methods */ | |||
static JSBool | static JSBool | |||
rpmcudf_issolution(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j sval *rval) | rpmcudf_issolution(JSContext *cx, uintN argc, jsval *vp) | |||
{ | { | |||
jsval *argv = JS_ARGV(cx, vp); | ||||
JSObject *obj = JS_THIS_OBJECT(cx, vp); | ||||
void * ptr = JS_GetInstancePrivate(cx, obj, &rpmcudfClass, NULL); | void * ptr = JS_GetInstancePrivate(cx, obj, &rpmcudfClass, NULL); | |||
rpmcudf cudf = ptr; | rpmcudf cudf = ptr; | |||
JSObject *fno = NULL; | JSObject *fno = NULL; | |||
JSBool ok = JS_FALSE; | JSBool ok = JS_FALSE; | |||
_METHOD_DEBUG_ENTRY(_debug); | _METHOD_DEBUG_ENTRY(_debug); | |||
if (!(ok = JS_ConvertArguments(cx, argc, argv, "o", &fno))) | if (!(ok = JS_ConvertArguments(cx, argc, argv, "o", &fno))) | |||
goto exit; | goto exit; | |||
if (fno && JSVAL_IS_STRING(OBJECT_TO_JSVAL(fno))) { | if (fno && JSVAL_IS_STRING(OBJECT_TO_JSVAL(fno))) { | |||
const char * _fn = | const char * _fn = | |||
JS_GetStringBytes(JS_ValueToString(cx, OBJECT_TO_JSVAL(fno)) ); | JS_EncodeString(cx, JS_ValueToString(cx, OBJECT_TO_JSVAL(fno ))); | |||
int _flags = RPMCUDV_CUDF; /* XXX FIXME */ | int _flags = RPMCUDV_CUDF; /* XXX FIXME */ | |||
const char * _av[] = { _fn, NULL }; | const char * _av[] = { _fn, NULL }; | |||
rpmcudf Y = rpmcudfNew(_av, _flags); | rpmcudf Y = rpmcudfNew((char **)_av, _flags); | |||
*rval = (rpmcudfIsSolution(cudf, Y) ? JSVAL_TRUE : JSVAL_FALSE); | *vp = (rpmcudfIsSolution(cudf, Y) ? JSVAL_TRUE : JSVAL_FALSE); | |||
Y = rpmcudfFree(Y); | Y = rpmcudfFree(Y); | |||
_fn = _free(_fn); | ||||
} else | } else | |||
*rval = JSVAL_VOID; | *vp = JSVAL_VOID; | |||
ok = JS_TRUE; | ok = JS_TRUE; | |||
exit: | exit: | |||
return ok; | return ok; | |||
} | } | |||
static JSBool | static JSBool | |||
rpmcudf_print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) | rpmcudf_print(JSContext *cx, uintN argc, jsval *vp) | |||
{ | { | |||
jsval *argv = JS_ARGV(cx, vp); | ||||
JSObject *obj = JS_THIS_OBJECT(cx, vp); | ||||
void * ptr = JS_GetInstancePrivate(cx, obj, &rpmcudfClass, NULL); | void * ptr = JS_GetInstancePrivate(cx, obj, &rpmcudfClass, NULL); | |||
rpmcudf cudf = ptr; | rpmcudf cudf = ptr; | |||
JSBool ok = JS_FALSE; | JSBool ok = JS_FALSE; | |||
_METHOD_DEBUG_ENTRY(_debug); | _METHOD_DEBUG_ENTRY(_debug); | |||
if (cudf && cudf->V.typ == RPMCUDV_CUDFDOC) { | if (cudf && cudf->V.typ == RPMCUDV_CUDFDOC) { | |||
rpmcudfPrintPreamble(cudf); | rpmcudfPrintPreamble(cudf); | |||
rpmcudfPrintRequest(cudf); | rpmcudfPrintRequest(cudf); | |||
rpmcudfPrintUniverse(cudf); | rpmcudfPrintUniverse(cudf); | |||
*rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, rpmiobStr(cudf->iob))) ; | *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, rpmiobStr(cudf->iob))); | |||
(void) rpmiobEmpty(cudf->iob); | (void) rpmiobEmpty(cudf->iob); | |||
} else | } else | |||
*rval = JSVAL_VOID; | *vp = JSVAL_VOID; | |||
ok = JS_TRUE; | ok = JS_TRUE; | |||
return ok; | return ok; | |||
} | } | |||
static JSFunctionSpec rpmcudf_funcs[] = { | static JSFunctionSpec rpmcudf_funcs[] = { | |||
JS_FS("issolution", rpmcudf_issolution, 0,0,0), | JS_FS("issolution", rpmcudf_issolution, 0,0), | |||
JS_FS("print", rpmcudf_print, 0,0,0), | JS_FS("print", rpmcudf_print, 0,0), | |||
JS_FS_END | JS_FS_END | |||
}; | }; | |||
/* --- Object properties */ | /* --- Object properties */ | |||
enum rpmcudf_tinyid { | enum rpmcudf_tinyid { | |||
_DEBUG = -2, | _DEBUG = -2, | |||
_HASPREAMBLE = -3, | _HASPREAMBLE = -3, | |||
_HASREQUEST = -4, | _HASREQUEST = -4, | |||
_ISCONSISTENT = -5, | _ISCONSISTENT = -5, | |||
_INSTALLEDSIZE = -6, | _INSTALLEDSIZE = -6, | |||
skipping to change at line 127 | skipping to change at line 132 | |||
{"isconsistent", _ISCONSISTENT, JSPROP_ENUMERATE, NULL, NULL }, | {"isconsistent", _ISCONSISTENT, JSPROP_ENUMERATE, NULL, NULL }, | |||
{"installedsize", _INSTALLEDSIZE, JSPROP_ENUMERATE, NULL, NULL }, | {"installedsize", _INSTALLEDSIZE, JSPROP_ENUMERATE, NULL, NULL }, | |||
{"universesize", _UNIVERSESIZE, JSPROP_ENUMERATE, NULL, NULL }, | {"universesize", _UNIVERSESIZE, JSPROP_ENUMERATE, NULL, NULL }, | |||
{"preamble", _PREAMBLE, JSPROP_ENUMERATE, NULL, NULL }, | {"preamble", _PREAMBLE, JSPROP_ENUMERATE, NULL, NULL }, | |||
{"request", _REQUEST, JSPROP_ENUMERATE, NULL , NULL}, | {"request", _REQUEST, JSPROP_ENUMERATE, NULL , NULL}, | |||
{"universe", _UNIVERSE, JSPROP_ENUMERATE, NULL, NULL }, | {"universe", _UNIVERSE, JSPROP_ENUMERATE, NULL, NULL }, | |||
{NULL, 0, 0, NULL, NULL} | {NULL, 0, 0, NULL, NULL} | |||
}; | }; | |||
static JSBool | static JSBool | |||
rpmcudf_getprop(JSContext *cx, JSObject *obj, jsval id, jsval *vp) | rpmcudf_getprop(JSContext *cx, JSObject *obj, jsid id, jsval *vp) | |||
{ | { | |||
void * ptr = JS_GetInstancePrivate(cx, obj, &rpmcudfClass, NULL); | void * ptr = JS_GetInstancePrivate(cx, obj, &rpmcudfClass, NULL); | |||
rpmcudf cudf = ptr; | rpmcudf cudf = ptr; | |||
jsint tiny = JSVAL_TO_INT(id); | jsint tiny = JSVAL_TO_INT(id); | |||
/* XXX the class has ptr == NULL, instances have ptr != NULL. */ | /* XXX the class has ptr == NULL, instances have ptr != NULL. */ | |||
if (ptr == NULL) | if (ptr == NULL) | |||
return JS_TRUE; | return JS_TRUE; | |||
switch (tiny) { | switch (tiny) { | |||
skipping to change at line 188 | skipping to change at line 193 | |||
*vp = JSVAL_VOID; | *vp = JSVAL_VOID; | |||
break; | break; | |||
default: | default: | |||
break; | break; | |||
} | } | |||
return JS_TRUE; | return JS_TRUE; | |||
} | } | |||
static JSBool | static JSBool | |||
rpmcudf_setprop(JSContext *cx, JSObject *obj, jsval id, jsval *vp) | rpmcudf_setprop(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp) | |||
{ | { | |||
void * ptr = JS_GetInstancePrivate(cx, obj, &rpmcudfClass, NULL); | void * ptr = JS_GetInstancePrivate(cx, obj, &rpmcudfClass, NULL); | |||
jsint tiny = JSVAL_TO_INT(id); | jsint tiny = JSVAL_TO_INT(id); | |||
/* XXX the class has ptr == NULL, instances have ptr != NULL. */ | /* XXX the class has ptr == NULL, instances have ptr != NULL. */ | |||
if (ptr == NULL) | if (ptr == NULL) | |||
return JS_TRUE; | return JS_TRUE; | |||
switch (tiny) { | switch (tiny) { | |||
case _DEBUG: | case _DEBUG: | |||
skipping to change at line 210 | skipping to change at line 215 | |||
break; | break; | |||
break; | break; | |||
default: | default: | |||
break; | break; | |||
} | } | |||
return JS_TRUE; | return JS_TRUE; | |||
} | } | |||
static JSBool | static JSBool | |||
rpmcudf_resolve(JSContext *cx, JSObject *obj, jsval id, uintN flags, | rpmcudf_resolve(JSContext *cx, JSObject *obj, jsid id, uintN flags, | |||
JSObject **objp) | JSObject **objp) | |||
{ | { | |||
void * ptr = JS_GetInstancePrivate(cx, obj, &rpmcudfClass, NULL); | void * ptr = JS_GetInstancePrivate(cx, obj, &rpmcudfClass, NULL); | |||
_RESOLVE_DEBUG_ENTRY(_debug < 0); | _RESOLVE_DEBUG_ENTRY(_debug < 0); | |||
if ((flags & JSRESOLVE_ASSIGNING) | if ((flags & JSRESOLVE_ASSIGNING) | |||
|| (ptr == NULL)) { /* don't resolve to parent prototypes objects. */ | || (ptr == NULL)) { /* don't resolve to parent prototypes objects. */ | |||
*objp = NULL; | *objp = NULL; | |||
goto exit; | goto exit; | |||
skipping to change at line 238 | skipping to change at line 243 | |||
static JSBool | static JSBool | |||
rpmcudf_enumerate(JSContext *cx, JSObject *obj, JSIterateOp op, | rpmcudf_enumerate(JSContext *cx, JSObject *obj, JSIterateOp op, | |||
jsval *statep, jsid *idp) | jsval *statep, jsid *idp) | |||
{ | { | |||
_ENUMERATE_DEBUG_ENTRY(_debug < 0); | _ENUMERATE_DEBUG_ENTRY(_debug < 0); | |||
switch (op) { | switch (op) { | |||
case JSENUMERATE_INIT: | case JSENUMERATE_INIT: | |||
case JSENUMERATE_INIT_ALL: | ||||
*statep = JSVAL_VOID; | *statep = JSVAL_VOID; | |||
if (idp) | if (idp) | |||
*idp = JSVAL_ZERO; | *idp = JSVAL_ZERO; | |||
break; | break; | |||
case JSENUMERATE_NEXT: | case JSENUMERATE_NEXT: | |||
*statep = JSVAL_VOID; | *statep = JSVAL_VOID; | |||
if (*idp != JSVAL_VOID) | if (!JSID_IS_VOID(*idp)) | |||
break; | break; | |||
/*@fallthrough@*/ | /*@fallthrough@*/ | |||
case JSENUMERATE_DESTROY: | case JSENUMERATE_DESTROY: | |||
*statep = JSVAL_NULL; | *statep = JSVAL_NULL; | |||
break; | break; | |||
} | } | |||
return JS_TRUE; | return JS_TRUE; | |||
} | } | |||
/* --- Object ctors/dtors */ | /* --- Object ctors/dtors */ | |||
static rpmcudf | static rpmcudf | |||
rpmcudf_init(JSContext *cx, JSObject *obj, JSObject *fno, int _flags) | rpmcudf_init(JSContext *cx, JSObject *obj, JSObject *fno, int _flags) | |||
{ | { | |||
const char * fn = NULL; | const char * fn = NULL; | |||
rpmcudf cudf = NULL; | rpmcudf cudf = NULL; | |||
if (fno && JSVAL_IS_STRING(OBJECT_TO_JSVAL(fno))) | if (fno && JSVAL_IS_STRING(OBJECT_TO_JSVAL(fno))) | |||
fn = JS_GetStringBytes(JS_ValueToString(cx, OBJECT_TO_JSVAL(fno))); | fn = JS_EncodeString(cx, JS_ValueToString(cx, OBJECT_TO_JSVAL(fno))) ; | |||
switch (_flags) { | switch (_flags) { | |||
default: _flags = RPMCUDV_CUDF; break; | default: _flags = RPMCUDV_CUDF; break; | |||
case RPMCUDV_CUDFDOC: | case RPMCUDV_CUDFDOC: | |||
case RPMCUDV_CUDF: | case RPMCUDV_CUDF: | |||
break; | break; | |||
} | } | |||
{ const char *_av[] = { fn, NULL }; | { const char *_av[] = { fn, NULL }; | |||
cudf = rpmcudfNew(_av, _flags); | cudf = rpmcudfNew((char **)_av, _flags); | |||
} | } | |||
if (!JS_SetPrivate(cx, obj, (void *)cudf)) { | if (!JS_SetPrivate(cx, obj, (void *)cudf)) { | |||
/* XXX error msg */ | /* XXX error msg */ | |||
cudf = rpmcudfFree(cudf); | cudf = rpmcudfFree(cudf); | |||
} | } | |||
if (_debug) | if (_debug) | |||
fprintf(stderr, "<== %s(%p,%p, %p, %d) cudf %p fn %s\n", __FUNCTION__, cx, obj, fno, _flags, cudf, fn); | fprintf(stderr, "<== %s(%p,%p, %p, %d) cudf %p fn %s\n", __FUNCTION__, cx, obj, fno, _flags, cudf, fn); | |||
fn = _free(fn); | ||||
return cudf; | return cudf; | |||
} | } | |||
static void | static void | |||
rpmcudf_dtor(JSContext *cx, JSObject *obj) | rpmcudf_dtor(JSContext *cx, JSObject *obj) | |||
{ | { | |||
void * ptr = JS_GetInstancePrivate(cx, obj, &rpmcudfClass, NULL); | void * ptr = JS_GetInstancePrivate(cx, obj, &rpmcudfClass, NULL); | |||
rpmcudf cudf = ptr; | rpmcudf cudf = ptr; | |||
_DTOR_DEBUG_ENTRY(_debug); | _DTOR_DEBUG_ENTRY(_debug); | |||
cudf = rpmcudfFree(cudf); | cudf = rpmcudfFree(cudf); | |||
} | } | |||
static JSBool | static JSBool | |||
rpmcudf_ctor(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * rval) | rpmcudf_ctor(JSContext *cx, uintN argc, jsval *vp) | |||
{ | { | |||
jsval *argv = JS_ARGV(cx, vp); | ||||
JSObject *obj = JS_NewObjectForConstructor(cx, vp); | ||||
JSBool ok = JS_FALSE; | JSBool ok = JS_FALSE; | |||
JSObject *fno = NULL; | JSObject *fno = NULL; | |||
int _flags = 0; | int _flags = 0; | |||
_CTOR_DEBUG_ENTRY(_debug); | _CTOR_DEBUG_ENTRY(_debug); | |||
if (!(ok = JS_ConvertArguments(cx, argc, argv, "/oi", &fno, &_flags))) | if (!(ok = JS_ConvertArguments(cx, argc, argv, "/oi", &fno, &_flags))) | |||
goto exit; | goto exit; | |||
if (JS_IsConstructing(cx)) { | if (JS_IsConstructing(cx, vp)) { | |||
(void) rpmcudf_init(cx, obj, fno, _flags); | (void) rpmcudf_init(cx, obj, fno, _flags); | |||
} else { | } else { | |||
if ((obj = JS_NewObject(cx, &rpmcudfClass, NULL, NULL)) == NULL) | if ((obj = JS_NewObject(cx, &rpmcudfClass, NULL, NULL)) == NULL) | |||
goto exit; | goto exit; | |||
*rval = OBJECT_TO_JSVAL(obj); | *vp = OBJECT_TO_JSVAL(obj); | |||
} | } | |||
ok = JS_TRUE; | ok = JS_TRUE; | |||
exit: | exit: | |||
return ok; | return ok; | |||
} | } | |||
/* --- Class initialization */ | /* --- Class initialization */ | |||
JSClass rpmcudfClass = { | JSClass rpmcudfClass = { | |||
"Cudf", JSCLASS_NEW_RESOLVE | JSCLASS_NEW_ENUMERATE | JSCLASS_HAS_PRIVA TE, | "Cudf", JSCLASS_NEW_RESOLVE | JSCLASS_NEW_ENUMERATE | JSCLASS_HAS_PRIVA TE, | |||
End of changes. 23 change blocks. | ||||
19 lines changed or deleted | 29 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |