# HG changeset patch # User Atul Varma # Date 1251178363 25200 # Node ID a2c1db5ece2b7e2f185806495e6a57bda7efbc54 # Parent 96dc1beefc00566958d2ec29ecf1472d3fcca4fc Added a 'filename' member to script objects. diff -r 96dc1beefc00 -r a2c1db5ece2b src/script.cpp --- a/src/script.cpp Mon Aug 24 21:54:20 2009 -0700 +++ b/src/script.cpp Mon Aug 24 22:32:43 2009 -0700 @@ -37,12 +37,15 @@ #include "script.h" #include "utils.h" +#include "structmember.h" +#include "jsdbgapi.h" #include "jsscript.h" static void PYM_JSScriptDealloc(PYM_JSScript *self) { self->script = NULL; + self->filename = NULL; PYM_JSObjectType.tp_dealloc((PyObject *) self); } @@ -74,6 +77,12 @@ (charbufferproc) PYM_charbuffer }; +static PyMemberDef PYM_members[] = { + {"filename", T_STRING, offsetof(PYM_JSScript, filename), READONLY, + "Filename of script."}, + {NULL, NULL, NULL, NULL, NULL} +}; + PyTypeObject PYM_JSScriptType = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ @@ -107,7 +116,7 @@ 0, /* tp_iter */ 0, /* tp_iternext */ 0, /* tp_methods */ - 0, /* tp_members */ + PYM_members, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ @@ -142,6 +151,7 @@ return NULL; object->script = script; + object->filename = JS_GetScriptFilename(context->cx, script); return (PYM_JSScript *) PYM_newJSObject(context, scriptObj, (PYM_JSObject *) object); } diff -r 96dc1beefc00 -r a2c1db5ece2b src/script.h --- a/src/script.h Mon Aug 24 21:54:20 2009 -0700 +++ b/src/script.h Mon Aug 24 22:32:43 2009 -0700 @@ -46,6 +46,7 @@ typedef struct { PYM_JSObject base; JSScript *script; + const char *filename; } PYM_JSScript; extern PyTypeObject PYM_JSScriptType; diff -r 96dc1beefc00 -r a2c1db5ece2b tests/test_pymonkey.py --- a/tests/test_pymonkey.py Mon Aug 24 21:54:20 2009 -0700 +++ b/tests/test_pymonkey.py Mon Aug 24 22:32:43 2009 -0700 @@ -48,10 +48,14 @@ u'SyntaxError: missing ; before statement' ) + def testScriptHasFilenameMember(self): + cx = pymonkey.Runtime().new_context() + script = cx.compile_script('foo', '', 1) + self.assertEqual(script.filename, '') + def testScriptIsExposedAsBuffer(self): rt = pymonkey.Runtime() cx = rt.new_context() - obj = cx.new_object() script = cx.compile_script('foo', '', 1) self.assertTrue(len(buffer(script)) > 0)