Author: toshok
Date: 2007-07-12 16:38:04 -0400 (Thu, 12 Jul 2007)
New Revision: 81901

Modified:
   trunk/moon/plugin/plugin-class.cpp
   trunk/moon/plugin/plugin-class.h
Log:
add a skeleton for MoonlightScriptableObject

Modified: trunk/moon/plugin/plugin-class.cpp
===================================================================
--- trunk/moon/plugin/plugin-class.cpp  2007-07-12 20:17:32 UTC (rev 81900)
+++ trunk/moon/plugin/plugin-class.cpp  2007-07-12 20:38:04 UTC (rev 81901)
@@ -1610,7 +1610,86 @@
 
 MoonlightDownloaderType* MoonlightDownloaderClass;
 
+/*** MoonlightScriptableObjectClass 
***************************************************/
 
+static NPObject*
+moonlight_scriptable_object_allocate (NPP instance, NPClass*)
+{
+       return new MoonlightScriptableObjectObject (instance);
+}
+
+static void
+moonlight_scriptable_object_deallocate (NPObject *npobj)
+{
+       // XXX is delete broken in plugins?
+       // delete (MoonlightScriptableObjectObject*)npobj;
+}
+
+static void
+moonlight_scriptable_object_invalidate (NPObject *npobj)
+{
+       MoonlightScriptableObjectObject *sobj = 
(MoonlightScriptableObjectObject*)npobj;
+
+       if (sobj->scriptable) {
+               // XXX unref the scriptable object however we need to.
+       }
+       sobj->scriptable = NULL;
+}
+
+static bool
+moonlight_scriptable_object_has_property (NPObject *npobj, NPIdentifier name)
+{
+       DEBUG_WARN_NOTIMPLEMENTED ();
+       return false;
+}
+
+static bool
+moonlight_scriptable_object_get_property (NPObject *npobj, NPIdentifier name, 
NPVariant *result)
+{
+       DEBUG_WARN_NOTIMPLEMENTED ();
+       return true;
+}
+
+static bool 
+moonlight_scriptable_object_set_property (NPObject *npobj, NPIdentifier name, 
const NPVariant *value)
+{
+       DEBUG_WARN_NOTIMPLEMENTED ();
+       return true;
+}
+
+static bool
+moonlight_scriptable_object_has_method (NPObject *npobj, NPIdentifier name)
+{
+       DEBUG_WARN_NOTIMPLEMENTED ();
+       return false;
+}
+
+static bool
+moonlight_scriptable_object_invoke (NPObject *npobj, NPIdentifier name,
+                                   const NPVariant *args, uint32_t argCount,
+                                   NPVariant *result)
+{
+       DEBUG_WARN_NOTIMPLEMENTED ();
+       return true;
+}
+
+
+MoonlightScriptableObjectType::MoonlightScriptableObjectType ()
+{
+       allocate = moonlight_scriptable_object_allocate;
+       deallocate = moonlight_scriptable_object_deallocate;
+       invalidate = moonlight_scriptable_object_invalidate;
+
+       hasProperty = moonlight_scriptable_object_has_property;
+       setProperty = moonlight_scriptable_object_set_property;
+       getProperty = moonlight_scriptable_object_get_property;
+
+       hasMethod = moonlight_scriptable_object_has_method;
+       invoke    = moonlight_scriptable_object_invoke;
+}
+
+MoonlightScriptableObjectType* MoonlightScriptableObjectClass;
+
 void
 plugin_init_classes ()
 {
@@ -1625,5 +1704,6 @@
        MoonlightMediaElementClass = new MoonlightMediaElementType ();
        MoonlightDownloaderClass = new MoonlightDownloaderType ();
        MoonlightMouseEventArgsClass = new MoonlightMouseEventArgsType ();
+       MoonlightScriptableObjectClass = new MoonlightScriptableObjectType ();
 }
 

Modified: trunk/moon/plugin/plugin-class.h
===================================================================
--- trunk/moon/plugin/plugin-class.h    2007-07-12 20:17:32 UTC (rev 81900)
+++ trunk/moon/plugin/plugin-class.h    2007-07-12 20:38:04 UTC (rev 81901)
@@ -163,7 +163,7 @@
 /*** MoonlightStoryboardClass 
***************************************************/
 
 struct MoonlightStoryboardType : MoonlightDependencyObjectType {
-  MoonlightStoryboardType ();
+       MoonlightStoryboardType ();
 };
 
 extern MoonlightStoryboardType* MoonlightStoryboardClass;
@@ -171,7 +171,7 @@
 /*** MoonlightMediaElement ***************************************************/
 
 struct MoonlightMediaElementType : MoonlightDependencyObjectType {
-  MoonlightMediaElementType ();
+       MoonlightMediaElementType ();
 };
 
 extern MoonlightMediaElementType* MoonlightMediaElementClass;
@@ -179,10 +179,30 @@
 /*** MoonlightDownloader ***************************************************/
 
 struct MoonlightDownloaderType : MoonlightDependencyObjectType {
-  MoonlightDownloaderType ();
+       MoonlightDownloaderType ();
 };
 
 extern MoonlightDownloaderType* MoonlightDownloaderClass;
 
 
+/*** MoonlightScriptableObject 
***************************************************/
+
+struct MoonlightScriptableObjectType : MoonlightObjectType {
+       MoonlightScriptableObjectType ();
+};
+
+extern MoonlightScriptableObjectType* MoonlightScriptableObjectClass;
+
+struct MoonlightScriptableObjectObject : public MoonlightObject
+{
+       MoonlightScriptableObjectObject (NPP instance) : MoonlightObject 
(instance)
+       {
+               scriptable = NULL;
+       }
+
+       // XXX this should be a MonoObject?  what does a GCHandle in
+       // p/invoke result in on the unmanaged side?
+       void *scriptable;
+};
+
 #endif /* PLUGIN_CLASS */

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to