diff options
Diffstat (limited to 'zend/delayedfree.h')
-rw-r--r-- | zend/delayedfree.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/zend/delayedfree.h b/zend/delayedfree.h new file mode 100644 index 0000000..598d4f5 --- /dev/null +++ b/zend/delayedfree.h @@ -0,0 +1,50 @@ +/** + * DelayedFree.h + * + * Sometimes a piece of data must be freed when a function gets out of + * scope. In stead of putting the efree() call right before every possible + * function end point (exceptions, returns, zend_errors()), we can use + * this simple class instead + * + * @author Emiel Bruijntjes <emiel.bruijntjes@copernica.com> + * @copyright 2015 Copernica BV + */ + +/** + * Set up namespace + */ +namespace Php { + +/** + * Class definition + */ +class DelayedFree +{ +private: + /** + * The data that has to be free'd when the object falls out of scope + * @var void* + */ + void *_data; + +public: + /** + * Constructor + * @param data Data that will be freed on destruction + */ + DelayedFree(void *data) : _data(data) {} + + /** + * Destructor + */ + virtual ~DelayedFree() + { + // free the data + efree(_data); + } +}; + +/** + * End of namespace + */ +} |