From ee09e94559f1c580242d1a3b47fea1a8d56abef3 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 18 Feb 2010 22:17:35 +0000 Subject: [PATCH] Updated wrappers --- .../introspection/osg/Observer.cpp | 65 +++++++++++++++++++ .../introspection/osg/ObserverNodePath.cpp | 12 +++- .../introspection/osg/Referenced.cpp | 15 ++++- 3 files changed, 89 insertions(+), 3 deletions(-) diff --git a/src/osgWrappers/introspection/osg/Observer.cpp b/src/osgWrappers/introspection/osg/Observer.cpp index 39a82631d..f39648230 100644 --- a/src/osgWrappers/introspection/osg/Observer.cpp +++ b/src/osgWrappers/introspection/osg/Observer.cpp @@ -10,6 +10,7 @@ #include #include +#include #include // Must undefine IN and OUT macros defined in Windows headers @@ -25,6 +26,11 @@ BEGIN_VALUE_REFLECTOR(osg::Observer) I_Constructor0(____Observer, "", ""); + I_Method0(OpenThreads::Mutex *, getObserverMutex, + Properties::NON_VIRTUAL, + __OpenThreads_Mutex_P1__getObserverMutex, + "", + ""); I_Method1(bool, objectUnreferenced, IN, void *, x, Properties::VIRTUAL, __bool__objectUnreferenced__void_P1, @@ -35,5 +41,64 @@ BEGIN_VALUE_REFLECTOR(osg::Observer) __void__objectDeleted__void_P1, "objectDeleted is called when the observed object is about to be deleted. ", "The observer will be automatically removed from the observerd objects observer set so there is no need for the objectDeleted implementation to call removeObserver() on the observed object. "); + I_StaticMethod0(OpenThreads::Mutex *, getGlobalObserverMutex, + __OpenThreads_Mutex_P1__getGlobalObserverMutex_S, + "Get the optional global observer mutex, this can be shared between all osg::Observer. ", + ""); + I_SimpleProperty(OpenThreads::Mutex *, ObserverMutex, + __OpenThreads_Mutex_P1__getObserverMutex, + 0); END_REFLECTOR +TYPE_NAME_ALIAS(std::set< osg::Observer * >, osg::ObserverSet::Observers) + +BEGIN_VALUE_REFLECTOR(osg::ObserverSet) + I_DeclaringFile("osg/Observer"); + I_Constructor0(____ObserverSet, + "", + ""); + I_Method0(OpenThreads::Mutex *, getObserverSetMutex, + Properties::NON_VIRTUAL, + __OpenThreads_Mutex_P1__getObserverSetMutex, + "", + ""); + I_Method1(void, addObserver, IN, osg::Observer *, observer, + Properties::NON_VIRTUAL, + __void__addObserver__Observer_P1, + "", + ""); + I_Method1(void, removeObserver, IN, osg::Observer *, observer, + Properties::NON_VIRTUAL, + __void__removeObserver__Observer_P1, + "", + ""); + I_Method1(void, signalObjectUnreferenced, IN, void *, ptr, + Properties::NON_VIRTUAL, + __void__signalObjectUnreferenced__void_P1, + "", + ""); + I_Method1(void, signalObjectDeleted, IN, void *, ptr, + Properties::NON_VIRTUAL, + __void__signalObjectDeleted__void_P1, + "", + ""); + I_Method0(osg::ObserverSet::Observers &, getObservers, + Properties::NON_VIRTUAL, + __Observers_R1__getObservers, + "", + ""); + I_Method0(const osg::ObserverSet::Observers &, getObservers, + Properties::NON_VIRTUAL, + __C5_Observers_R1__getObservers, + "", + ""); + I_SimpleProperty(OpenThreads::Mutex *, ObserverSetMutex, + __OpenThreads_Mutex_P1__getObserverSetMutex, + 0); + I_SimpleProperty(osg::ObserverSet::Observers &, Observers, + __Observers_R1__getObservers, + 0); +END_REFLECTOR + +STD_SET_REFLECTOR(std::set< osg::Observer * >) + diff --git a/src/osgWrappers/introspection/osg/ObserverNodePath.cpp b/src/osgWrappers/introspection/osg/ObserverNodePath.cpp index 0f8e9b732..72b50e938 100644 --- a/src/osgWrappers/introspection/osg/ObserverNodePath.cpp +++ b/src/osgWrappers/introspection/osg/ObserverNodePath.cpp @@ -42,6 +42,11 @@ BEGIN_OBJECT_REFLECTOR(osg::ObserverNodePath) __bool__valid, "", ""); + I_Method1(void, setNodePathTo, IN, osg::Node *, node, + Properties::NON_VIRTUAL, + __void__setNodePathTo__osg_Node_P1, + "get the NodePath from the first parental chain back to root, plus the specified node. ", + ""); I_Method1(void, setNodePath, IN, const osg::RefNodePath &, nodePath, Properties::NON_VIRTUAL, __void__setNodePath__C5_osg_RefNodePath_R1, @@ -60,13 +65,13 @@ BEGIN_OBJECT_REFLECTOR(osg::ObserverNodePath) I_Method1(bool, getRefNodePath, IN, osg::RefNodePath &, refNodePath, Properties::NON_VIRTUAL, __bool__getRefNodePath__RefNodePath_R1, - "Get a thread safe RefNodePath. ", + "Get a thread safe RefNodePath, return true if NodePath is valid. ", ""); I_Method1(bool, getNodePath, IN, osg::NodePath &, nodePath, Properties::NON_VIRTUAL, __bool__getNodePath__NodePath_R1, "Get a lightweight NodePath that isn't thread safe but may be safely used in single threaded applications, or when its known that the NodePath won't be invalidated during usage of the NodePath. ", - ""); + "return true if NodePath is valid. "); I_ProtectedMethod1(void, _setNodePath, IN, const osg::NodePath &, nodePath, Properties::NON_VIRTUAL, Properties::NON_CONST, @@ -88,6 +93,9 @@ BEGIN_OBJECT_REFLECTOR(osg::ObserverNodePath) I_SimpleProperty(const osg::RefNodePath &, NodePath, 0, __void__setNodePath__C5_osg_RefNodePath_R1); + I_SimpleProperty(osg::Node *, NodePathTo, + 0, + __void__setNodePathTo__osg_Node_P1); END_REFLECTOR TYPE_NAME_ALIAS(std::list< osg::ref_ptr< osg::Node > >, osg::RefNodePath) diff --git a/src/osgWrappers/introspection/osg/Referenced.cpp b/src/osgWrappers/introspection/osg/Referenced.cpp index 52084102f..5f0db9775 100644 --- a/src/osgWrappers/introspection/osg/Referenced.cpp +++ b/src/osgWrappers/introspection/osg/Referenced.cpp @@ -73,6 +73,16 @@ BEGIN_OBJECT_REFLECTOR(osg::Referenced) __int__referenceCount, "Return the number pointers currently referencing this object. ", ""); + I_Method0(osg::ObserverSet *, getObserverSet, + Properties::NON_VIRTUAL, + __ObserverSet_P1__getObserverSet, + "Get the ObserverSet if one is attached, otherwise return NULL. ", + ""); + I_Method0(osg::ObserverSet *, getOrCreateObserverSet, + Properties::NON_VIRTUAL, + __ObserverSet_P1__getOrCreateObserverSet, + "Get the ObserverSet if one is attached, otherwise create an ObserverSet, attach it, then return this newly created ObserverSet. ", + ""); I_Method1(void, addObserver, IN, osg::Observer *, observer, Properties::NON_VIRTUAL, __void__addObserver__Observer_P1, @@ -81,7 +91,7 @@ BEGIN_OBJECT_REFLECTOR(osg::Referenced) I_Method1(void, removeObserver, IN, osg::Observer *, observer, Properties::NON_VIRTUAL, __void__removeObserver__Observer_P1, - "Add a Observer that is observing this object, notify the Observer when this object gets deleted. ", + "remove Observer that is observing this object. ", ""); I_StaticMethod0(OpenThreads::Mutex *, getGlobalReferencedMutex, __OpenThreads_Mutex_P1__getGlobalReferencedMutex_S, @@ -115,6 +125,9 @@ BEGIN_OBJECT_REFLECTOR(osg::Referenced) __void__deleteUsingDeleteHandler, "", ""); + I_SimpleProperty(osg::ObserverSet *, ObserverSet, + __ObserverSet_P1__getObserverSet, + 0); I_SimpleProperty(OpenThreads::Mutex *, RefMutex, __OpenThreads_Mutex_P1__getRefMutex, 0);