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