|
|
| version 1.34, 2002/04/29 05:59:33 | version 1.38.2.4, 2003/01/24 08:19:09 |
|---|---|
| Line 1 | Line 1 |
| /** @file | /** @file |
| Parser: exception decls. | Parser: exception decls. |
| Copyright (c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com) | Copyright (c) 2001, 2003 ArtLebedev Group (http://www.artlebedev.com) |
| Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) | Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) |
| $Id$ | |
| */ | */ |
| #ifndef PA_EXCEPTION_H | #ifndef PA_EXCEPTION_H |
| #define PA_EXCEPTION_H | #define PA_EXCEPTION_H |
| #include "pa_types.h" | static const char* IDENT_EXCEPTION_H="$Date$"; |
| #include "pa_string.h" | |
| //#include "pa_types.h" | |
| #include "pa_pool.h" | |
| class Pool; | // forwards |
| class String; | |
| typedef object_ptr<const String> ConstStringPtr; | |
| // defines | // defines |
| class Exception { | class Exception { |
| public: | public: |
| static ConstStringPtr undefined_source; | |
| Exception(); | Exception(); |
| Exception( | Exception( |
| const char *atype, | const char *atype, |
| const String *aproblem_source, | ConstStringPtr aproblem_source, |
| const char *comment_fmt, ...); | const char *comment_fmt, ...); |
| Exception(const Exception& src); | Exception(const Exception& src): |
| Exception& operator =(const Exception& src); | ftype(src.ftype), |
| ~Exception(); | 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 | #ifdef XML |
| Exception( | Exception( |
| Line 36 public: | Line 49 public: |
| #endif | #endif |
| /// extracts exception type | /// extracts exception type |
| const char *type() const { return ftype; } | const char *type(bool can_be_empty=false) const { |
| if(can_be_empty) | |
| return ftype; | |
| else | |
| return ftype?ftype:"<no type>"; | |
| } | |
| /// extracts exception problem_source | /// extracts exception problem_source |
| const String *problem_source() const { | ConstStringPtr problem_source() const; /// extracts exception comment |
| return fproblem_source && fproblem_source->size()?fproblem_source:0; | const char *comment(bool can_be_empty=false) const { |
| const char *result=fcomment.get()!=0 && *fcomment.get()?fcomment.get():0; | |
| if(can_be_empty) | |
| return result; | |
| else | |
| return result?result:"<no comment>"; | |
| } | } |
| /// extracts exception comment | |
| const char *comment() const { return fcomment; } | |
| private: | private: |
| const char *ftype; | const char *ftype; |
| const String *fproblem_source; | ConstStringPtr fproblem_source; |
| bool owns_comment; char *fcomment; | CharPtr fcomment; |
| }; | }; |