rendered paste bodyIndex: src/value.cpp
===================================================================
--- src/value.cpp (revision 82573)
+++ src/value.cpp (working copy)
@@ -236,6 +236,14 @@
memcpy (u.matrix, matrix, sizeof (Matrix));
}
+Value::Value (Type::Kind k, gpointer npobj)
+{
+ Init ();
+ g_assert (k == Type::NPOBJ);
+
+ u.npobj = npobj;
+}
+
void
Value::FreeValue ()
{
Index: src/value.h.in
===================================================================
--- src/value.h.in (revision 82573)
+++ src/value.h.in (working copy)
@@ -54,7 +54,8 @@
Value (Point *points, int count);
Value (double *values, int count);
Value (Matrix* matrix);
-
+ Value (Type::Kind k, gpointer npobj);
+
~Value ();
bool operator!= (const Value &v) const
@@ -95,7 +96,7 @@
Duration* AsDuration () { checked_get_exact (Type::DURATION, NULL, u.duration); }
KeyTime* AsKeyTime () { checked_get_exact (Type::KEYTIME, NULL, u.keytime); }
Matrix* AsMatrix () { checked_get_exact (Type::MATRIX, NULL, u.matrix); }
-
+
/* nullable primitives (all but bool) */
double* AsNullableDouble () { checked_get_exact (Type::DOUBLE, NULL, &u.d); }
guint64* AsNullableUint64 () { checked_get_exact (Type::UINT64, NULL, &u.ui64); }
@@ -129,6 +130,7 @@
PointArray *point_array;
DoubleArray *double_array;
Matrix* matrix;
+ gpointer npobj;
} u;
Index: plugin/plugin-class.cpp
===================================================================
--- plugin/plugin-class.cpp (revision 82529)
+++ plugin/plugin-class.cpp (working copy)
@@ -250,9 +250,8 @@
*result = new Value (Type::DEPENDENCY_OBJECT);
break;
case NPVariantType_Object:
- DEBUG_WARN_NOTIMPLEMENTED ("object variant type");
- *result = NULL;
-
+ *result = new Value (Type::NPOBJ, NPVARIANT_TO_OBJECT (*v));
+ NPN_RetainObject (NPVARIANT_TO_OBJECT (*v));
break;
}
}