Annotation of parser3/src/include/pa_exception.h, revision 1.44
1.10 paf 1: /** @file
1.11 paf 2: Parser: exception decls.
3:
1.43 paf 4: Copyright (c) 2001-2004 ArtLebedev Group (http://www.artlebedev.com)
1.31 paf 5: Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.1 paf 6: */
7:
8: #ifndef PA_EXCEPTION_H
9: #define PA_EXCEPTION_H
1.36 paf 10:
1.44 ! paf 11: static const char * const IDENT_EXCEPTION_H="$Date: 2004/02/11 15:33:13 $";
1.1 paf 12:
1.39 paf 13: // includes
1.14 parser 14:
1.39 paf 15: #include "pa_memory.h"
16:
17: // forwards
18:
19: class String;
1.14 parser 20:
1.22 paf 21: // defines
22:
1.1 paf 23: class Exception {
24: public:
25:
1.19 paf 26: Exception();
1.15 parser 27: Exception(
1.39 paf 28: const char* atype,
29: const String* aproblem_source,
30: const char* comment_fmt, ...);
1.22 paf 31: Exception(const Exception& src);
1.44 ! paf 32: operator bool() { return ftype || fproblem_source || fcomment; }
1.22 paf 33: Exception& operator =(const Exception& src);
1.1 paf 34:
1.10 paf 35: /// extracts exception type
1.39 paf 36: const char* type(bool can_be_empty=false) const {
1.35 paf 37: if(can_be_empty)
38: return ftype;
39: else
40: return ftype?ftype:"<no type>";
41: }
1.10 paf 42: /// extracts exception problem_source
1.39 paf 43: const String* problem_source() const;
1.10 paf 44: /// extracts exception comment
1.39 paf 45: const char* comment(bool can_be_empty=false) const {
46: const char* result=fcomment && *fcomment?fcomment:0;
1.35 paf 47: if(can_be_empty)
48: return result;
49: else
50: return result?result:"<no comment>";
51: }
1.1 paf 52:
1.40 paf 53: protected:
1.1 paf 54:
1.39 paf 55: const char* ftype;
56: const String* fproblem_source;
57: char* fcomment;
1.15 parser 58:
1.1 paf 59: };
60:
61: #endif
E-mail: