--- parser3/src/include/pa_exception.h 2003/01/21 15:51:10 1.38 +++ parser3/src/include/pa_exception.h 2003/01/23 17:05:33 1.38.2.3 @@ -8,26 +8,39 @@ #ifndef PA_EXCEPTION_H #define PA_EXCEPTION_H -static const char* IDENT_EXCEPTION_H="$Date: 2003/01/21 15:51:10 $"; +static const char* IDENT_EXCEPTION_H="$Date: 2003/01/23 17:05:33 $"; -#include "pa_types.h" -#include "pa_string.h" +//#include "pa_types.h" +#include "pa_pool.h" -class Pool; +// forwards + +class String; +typedef object_ptr ConstStringPtr; // defines class Exception { public: + static ConstStringPtr undefined_source; + Exception(); Exception( const char *atype, - const String *aproblem_source, + ConstStringPtr aproblem_source, const char *comment_fmt, ...); - Exception(const Exception& src); - Exception& operator =(const Exception& src); - ~Exception(); + Exception(const Exception& src): + ftype(src.ftype), + fproblem_source(src.fproblem_source), + fcomment(src.fcomment) { + } + Exception& operator =(const Exception& src) { + ftype=src.ftype; + fproblem_source=src.fproblem_source; + fcomment=src.fcomment; + return *this; + } #ifdef XML Exception( @@ -43,12 +56,9 @@ public: return ftype?ftype:""; } /// extracts exception problem_source - const String *problem_source() const { - return fproblem_source && fproblem_source->size()?fproblem_source:0; - } - /// extracts exception comment + ConstStringPtr problem_source() const; /// extracts exception comment const char *comment(bool can_be_empty=false) const { - const char *result=fcomment && *fcomment?fcomment:0; + const char *result=fcomment.get()!=0 && *fcomment.get()?fcomment.get():0; if(can_be_empty) return result; else @@ -58,8 +68,8 @@ public: private: const char *ftype; - const String *fproblem_source; - bool owns_comment; char *fcomment; + ConstStringPtr fproblem_source; + ConstCharPtr fcomment; };