diff options
Diffstat (limited to 'src')
| -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 | 
