![]() |
pl-nk v0.4.5
Plonk|Plink|Plank are a set of cross-platform C/C++ frameworks for audio software development
|
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 //