You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ca...@apache.org on 2005/06/21 18:15:58 UTC
svn commit: r191677 - in /xerces/c/branches/xerces-2.7/src/xercesc/util:
Janitor.c Janitor.hpp
Author: cargilld
Date: Tue Jun 21 09:15:57 2005
New Revision: 191677
URL: http://svn.apache.org/viewcvs?rev=191677&view=rev
Log:
Add back changes Bertoni made that were overwritten.
Modified:
xerces/c/branches/xerces-2.7/src/xercesc/util/Janitor.c
xerces/c/branches/xerces-2.7/src/xercesc/util/Janitor.hpp
Modified: xerces/c/branches/xerces-2.7/src/xercesc/util/Janitor.c
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/util/Janitor.c?rev=191677&r1=191676&r2=191677&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/util/Janitor.c (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/util/Janitor.c Tue Jun 21 09:15:57 2005
@@ -186,5 +186,38 @@
fMemoryManager = manager;
}
-XERCES_CPP_NAMESPACE_END
+
+template <class T>
+JanitorMemFunCall<T>::JanitorMemFunCall(
+ T* object,
+ MFPT toCall) :
+ fObject(object),
+ fToCall(toCall)
+{
+}
+
+
+template <class T>
+JanitorMemFunCall<T>::~JanitorMemFunCall()
+{
+ if (fObject != 0 && fToCall != 0)
+ {
+ (fObject->*fToCall)();
+ }
+}
+
+
+// ---------------------------------------------------------------------------
+// Janitor: Public, non-virtual methods
+// ---------------------------------------------------------------------------
+template <class T> void
+JanitorMemFunCall<T>::release()
+{
+ fObject = 0;
+ fToCall = 0;
+}
+
+
+
+XERCES_CPP_NAMESPACE_END
Modified: xerces/c/branches/xerces-2.7/src/xercesc/util/Janitor.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/util/Janitor.hpp?rev=191677&r1=191676&r2=191677&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/util/Janitor.hpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/util/Janitor.hpp Tue Jun 21 09:15:57 2005
@@ -111,6 +111,50 @@
MemoryManager* fMemoryManager;
};
+
+
+template <class T> class JanitorMemFunCall
+{
+public :
+
+ typedef void (T::*MFPT) ();
+
+ // -----------------------------------------------------------------------
+ // Constructors and Destructor
+ // -----------------------------------------------------------------------
+ JanitorMemFunCall(
+ T* object,
+ MFPT toCall);
+
+ ~JanitorMemFunCall();
+
+ // -----------------------------------------------------------------------
+ // Public, non-virtual methods
+ // -----------------------------------------------------------------------
+ void release();
+
+private :
+ // -----------------------------------------------------------------------
+ // Unimplemented constructors and operators
+ // -----------------------------------------------------------------------
+ JanitorMemFunCall();
+ JanitorMemFunCall(const JanitorMemFunCall<T>&);
+ JanitorMemFunCall<T>& operator=(const JanitorMemFunCall<T>&);
+
+ // -----------------------------------------------------------------------
+ // Private data members
+ //
+ // fObject
+ // This is the pointer to the object for which we will call the
+ // member function when this object is destroyed.
+ // -----------------------------------------------------------------------
+ T* fObject;
+ MFPT fToCall;
+};
+
+
+
+
XERCES_CPP_NAMESPACE_END
#if !defined(XERCES_TMPLSINC)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org