pl-nk v0.4.5
Plonk|Plink|Plank are a set of cross-platform C/C++ frameworks for audio software development
plonk_Deleter.h
00001 
00002 // -------------------------------------------------------------------------------
00003 // This file is part of the Plink, Plonk, Plank libraries
00004 //  by Martin Robinson
00005 // 
00006 // http://code.google.com/p/pl-nk/
00007 // 
00008 // Copyright University of the West of England, Bristol 2011-14
00009 // All rights reserved.
00010 // 
00011 // Redistribution and use in source and binary forms, with or without
00012 // modification, are permitted provided that the following conditions are met:
00013 // 
00014 // * Redistributions of source code must retain the above copyright
00015 //   notice, this list of conditions and the following disclaimer.
00016 // * Redistributions in binary form must reproduce the above copyright
00017 //   notice, this list of conditions and the following disclaimer in the
00018 //   documentation and/or other materials provided with the distribution.
00019 // * Neither the name of University of the West of England, Bristol nor 
00020 //   the names of its contributors may be used to endorse or promote products
00021 //   derived from this software without specific prior written permission.
00022 // 
00023 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
00024 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00025 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
00026 // DISCLAIMED. IN NO EVENT SHALL UNIVERSITY OF THE WEST OF ENGLAND, BRISTOL BE 
00027 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
00028 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
00029 // GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
00030 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
00031 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
00032 // OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
00033 // 
00034 // This software makes use of third party libraries. For more information see:
00035 // doc/license.txt included in the distribution.
00036 // -------------------------------------------------------------------------------
00037 // */
00038 //
00039 //#ifndef PLONK_DELETER_H
00040 //#define PLONK_DELETER_H
00041 //
00042 //class SmartPointer;
00043 //
00045 // 
00046 // A Deleter is used to delete SmartPointer objects rather than 
00047 // calling delete directly. This default Deleter does simply call delete but other hosts
00048 // could use another thread to delete objects so this is not done in an audio callback
00049 // thread (for example).
00050 // 
00051 // So instead of this:
00052 // @code
00053 // delete mySmartPointerObj;
00054 // @endcode
00055 // 
00056 // ..do this:
00057 // @code
00058 // Deleter::getDeleter()->deleteInternal(mySmartPointerObj);
00059 // @endcode
00060 //  
00061 // @see getDeleter(), setDeleter() */
00062 //class Deleter
00063 //{
00064 //public:
00065 //      Deleter() throw();
00066 //      virtual ~Deleter() throw();
00067 //      virtual void deleteInternal (SmartPointer* internalToDelete) throw();
00068 //      virtual void flush() throw() { };
00069 //};
00070 //
00072 // 
00073 // This Deleter just leaks memory by ignoring requests to delete anything. This is
00074 // probably pretty useless but could be used to test the effect of a real memory leak
00075 // over a long period. Initially it was used to isolate a problem where objects being deleted
00076 // were causing a crash. This class was used so that the objects weren't actually deleted so
00077 // the problem (which is now fixed) could be put to one side.
00078 // 
00079 // Obviously use this with caution! */
00080 //class LeakingDeleter : public Deleter
00081 //{
00082 //public:
00083 //      void deleteInternal (SmartPointer* internalToDelete) throw() { (void)internalToDelete; } // just leak!
00084 //};
00085 //
00086 //
00087 //#endif // PLONK_DELETER_H
00088 //
 All Classes Functions Typedefs Enumerations Enumerator Properties