From: <br...@us...> - 2012-09-01 05:50:25
|
Revision: 4316 http://openvrml.svn.sourceforge.net/openvrml/?rev=4316&view=rev Author: braden Date: 2012-09-01 05:50:16 +0000 (Sat, 01 Sep 2012) Log Message: ----------- XULRunner 15.0 removes JSVAL_IS_OBJECT. Modified Paths: -------------- branches/0.18/ChangeLog branches/0.18/configure.ac branches/0.18/src/script/javascript.cpp Property Changed: ---------------- branches/0.18/ Property changes on: branches/0.18 ___________________________________________________________________ Modified: svn:mergeinfo - /branches/0.17:3713,3717,3719,3721,3725,3730,3732,3743,3746,3748,3750,3752,3754,3757,3759-3760,3764,3766,3824,3828,3836 /branches/local:3677-3689 /branches/node-modules:3622-3623,3632-3635,3637-3638,3640-3641,3643-3644,3646-3647,3649-3650,3654-3655,3657-3658,3661-3662,3664-3665,3667-3668,3670-3671,3673-3674,3684-3685,3687-3688,3736-3801 /trunk:3958,3965,3967,3969,3971,3973,3975-3976,3979,3981,3983,3985,3987,3989,3991,3997,3999,4001,4003,4005,4011,4013-4014,4017,4019,4021,4024,4026,4028,4030,4032,4041,4043,4045,4047,4053,4055,4057,4059,4061,4063,4065,4067,4069,4071,4073,4075,4077,4079,4081,4083,4085,4087,4089,4091,4093,4095,4097,4099,4101,4107-4108,4113,4115,4117,4119-4120,4122,4124,4129,4131,4133,4135,4137,4139,4141,4143,4145,4147-4148,4150,4156,4159-4160,4162,4164,4169,4171,4174,4178-4179,4181,4183,4186,4188,4190,4192,4194,4196,4198-4199,4201,4203,4206,4208,4210,4212,4214,4216,4218,4220,4222,4224,4226,4228,4230,4232,4236,4243,4245,4247,4249,4251,4253,4255,4257,4259,4261,4264,4266,4268,4270,4272,4274,4276,4278,4280-4281,4283,4285,4287,4292,4294,4296,4298,4300,4302,4304,4306,4308-4309,4311,4313 + /branches/0.17:3713,3717,3719,3721,3725,3730,3732,3743,3746,3748,3750,3752,3754,3757,3759-3760,3764,3766,3824,3828,3836 /branches/local:3677-3689 /branches/node-modules:3622-3623,3632-3635,3637-3638,3640-3641,3643-3644,3646-3647,3649-3650,3654-3655,3657-3658,3661-3662,3664-3665,3667-3668,3670-3671,3673-3674,3684-3685,3687-3688,3736-3801 /trunk:3958,3965,3967,3969,3971,3973,3975-3976,3979,3981,3983,3985,3987,3989,3991,3997,3999,4001,4003,4005,4011,4013-4014,4017,4019,4021,4024,4026,4028,4030,4032,4041,4043,4045,4047,4053,4055,4057,4059,4061,4063,4065,4067,4069,4071,4073,4075,4077,4079,4081,4083,4085,4087,4089,4091,4093,4095,4097,4099,4101,4107-4108,4113,4115,4117,4119-4120,4122,4124,4129,4131,4133,4135,4137,4139,4141,4143,4145,4147-4148,4150,4156,4159-4160,4162,4164,4169,4171,4174,4178-4179,4181,4183,4186,4188,4190,4192,4194,4196,4198-4199,4201,4203,4206,4208,4210,4212,4214,4216,4218,4220,4222,4224,4226,4228,4230,4232,4236,4243,4245,4247,4249,4251,4253,4255,4257,4259,4261,4264,4266,4268,4270,4272,4274,4276,4278,4280-4281,4283,4285,4287,4292,4294,4296,4298,4300,4302,4304,4306,4308-4309,4311,4313,4315 Modified: branches/0.18/ChangeLog =================================================================== --- branches/0.18/ChangeLog 2012-09-01 05:48:09 UTC (rev 4315) +++ branches/0.18/ChangeLog 2012-09-01 05:50:16 UTC (rev 4316) @@ -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: branches/0.18/configure.ac =================================================================== --- branches/0.18/configure.ac 2012-09-01 05:48:09 UTC (rev 4315) +++ branches/0.18/configure.ac 2012-09-01 05:50:16 UTC (rev 4316) @@ -311,12 +311,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], @@ -381,6 +384,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: branches/0.18/src/script/javascript.cpp =================================================================== --- branches/0.18/src/script/javascript.cpp 2012-09-01 05:48:09 UTC (rev 4315) +++ branches/0.18/src/script/javascript.cpp 2012-09-01 05:50:16 UTC (rev 4316) @@ -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. |