|
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.
|