1 kumpf 1.1 //%/////////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Company, IBM,
4 // The Open Group, Tivoli Systems
5 //
6 // Permission is hereby granted, free of charge, to any person obtaining a copy
7 // of this software and associated documentation files (the "Software"), to
8 // deal in the Software without restriction, including without limitation the
9 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 // sell copies of the Software, and to permit persons to whom the Software is
11 // furnished to do so, subject to the following conditions:
12 //
13 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
14 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
15 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
16 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
17 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
18 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 //
22 kumpf 1.1 //==============================================================================
23 //
24 // Author: Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
25 //
26 // Modified By:
27 //
28 //%/////////////////////////////////////////////////////////////////////////////
29
30 #ifndef Pegasus_InternalException_h
31 #define Pegasus_InternalException_h
32
33 #include <Pegasus/Common/Config.h>
34 #include <Pegasus/Common/Linkage.h>
35 #include <Pegasus/Common/Exception.h>
36
37 PEGASUS_NAMESPACE_BEGIN
38
39 /** Class AssertionFailureException
40 This is an Exception class tied to the definiton of an assert named
41 PEGASUS_ASSERT. This assertion can be included at any point in Pegasus
42 code
43 kumpf 1.1 */
44 class PEGASUS_COMMON_LINKAGE AssertionFailureException : public Exception
45 {
46 public:
47
48 AssertionFailureException(
49 const char* file,
50 size_t line,
51 const String& message);
52 };
53
54 /** define PEGASUS_ASSERT assertion statement. This statement tests the
55 condition defined by the parameters and if not True executes an
56
57 <pre>
58 throw AssertionFailureException
59 </pre>
60
61 defining the file, line and condition that was tested.
62 */
63 #ifdef NDEBUG
64 kumpf 1.1 #define PEGASUS_ASSERT(COND)
65 #else
66 #define PEGASUS_ASSERT(COND) \
67 do \
68 { \
69 if (!(COND)) \
70 { \
71 throw AssertionFailureException(__FILE__, __LINE__, #COND); \
72 } \
73 } while (0)
74 #endif
75
76 /* Macro to Create the equivalent of an assert but without the
77 termination. This can be used as a temporary marker for asserts
78 that are not working. Prints out the error but continues.
79 NOTE: This is useful in test programs to keep us aware that we
80 have problems without halting the test sequence.
81 This was created primarily to put temporary asserts into tests that
82 are not yet working correctly but will not stop the test sequence.
83 */
84 #define ASSERTTEMP(COND) \
85 kumpf 1.1 do \
86 { \
87 if (!(COND)) \
88 { \
89 cerr << "TEMP Assert Error TEMP **********" \
90 <<__FILE__ << " " << __LINE__ \
91 << " " << #COND << endl; \
92 } \
93 } while (0)
94
95
96 // ATTN: P3 KS documentation Required
97 class PEGASUS_COMMON_LINKAGE NullPointer : public Exception
98 {
99 public:
100
101 static const char MSG[];
|
102 chuck 1.6 static const char KEY[];
|
103 kumpf 1.1
|
104 chuck 1.6 //NullPointer() : Exception(MSG) { }
|
105 chuck 1.5
|
106 chuck 1.6 NullPointer() : Exception(MessageLoaderParms(KEY, MSG)) { }
|
107 kumpf 1.1 };
108
109 // ATTN: P3 KS documentation Required
110 class PEGASUS_COMMON_LINKAGE UndeclaredQualifier : public Exception
111 {
112 public:
113
114 static const char MSG[];
|
115 chuck 1.6 static const char KEY[];
|
116 kumpf 1.1
|
117 chuck 1.6 //UndeclaredQualifier(const String& qualifierName)
118 //: Exception(MSG + qualifierName) { }
|
119 chuck 1.5
120 // NOTE - MSG needs to have a $0 arg for all the substitution cases
|
121 chuck 1.6 UndeclaredQualifier(const String& qualifierName)
122 : Exception(MessageLoaderParms(KEY, MSG, qualifierName)) { }
|
123 kumpf 1.1 };
124
125 // ATTN: P3 KS documentation Required
126 class PEGASUS_COMMON_LINKAGE BadQualifierScope : public Exception
127 {
128 public:
129
|
130 chuck 1.6 static const char MSG[];
131 static const char KEY[];
|
132 kumpf 1.1
|
133 chuck 1.6 //BadQualifierScope(const String& qualifierName, const String& scopeString)
134 //: Exception(MSG + qualifierName + String(" scope=") + scopeString) { }
|
135 chuck 1.5
|
136 chuck 1.6
|
137 chuck 1.5 BadQualifierScope(const String& qualifierName, const String& scopeString)
138 : Exception(MessageLoaderParms(KEY,
139 MSG,
140 qualifierName,
141 scopeString)) { }
|
142 chuck 1.6
|
143 kumpf 1.1 };
144
145 // ATTN: P3 KS documentation Required
146 class PEGASUS_COMMON_LINKAGE BadQualifierOverride : public Exception
147 {
148 public:
149
150 static const char MSG[];
|
151 chuck 1.6 static const char KEY[];
|
152 kumpf 1.1
|
153 chuck 1.6 //BadQualifierOverride(const String& qualifierName)
154 //: Exception(MSG + qualifierName) { }
155
|
156 kumpf 1.1 BadQualifierOverride(const String& qualifierName)
|
157 chuck 1.6 : Exception(MessageLoaderParms(KEY, MSG, qualifierName)) { }
|
158 kumpf 1.1 };
159
160 class PEGASUS_COMMON_LINKAGE BadQualifierType : public Exception
161 {
162 public:
163
164 static const char MSG[];
|
165 chuck 1.6 static const char KEY[];
|
166 kumpf 1.1
|
167 chuck 1.6 //BadQualifierType(const String& qualifierName)
168 //: Exception(MSG + qualifierName) { }
|
169 chuck 1.5
|
170 chuck 1.6 BadQualifierType(const String& qualifierName)
171 : Exception(MessageLoaderParms(KEY, MSG, qualifierName)) { }
|
172 kumpf 1.1 };
173
174 // ATTN: P3 KS documentation Required
175 class PEGASUS_COMMON_LINKAGE ClassAlreadyResolved : public Exception
176 {
177 public:
178
179 static const char MSG[];
|
180 chuck 1.6 static const char KEY[];
|
181 kumpf 1.1
|
182 chuck 1.6 //ClassAlreadyResolved(const String& className)
183 //: Exception(MSG + className) { }
|
184 chuck 1.5
|
185 chuck 1.6 ClassAlreadyResolved(const String& className)
186 : Exception(MessageLoaderParms(KEY, MSG, className)) { }
|
187 kumpf 1.1 };
188
189 // ATTN: P3 KS documentation Required
190 class PEGASUS_COMMON_LINKAGE ClassNotResolved : public Exception
191 {
192 public:
193
194 static const char MSG[];
|
195 chuck 1.6 static const char KEY[];
|
196 kumpf 1.1
|
197 chuck 1.6 //ClassNotResolved(const String& className)
198 //: Exception(MSG + className) { }
|
199 chuck 1.5
|
200 chuck 1.6 ClassNotResolved(const String& className)
201 : Exception(MessageLoaderParms(KEY, MSG, className)) { }
|
202 kumpf 1.1 };
203
204 // ATTN: P3 KS documentation Required
205 class PEGASUS_COMMON_LINKAGE InstanceAlreadyResolved : public Exception
206 {
207 public:
208
209 static const char MSG[];
|
210 chuck 1.6 static const char KEY[];
|
211 kumpf 1.1
|
212 chuck 1.6 //InstanceAlreadyResolved()
213 // : Exception(MSG) { }
|
214 chuck 1.5
|
215 chuck 1.6 InstanceAlreadyResolved()
216 : Exception(MessageLoaderParms(KEY, MSG)) { }
|
217 kumpf 1.1 };
218
219 // ATTN: P3 KS documentation Required
220 class PEGASUS_COMMON_LINKAGE InstantiatedAbstractClass : public Exception
221 {
222 public:
223
224 static const char MSG[];
|
225 chuck 1.6 static const char KEY[];
|
226 kumpf 1.1
|
227 chuck 1.6 //InstantiatedAbstractClass(const String& className)
228 //: Exception(MSG + className) { }
|
229 chuck 1.5
|
230 chuck 1.6 InstantiatedAbstractClass(const String& className)
231 : Exception(MessageLoaderParms(KEY, MSG, className)) { }
|
232 kumpf 1.1 };
233
234 // ATTN: P3 KS documentation Required
235 class PEGASUS_COMMON_LINKAGE NoSuchProperty : public Exception
236 {
237 public:
238
239 static const char MSG[];
|
240 chuck 1.6 static const char KEY[];
|
241 kumpf 1.1
|
242 chuck 1.6 //NoSuchProperty(const String& propertyName)
243 //: Exception(MSG + propertyName) { }
|
244 chuck 1.5
|
245 chuck 1.6 NoSuchProperty(const String& propertyName)
246 : Exception(MessageLoaderParms(KEY, MSG, propertyName)) { }
|
247 kumpf 1.1 };
248
249 // ATTN: P3 KS documentation Required
250 class PEGASUS_COMMON_LINKAGE NoSuchFile : public Exception
251 {
252 public:
253
254 static const char MSG[];
|
255 chuck 1.6 static const char KEY[];
|
256 kumpf 1.1
|
257 chuck 1.6 // NoSuchFile(const String& fileName) : Exception(MSG + fileName) { }
|
258 chuck 1.5
|
259 chuck 1.6 NoSuchFile(const String& fileName)
260 : Exception(MessageLoaderParms(KEY, MSG, fileName)) { }
|
261 kumpf 1.1 };
262
263 // ATTN: P3 KS documentation Required
264 class PEGASUS_COMMON_LINKAGE FileNotReadable : public Exception
265 {
266 public:
267
268 static const char MSG[];
|
269 chuck 1.6 static const char KEY[];
|
270 kumpf 1.1
|
271 chuck 1.6 //FileNotReadable(const String& fileName) : Exception(MSG + fileName) { }
|
272 chuck 1.5
|
273 chuck 1.6 FileNotReadable(const String& fileName)
274 : Exception(MessageLoaderParms(KEY, MSG, fileName)) { }
|
275 kumpf 1.1 };
276
277 // ATTN: P3 KS documentation Required
278 class PEGASUS_COMMON_LINKAGE CannotRemoveDirectory : public Exception
279 {
280 public:
281
282 static const char MSG[];
|
283 chuck 1.6 static const char KEY[];
|
284 kumpf 1.1
|
285 chuck 1.6 //CannotRemoveDirectory(const String& path) : Exception(MSG + path) { }
|
286 chuck 1.5
|
287 chuck 1.6 CannotRemoveDirectory(const String& path)
288 : Exception(MessageLoaderParms(KEY, MSG, path)) { }
|
289 kumpf 1.1 };
290
291 // ATTN: P3 KS documentation Required
292 class PEGASUS_COMMON_LINKAGE CannotRemoveFile : public Exception
293 {
294 public:
295
296 static const char MSG[];
|
297 chuck 1.6 static const char KEY[];
|
298 kumpf 1.1
|
299 chuck 1.6 //CannotRemoveFile(const String& path) : Exception(MSG + path) { }
300 CannotRemoveFile(const String& path)
301 : Exception(MessageLoaderParms(KEY, MSG, path)) { }
|
302 kumpf 1.1 };
303
304 // ATTN: P3 KS documentation Required
305 class PEGASUS_COMMON_LINKAGE CannotRenameFile : public Exception
306 {
307 public:
308
309 static const char MSG[];
|
310 chuck 1.6 static const char KEY[];
|
311 kumpf 1.1
|
312 chuck 1.6 //CannotRenameFile(const String& path) : Exception(MSG + path) { }
313 CannotRenameFile(const String& path)
314 : Exception(MessageLoaderParms(KEY, MSG, path)) { }
|
315 kumpf 1.1 };
316
317 // ATTN: P3 KS documentation Required
318 class PEGASUS_COMMON_LINKAGE NoSuchDirectory : public Exception
319 {
320 public:
321
322 static const char MSG[];
|
323 chuck 1.6 static const char KEY[];
|
324 kumpf 1.1
|
325 chuck 1.6 //NoSuchDirectory(const String& directoryName)
326 //: Exception(MSG + directoryName) { }
327 NoSuchDirectory(const String& directoryName)
328 : Exception(MessageLoaderParms(KEY, MSG, directoryName)) { }
|
329 kumpf 1.1 };
330
331 // ATTN: P3 KS documentation Required
332 class PEGASUS_COMMON_LINKAGE CannotCreateDirectory : public Exception
333 {
334 public:
335
336 static const char MSG[];
|
337 chuck 1.6 static const char KEY[];
|
338 kumpf 1.1
|
339 chuck 1.6 //CannotCreateDirectory(const String& path)
340 //: Exception(MSG + path) { }
341 CannotCreateDirectory(const String& path)
342 : Exception(MessageLoaderParms(KEY, MSG, path)) { }
|
343 kumpf 1.1 };
344
345 // ATTN: P3 KS documentation Required
346 class PEGASUS_COMMON_LINKAGE CannotOpenFile : public Exception
347 {
348 public:
349
350 static const char MSG[];
|
351 chuck 1.6 static const char KEY[];
|
352 kumpf 1.1
|
353 chuck 1.6 //CannotOpenFile(const String& path)
354 //: Exception(MSG + path) { }
355 CannotOpenFile(const String& path)
356 : Exception(MessageLoaderParms(KEY, MSG, path)) { }
|
357 kumpf 1.1 };
358
359 // ATTN: P3 KS documentation Required
360 class PEGASUS_COMMON_LINKAGE NotImplemented : public Exception
361 {
362 public:
363
364 static const char MSG[];
|
365 chuck 1.6 static const char KEY[];
|
366 kumpf 1.1
|
367 chuck 1.6 // NotImplemented(const String& method) : Exception(MSG + method) { }
368 NotImplemented(const String& method)
369 : Exception(MessageLoaderParms(KEY, MSG, method)) { }
|
370 kumpf 1.1 };
371
372 class PEGASUS_COMMON_LINKAGE StackUnderflow : public Exception
373 {
374 public:
375
376 static const char MSG[];
|
377 chuck 1.6 static const char KEY[];
|
378 kumpf 1.1
|
379 chuck 1.6 //StackUnderflow() : Exception(MSG) { }
380 StackUnderflow()
381 : Exception(MessageLoaderParms(KEY, MSG)) { }
|
382 kumpf 1.1 };
383
384 class PEGASUS_COMMON_LINKAGE StackOverflow : public Exception
385 {
386 public:
387
388 static const char MSG[];
|
389 chuck 1.6 static const char KEY[];
|
390 kumpf 1.1
|
391 chuck 1.6 //StackOverflow() : Exception(MSG) { }
392 StackOverflow()
393 : Exception(MessageLoaderParms(KEY, MSG)) { }
|
394 kumpf 1.1 };
395
396 class PEGASUS_COMMON_LINKAGE QueueUnderflow : public Exception
397 {
398 public:
399
400 static const char MSG[];
|
401 chuck 1.6 static const char KEY[];
|
402 kumpf 1.1
|
403 chuck 1.6 //QueueUnderflow() : Exception(MSG) { }
404 QueueUnderflow()
405 : Exception(MessageLoaderParms(KEY, MSG)) { }
|
406 kumpf 1.1 };
407
408 class PEGASUS_COMMON_LINKAGE BadFormat : public Exception
409 {
410 public:
411
412 static const char MSG[];
|
413 chuck 1.6 static const char KEY[];
|
414 kumpf 1.1
|
415 chuck 1.6 //BadFormat() : Exception(MSG) { }
416 BadFormat()
417 : Exception(MessageLoaderParms(KEY, MSG)) { }
|
418 kumpf 1.1 };
419
420 class PEGASUS_COMMON_LINKAGE BadlyFormedCGIQueryString : public Exception
421 {
422 public:
423
424 static const char MSG[];
|
425 chuck 1.6 static const char KEY[];
|
426 kumpf 1.1
|
427 chuck 1.6 //BadlyFormedCGIQueryString() : Exception(MSG) { }
428 BadlyFormedCGIQueryString()
429 : Exception(MessageLoaderParms(KEY, MSG)) { }
|
430 kumpf 1.1 };
431
432 class PEGASUS_COMMON_LINKAGE DynamicLoadFailed : public Exception
433 {
434 public:
435
436 static const char MSG[];
|
437 chuck 1.6 static const char KEY[];
|
438 kumpf 1.1
|
439 chuck 1.6 //DynamicLoadFailed(const String& libraryName)
440 //: Exception(MSG + libraryName) { }
|
441 chuck 1.5
|
442 chuck 1.6 DynamicLoadFailed(const String& libraryName)
443 : Exception(MessageLoaderParms(KEY, MSG, libraryName)) { }
|
444 kumpf 1.1 };
445
446 class PEGASUS_COMMON_LINKAGE DynamicLookupFailed : public Exception
447 {
448 public:
449
450 static const char MSG[];
|
451 chuck 1.6 static const char KEY[];
|
452 kumpf 1.1
|
453 chuck 1.6 //DynamicLookupFailed(const String& symbolName)
454 //: Exception(MSG + symbolName) { }
455 DynamicLookupFailed(const String& symbolName)
456 : Exception(MessageLoaderParms(KEY, MSG, symbolName)) { }
|
457 kumpf 1.1 };
458
459 class PEGASUS_COMMON_LINKAGE CannotOpenDirectory : public Exception
460 {
461 public:
462
463 static const char MSG[];
|
464 chuck 1.6 static const char KEY[];
|
465 kumpf 1.1
|
466 chuck 1.6 //CannotOpenDirectory(const String& path) : Exception(MSG + path) { }
467 CannotOpenDirectory(const String& path)
468 : Exception(MessageLoaderParms(KEY, MSG, path)) { }
|
469 kumpf 1.1 };
470
471 class PEGASUS_COMMON_LINKAGE ParseError : public Exception
472 {
473 public:
474
475 static const char MSG[];
|
476 chuck 1.6 static const char KEY[];
|
477 kumpf 1.1
|
478 chuck 1.6 //ParseError(const String& message) : Exception(MSG + message) { }
479 ParseError(const String& message)
480 : Exception(MessageLoaderParms(KEY, MSG, message)) { }
|
481 kumpf 1.1 };
482
483 class PEGASUS_COMMON_LINKAGE MissingNullTerminator : public Exception
484 {
485 public:
486
487 static const char MSG[];
|
488 chuck 1.6 static const char KEY[];
|
489 kumpf 1.1
|
490 chuck 1.6 //MissingNullTerminator() : Exception(MSG) { }
491 MissingNullTerminator()
492 : Exception(MessageLoaderParms(KEY, MSG)) { }
|
493 chuck 1.5 };
494
495 //l10n start
496
497 class PEGASUS_COMMON_LINKAGE MalformedLanguageHeader: public Exception
498 {
499 public:
500
501 static const char MSG[];
|
502 chuck 1.6 static const char KEY[];
|
503 chuck 1.5
|
504 chuck 1.6 //MalformedLanguageHeader(const String& error) : Exception(MSG + error) { }
505 MalformedLanguageHeader(const String& error)
506 : Exception(MessageLoaderParms(KEY, MSG, error)) { }
|
507 chuck 1.5 };
508
509
510 class PEGASUS_COMMON_LINKAGE InvalidAcceptLanguageHeader: public Exception
511 {
512 public:
513
514 static const char MSG[];
|
515 chuck 1.6 static const char KEY[];
|
516 chuck 1.5
|
517 chuck 1.6 //InvalidAcceptLanguageHeader(const String& error) : Exception(MSG + error) { }
518 InvalidAcceptLanguageHeader(const String& error)
519 : Exception(MessageLoaderParms(KEY, MSG, error)) { }
|
520 kumpf 1.1 };
521
|
522 chuck 1.5 class PEGASUS_COMMON_LINKAGE InvalidContentLanguageHeader: public Exception
523 {
524 public:
525
526 static const char MSG[];
|
527 chuck 1.6 static const char KEY[];
|
528 chuck 1.5
|
529 chuck 1.6 //InvalidContentLanguageHeader(const String& error) : Exception(MSG + error) { }
530 InvalidContentLanguageHeader(const String& error)
531 : Exception(MessageLoaderParms(KEY, MSG, error)) { }
|
532 chuck 1.5 };
533
534 //l10n end
535
|
536 kumpf 1.1 class PEGASUS_COMMON_LINKAGE InvalidAuthHeader: public Exception
537 {
538 public:
539
540 static const char MSG[];
|
541 chuck 1.6 static const char KEY[];
|
542 kumpf 1.1
|
543 chuck 1.6 //InvalidAuthHeader() : Exception(MSG) { }
544 InvalidAuthHeader()
545 : Exception(MessageLoaderParms(KEY, MSG)) { }
|
546 kumpf 1.1 };
547
548 class PEGASUS_COMMON_LINKAGE UnauthorizedAccess: public Exception
549 {
550 public:
551
552 static const char MSG[];
|
553 chuck 1.6 static const char KEY[];
|
554 kumpf 1.1
|
555 chuck 1.6 //UnauthorizedAccess() : Exception(MSG) { }
556 UnauthorizedAccess()
557 : Exception(MessageLoaderParms(KEY, MSG)) { }
|
558 kumpf 1.1 };
559
|
560 kumpf 1.4 class PEGASUS_COMMON_LINKAGE IncompatibleTypesException : public Exception
561 {
562 public:
|
563 chuck 1.5 IncompatibleTypesException();
|
564 kumpf 1.4 };
565
566
|
567 kumpf 1.1 /** The CIMException defines the CIM exceptions that are formally defined in
|
568 kumpf 1.2 the CIM Operations over HTTP specification. TraceableCIMException allows
|
569 kumpf 1.1 file name and line number information to be added for diagnostic purposes.
570 */
|
571 kumpf 1.2 class PEGASUS_COMMON_LINKAGE TraceableCIMException : public CIMException
|
572 kumpf 1.1 {
573 public:
574
|
575 kumpf 1.2 TraceableCIMException(
576 CIMStatusCode code,
577 const String& message,
578 const char* file,
579 Uint32 line);
|
580 humberto 1.7
581 //l10n
582 TraceableCIMException(
583 CIMStatusCode code,
584 MessageLoaderParms parms,
585 const char* file,
586 Uint32 line);
|
587 kumpf 1.2
|
588 chuck 1.5 // l10n
589 TraceableCIMException(
590 const ContentLanguages& langs,
591 CIMStatusCode code,
592 const String& message,
593 const char* file,
594 Uint32 line);
595
|
596 kumpf 1.2 TraceableCIMException(const CIMException & cimException);
597
598 String getDescription() const;
|
599 kumpf 1.1
600 String getTraceDescription() const;
|
601 kumpf 1.2 };
|
602 kumpf 1.1
|
603 kumpf 1.2 #define PEGASUS_CIM_EXCEPTION(CODE, EXTRA_MESSAGE) \
604 TraceableCIMException(CODE, EXTRA_MESSAGE, __FILE__, __LINE__)
|
605 chuck 1.5
606 // l10n
607 #define PEGASUS_CIM_EXCEPTION_LANG(LANGS, CODE, EXTRA_MESSAGE) \
|
608 humberto 1.7 TraceableCIMException(LANGS, CODE, EXTRA_MESSAGE, __FILE__, __LINE__)
609
610 //l10n
611 #define PEGASUS_CIM_EXCEPTION_L(CODE, MSG_PARMS) \
612 TraceableCIMException(CODE, MSG_PARMS, __FILE__, __LINE__)
|
613 kumpf 1.1
614 PEGASUS_NAMESPACE_END
615
616 #endif /* Pegasus_InternalException_h */
|