Annotation of parser3/src/include/pa_exception.h, revision 1.49
1.10 paf 1: /** @file
1.11 paf 2: Parser: exception decls.
3:
1.45 paf 4: Copyright (c) 2001-2005 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.49 ! misha 11: static const char * const IDENT_EXCEPTION_H="$Date: 2007/08/20 10:00:47 $";
1.46 misha 12:
1.47 misha 13: const char* const PARSER_RUNTIME = "parser.runtime";
1.1 paf 14:
1.48 misha 15: const char* const NAME_MUST_BE_STRING = "name must be string";
16: const char* const FILE_NAME_MUST_BE_STRING = "file name must be string";
17: const char* const NAMESPACEURI_MUST_BE_STRING = "namespaceURI must be string";
1.49 ! misha 18: const char* const DATA_MUST_BE_STRING = "data must be string";
1.48 misha 19: const char* const LOCALNAME_MUST_BE_STRING = "localName must be string";
20: const char* const VALUE_MUST_BE_STRING = "value must be string";
1.49 ! misha 21: const char* const PARAMETER_MUST_BE_STRING = "parameter must be string";
1.48 misha 22:
23: const char* const FILE_NAME_MUST_NOT_BE_CODE = "file name must not be code";
24: const char* const COORDINATES_MUST_NOT_BE_CODE = "coordinates must not be code";
25:
1.39 paf 26: // includes
1.14 parser 27:
1.39 paf 28: #include "pa_memory.h"
29:
30: // forwards
31:
32: class String;
1.14 parser 33:
1.22 paf 34: // defines
35:
1.1 paf 36: class Exception {
37: public:
38:
1.19 paf 39: Exception();
1.15 parser 40: Exception(
1.39 paf 41: const char* atype,
42: const String* aproblem_source,
43: const char* comment_fmt, ...);
1.22 paf 44: Exception(const Exception& src);
1.44 paf 45: operator bool() { return ftype || fproblem_source || fcomment; }
1.22 paf 46: Exception& operator =(const Exception& src);
1.1 paf 47:
1.10 paf 48: /// extracts exception type
1.39 paf 49: const char* type(bool can_be_empty=false) const {
1.35 paf 50: if(can_be_empty)
51: return ftype;
52: else
53: return ftype?ftype:"<no type>";
54: }
1.10 paf 55: /// extracts exception problem_source
1.39 paf 56: const String* problem_source() const;
1.10 paf 57: /// extracts exception comment
1.39 paf 58: const char* comment(bool can_be_empty=false) const {
59: const char* result=fcomment && *fcomment?fcomment:0;
1.35 paf 60: if(can_be_empty)
61: return result;
62: else
63: return result?result:"<no comment>";
64: }
1.1 paf 65:
1.40 paf 66: protected:
1.1 paf 67:
1.39 paf 68: const char* ftype;
69: const String* fproblem_source;
70: char* fcomment;
1.15 parser 71:
1.1 paf 72: };
73:
74: #endif
E-mail: