From: <br...@us...> - 2012-09-01 05:48:16
|
Revision: 4315 http://openvrml.svn.sourceforge.net/openvrml/?rev=4315&view=rev Author: braden Date: 2012-09-01 05:48:09 +0000 (Sat, 01 Sep 2012) Log Message: ----------- XULRunner 15.0 removes JSVAL_IS_OBJECT. Modified Paths: -------------- trunk/ChangeLog trunk/configure.ac trunk/src/script/javascript.cpp Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2012-08-19 05:25:12 UTC (rev 4314) +++ trunk/ChangeLog 2012-09-01 05:48:09 UTC (rev 4315) @@ -1,3 +1,10 @@ +2012-09-01 Braden McDaniel <br...@en...> + + XULRunner 15.0 removes JSVAL_IS_OBJECT. + + * configure.ac + * src/script/javascript.cpp + 2012-08-19 Braden McDaniel <br...@en...> XULRunner 14.0 replaces the JSContext* argument to JSFinalizeOp Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2012-08-19 05:25:12 UTC (rev 4314) +++ trunk/configure.ac 2012-09-01 05:48:09 UTC (rev 4315) @@ -293,12 +293,15 @@ [ov_cv_js_has_finalizestub=no ov_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$JS_CFLAGS $CPPFLAGS" +ov_save_LDFLAGS="$LDFLAGS" +LDFLAGS="$JS_LIBS $LDFLAGS" AC_LANG_ASSERT([C]) AC_LINK_IFELSE([AC_LANG_PROGRAM( [[#include <jsapi.h>]], [[JS_FinalizeStub(0, 0)]])], [ov_cv_js_has_finalizestub=yes]) CPPFLAGS=$ov_save_CPPFLAGS +LDFLAGS=$ov_save_LDFLAGS ]) AS_IF([test X$ov_cv_js_has_finalizestub = Xyes], [AC_DEFINE([OPENVRML_JS_HAS_FINALIZESTUB], [1], @@ -363,6 +366,28 @@ [Defined if JS_GetParent does not take a JSContext argument])]) # +# XULRunner 15.0 removes JSVAL_IS_OBJECT. +# +AC_CACHE_CHECK([whether SpiderMonkey has JSVAL_IS_OBJECT], +[ov_cv_js_has_jsval_is_object], +[ov_cv_js_has_jsval_is_object=no +ov_save_CPPFLAGS=$CPPFLAGS +CPPFLAGS="$JS_CFLAGS $CPPFLAGS" +ov_save_LDFLAGS="$LDFLAGS" +LDFLAGS="$JS_LIBS $LDFLAGS" +AC_LANG_ASSERT([C]) +AC_LINK_IFELSE([AC_LANG_PROGRAM( +[[#include <jsapi.h>]], +[[jsval val; JSVAL_IS_OBJECT(val)]])], +[ov_cv_js_has_jsval_is_object=yes]) +CPPFLAGS=$ov_save_CPPFLAGS +LDFLAGS=$ov_save_LDFLAGS +]) +AS_IF([test X$ov_cv_js_has_jsval_is_object = Xyes], + [AC_DEFINE([OPENVRML_JS_HAS_JSVAL_IS_OBJECT], [1], + [Defined if SpiderMonkey has JSVAL_IS_OBJECT])]) + +# # openvrml-xembed and openvrml-player both use GOption, which was # introduced in GLib 2.6. # Modified: trunk/src/script/javascript.cpp =================================================================== --- trunk/src/script/javascript.cpp 2012-08-19 05:25:12 UTC (rev 4314) +++ trunk/src/script/javascript.cpp 2012-09-01 05:48:09 UTC (rev 4315) @@ -294,6 +294,15 @@ # endif + bool jsval_is_object_or_null(const jsval & val) + { +# ifdef OPENVRML_JS_HAS_JSVAL_IS_OBJECT + return JSVAL_IS_OBJECT(val); +# else + return val.isObjectOrNull(); +# endif + } + class SFNode; class MFNode; @@ -1302,7 +1311,7 @@ throw std::bad_alloc(); } assert(val != JSVAL_VOID); - if (JSVAL_IS_OBJECT(val)) { + if (jsval_is_object_or_null(val)) { field_data * fieldData = static_cast<field_data *> (js_get_private(this->cx, JSVAL_TO_OBJECT(val))); @@ -2019,7 +2028,9 @@ } case field_value::sfcolor_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } return auto_ptr<field_value> (SFColor::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); @@ -2051,19 +2062,26 @@ } case field_value::sfimage_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } return auto_ptr<field_value> (SFImage::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::sfnode_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } return auto_ptr<field_value> (SFNode::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::sfrotation_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (SFRotation::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + SFRotation::createFromJSObject(cx, JSVAL_TO_OBJECT(v)) + .release()); case field_value::sfstring_id: { @@ -2091,89 +2109,124 @@ } case field_value::sfvec2f_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (SFVec2f::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + SFVec2f::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::sfvec2d_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (SFVec2d::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + SFVec2d::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::sfvec3f_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (SFVec3f::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + SFVec3f::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::sfvec3d_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (SFVec3d::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + SFVec3d::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::mfbool_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (MFBool::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + MFBool::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::mfcolor_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (MFColor::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + MFColor::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::mffloat_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (MFFloat::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + MFFloat::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::mfdouble_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (MFDouble::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + MFDouble::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::mfint32_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (MFInt32::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + MFInt32::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::mfnode_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (MFNode::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + MFNode::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::mfrotation_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (MFRotation::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + MFRotation::createFromJSObject(cx, JSVAL_TO_OBJECT(v)) + .release()); case field_value::mfstring_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (MFString::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + MFString::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::mftime_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (MFTime::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + MFTime::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::mfvec2f_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (MFVec2f::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + MFVec2f::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::mfvec2d_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (MFVec2d::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + MFVec2d::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::mfvec3f_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (MFVec3f::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + MFVec3f::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); case field_value::mfvec3d_id: - if (!JSVAL_IS_OBJECT(v)) { throw bad_conversion("Object expected."); } - return auto_ptr<field_value> - (MFVec3d::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); + if (!jsval_is_object_or_null(v)) { + throw bad_conversion("Object expected."); + } + return auto_ptr<field_value>( + MFVec3d::createFromJSObject(cx, JSVAL_TO_OBJECT(v)).release()); default: assert(false); @@ -3560,7 +3613,7 @@ OPENVRML_DEFINE_MEMBER_JSNATIVE(SFRotation, construct) { double rot[4] = { 0.0, 1.0, 0.0, 0.0 }; - if (argc > 1 && JSVAL_IS_OBJECT(OPENVRML_JS_ARGV(cx, vp)[0]) + if (argc > 1 && jsval_is_object_or_null(OPENVRML_JS_ARGV(cx, vp)[0]) && JSVAL_IS_NUMBER(OPENVRML_JS_ARGV(cx, vp)[1])) { JSObject * axis_obj = 0; if (!JS_ConvertArguments(cx, argc, OPENVRML_JS_ARGV(cx, vp), "od", @@ -3581,8 +3634,9 @@ rot[0] = axis.value().x(); rot[1] = axis.value().y(); rot[2] = axis.value().z(); - } else if (argc > 1 && JSVAL_IS_OBJECT(OPENVRML_JS_ARGV(cx, vp)[0]) - && JSVAL_IS_OBJECT(OPENVRML_JS_ARGV(cx, vp)[1])) { + } else if (argc > 1 + && jsval_is_object_or_null(OPENVRML_JS_ARGV(cx, vp)[0]) + && jsval_is_object_or_null(OPENVRML_JS_ARGV(cx, vp)[1])) { JSObject * from_obj = 0, * to_obj = 0; if (!JS_ConvertArguments(cx, argc, OPENVRML_JS_ARGV(cx, vp), "oo", &from_obj, &to_obj)) { @@ -5394,7 +5448,7 @@ std::auto_ptr<MFData> mfdata(new MFData(argc)); for (unsigned i = 0; i < argc; ++i) { - if (!JSVAL_IS_OBJECT(argv[i]) + if (!jsval_is_object_or_null(argv[i]) || !JS_InstanceOf(cx, JSVAL_TO_OBJECT(argv[i]), &Subclass::sfjsclass, argv)) { return JS_FALSE; @@ -5533,7 +5587,7 @@ std::ostringstream out; out << '['; for (JsvalArray::size_type i = 0; i < mfdata->array.size(); ++i) { - assert(JSVAL_IS_OBJECT(mfdata->array[i])); + assert(jsval_is_object_or_null(mfdata->array[i])); const sfield::sfdata * const sfdata = static_cast<sfield::sfdata *> (js_get_private(cx, JSVAL_TO_OBJECT(mfdata->array[i]))); @@ -6027,7 +6081,7 @@ mfcolor(new openvrml::mfcolor(mfdata->array.size())); std::vector<openvrml::color> temp = mfcolor->value(); for (MField::JsvalArray::size_type i = 0; i < mfdata->array.size(); ++i) { - assert(JSVAL_IS_OBJECT(mfdata->array[i])); + assert(jsval_is_object_or_null(mfdata->array[i])); assert(JS_InstanceOf(cx, JSVAL_TO_OBJECT(mfdata->array[i]), &SFColor::jsclass, 0)); const sfield::sfdata * const sfdata = @@ -6517,7 +6571,7 @@ // // Make sure all args are SFNodes. // - if (!JSVAL_IS_OBJECT(argv[i]) + if (!jsval_is_object_or_null(argv[i]) || !JS_InstanceOf(cx, JSVAL_TO_OBJECT(argv[i]), &sfnode_jsclass, argv)) { return JS_FALSE; @@ -6583,7 +6637,7 @@ mfnode(new openvrml::mfnode(mfdata->array.size())); std::vector<boost::intrusive_ptr<openvrml::node> > temp = mfnode->value(); for (MField::JsvalArray::size_type i = 0; i < mfdata->array.size(); ++i) { - assert(JSVAL_IS_OBJECT(mfdata->array[i])); + assert(jsval_is_object_or_null(mfdata->array[i])); assert(JS_InstanceOf(cx, JSVAL_TO_OBJECT(mfdata->array[i]), &sfnode_jsclass, 0)); const sfield::sfdata * const sfdata = @@ -6834,7 +6888,7 @@ mfrotation(new openvrml::mfrotation(mfdata->array.size())); std::vector<openvrml::rotation> temp = mfrotation->value(); for (MField::JsvalArray::size_type i = 0; i < mfdata->array.size(); ++i) { - assert(JSVAL_IS_OBJECT(mfdata->array[i])); + assert(jsval_is_object_or_null(mfdata->array[i])); assert(JS_InstanceOf(cx, JSVAL_TO_OBJECT(mfdata->array[i]), &SFRotation::jsclass, 0)); const sfield::sfdata * const sfdata = @@ -7254,7 +7308,7 @@ mfvec2f(new openvrml::mfvec2f(mfdata->array.size())); std::vector<openvrml::vec2f> temp = mfvec2f->value(); for (MField::JsvalArray::size_type i = 0; i < mfdata->array.size(); ++i) { - assert(JSVAL_IS_OBJECT(mfdata->array[i])); + assert(jsval_is_object_or_null(mfdata->array[i])); assert(JS_InstanceOf(cx, JSVAL_TO_OBJECT(mfdata->array[i]), &SFVec2f::jsclass, 0)); const sfield::sfdata * const sfdata = @@ -7335,7 +7389,7 @@ mfvec2d(new openvrml::mfvec2d(mfdata->array.size())); std::vector<openvrml::vec2d> temp = mfvec2d->value(); for (MField::JsvalArray::size_type i = 0; i < mfdata->array.size(); ++i) { - assert(JSVAL_IS_OBJECT(mfdata->array[i])); + assert(jsval_is_object_or_null(mfdata->array[i])); assert(JS_InstanceOf(cx, JSVAL_TO_OBJECT(mfdata->array[i]), &SFVec2d::jsclass, 0)); const sfield::sfdata * const sfdata = @@ -7417,7 +7471,7 @@ std::vector<openvrml::vec3f> temp = mfvec3f->value(); for (MField::JsvalArray::size_type i = 0; i < mfdata->array.size(); ++i) { - assert(JSVAL_IS_OBJECT(mfdata->array[i])); + assert(jsval_is_object_or_null(mfdata->array[i])); assert(JS_InstanceOf(cx, JSVAL_TO_OBJECT(mfdata->array[i]), &SFVec3f::jsclass, 0)); const sfield::sfdata * const sfdata = @@ -7499,7 +7553,7 @@ std::vector<openvrml::vec3d> temp = mfvec3d->value(); for (MField::JsvalArray::size_type i = 0; i < mfdata->array.size(); ++i) { - assert(JSVAL_IS_OBJECT(mfdata->array[i])); + assert(jsval_is_object_or_null(mfdata->array[i])); assert(JS_InstanceOf(cx, JSVAL_TO_OBJECT(mfdata->array[i]), &SFVec3d::jsclass, 0)); const sfield::sfdata * const sfdata = This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |