From d4c8a2940fa1373444e676e0a56731ed7c1898b4 Mon Sep 17 00:00:00 2001 From: nyamatongwe Date: Wed, 19 Dec 2001 07:02:39 +0000 Subject: Added AutoSurface class which is a smart pointer that ensures correct deallocation of Surface objects. --- src/Editor.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src') diff --git a/src/Editor.h b/src/Editor.h index 9c42e28cb..c58da4ea5 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -70,6 +70,38 @@ public: } }; +/** + * A smart pointer class to ensure Surfaces are set up and deleted correctly. + */ +class AutoSurface { +private: + Surface *surf; +public: + AutoSurface(bool unicodeMode) { + surf = Surface::Allocate(); + if (surf) { + surf->Init(); + surf->SetUnicodeMode(unicodeMode); + } + } + AutoSurface(SurfaceID sid, bool unicodeMode) { + surf = Surface::Allocate(); + if (surf) { + surf->Init(sid); + surf->SetUnicodeMode(unicodeMode); + } + } + ~AutoSurface() { + delete surf; + } + Surface *operator->() const { + return surf; + } + operator Surface *() const { + return surf; + } +}; + /** */ class Editor : public DocWatcher { -- cgit v1.2.3