Bug 538324 - Move ctypes into js/src. Part 6: Add ctypes to JSAPI. r=sayrer

This commit is contained in:
Dan Witte 2010-04-02 13:07:41 -07:00
Родитель 891c9f8bd3
Коммит 5f94338df4
2 изменённых файлов: 42 добавлений и 0 удалений

Просмотреть файл

@ -428,6 +428,12 @@ static JSFunctionSpec sUInt64Functions[] = {
JS_FS_END
};
static JSFunctionSpec sModuleFunctions[] = {
JS_FN("open", Library::Open, 1, CTYPESFN_FLAGS),
JS_FN("cast", CData::Cast, 2, CTYPESFN_FLAGS),
JS_FS_END
};
static inline bool FloatIsFinite(jsdouble f) {
#ifdef WIN32
return _finite(f);
@ -882,6 +888,33 @@ InitTypeClasses(JSContext* cx, JSObject* parent)
return true;
}
JS_BEGIN_EXTERN_C
JS_PUBLIC_API(JSBool)
JS_InitCTypesClass(JSContext* cx, JSObject* global)
{
// attach ctypes property to global object
JSObject* ctypes = JS_NewObject(cx, NULL, NULL, NULL);
if (!ctypes)
return false;
if (!JS_DefineProperty(cx, global, "ctypes", OBJECT_TO_JSVAL(ctypes),
NULL, NULL, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT))
return false;
if (!InitTypeClasses(cx, ctypes))
return false;
// attach API functions
if (!JS_DefineFunctions(cx, ctypes, sModuleFunctions))
return false;
// Seal the ctypes object, to prevent modification.
return JS_SealObject(cx, ctypes, JS_FALSE);
}
JS_END_EXTERN_C
/*******************************************************************************
** Type conversion functions
*******************************************************************************/

Просмотреть файл

@ -823,6 +823,15 @@ JS_GetScopeChain(JSContext *cx);
extern JS_PUBLIC_API(JSObject *)
JS_GetGlobalForObject(JSContext *cx, JSObject *obj);
#ifdef JS_HAS_CTYPES
/*
* Initialize the 'ctypes' object on a global variable 'obj'. The 'ctypes'
* object will be sealed.
*/
extern JS_PUBLIC_API(JSBool)
JS_InitCTypesClass(JSContext *cx, JSObject *global);
#endif
/*
* Macros to hide interpreter stack layout details from a JSFastNative using
* its jsval *vp parameter. The stack layout underlying invocation can't change