diff options
Diffstat (limited to 'src/Editor.h')
-rw-r--r-- | src/Editor.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/Editor.h b/src/Editor.h index 9c42e28cb..c58da4ea5 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -71,6 +71,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 { // Private so Editor objects can not be copied |