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/