From 7d3c9fa44e9b1f775139c03b2bbebaa4e2cafdd1 Mon Sep 17 00:00:00 2001 From: cascade Date: Fri, 7 Apr 2006 19:58:02 +0000 Subject: [PATCH] OCC12131 Improvement of Exception mechanism on Unix and Linux platforms cdl, hxx, cxx --- src/CPPExt/CPPExt_Template.edl | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/CPPExt/CPPExt_Template.edl b/src/CPPExt/CPPExt_Template.edl index 3db1e0a..8da0840 100755 --- a/src/CPPExt/CPPExt_Template.edl +++ b/src/CPPExt/CPPExt_Template.edl @@ -748,12 +748,15 @@ $ void operator delete(void *anAddress) $ { $ if (anAddress) Standard::Free((Standard_Address&)anAddress); $ } +$#ifndef NO_CXX_EXCEPTION +$ Standard_EXPORT virtual void Throw() const; +$#endif $public: +$ Standard_EXPORT %Class():%Inherits(){} +$ Standard_EXPORT %Class(const Standard_CString AString):%Inherits(AString){} $ Standard_EXPORT static void Raise(const Standard_CString aMessage = ""); $ Standard_EXPORT static void Raise(Standard_SStream& aReason); -$#ifndef NO_CXX_EXCEPTION -$ Standard_EXPORT virtual void Throw() const ; -$#endif +$ Standard_EXPORT static Handle(%Class) NewInstance(const Standard_CString aMessage); $ $ Standard_EXPORT ~%Class(); $ @@ -784,10 +787,15 @@ ${ $ Handle(%Class) _E (new %Class); $ _E->Reraise(AString); $} +$ +$Handle(%Class) %Class::NewInstance(const Standard_CString aMessage) +${ +$ return new %Class(aMessage); +$} $#ifndef NO_CXX_EXCEPTION $void %Class::Throw() const ${ -$ throw %Class() ; +$ throw *this; $} $#endif @end; -- 2.39.5