00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _DECAF_UTIL_CONCURRENT_BROKENBARRIEREXCEPTION_H_
00018 #define _DECAF_UTIL_CONCURRENT_BROKENBARRIEREXCEPTION_H_
00019
00020 #include <decaf/lang/Exception.h>
00021
00022 namespace decaf{
00023 namespace util{
00024 namespace concurrent{
00025
00026
00027
00028
00029
00030 class DECAF_API BrokenBarrierException : public decaf::lang::Exception {
00031 public:
00032
00036 BrokenBarrierException() : decaf::lang::Exception() {}
00037
00044 BrokenBarrierException( const decaf::lang::Exception& ex )
00045 : decaf::lang::Exception()
00046 {
00047 *(Exception*)this = ex;
00048 }
00049
00056 BrokenBarrierException( const BrokenBarrierException& ex )
00057 : decaf::lang::Exception()
00058 {
00059 *(Exception*)this = ex;
00060 }
00061
00067 BrokenBarrierException( const std::exception* cause )
00068 : decaf::lang::Exception( cause ) {}
00069
00079 BrokenBarrierException( const char* file, const int lineNumber,
00080 const char* msg, ... )
00081 : decaf::lang::Exception()
00082 {
00083
00084 va_list vargs;
00085 va_start( vargs, msg );
00086 buildMessage( msg, vargs );
00087
00088
00089 setMark( file, lineNumber );
00090 }
00091
00102 BrokenBarrierException( const char* file, const int lineNumber,
00103 const std::exception* cause,
00104 const char* msg, ... )
00105 : decaf::lang::Exception( cause )
00106 {
00107 va_list vargs ;
00108 va_start( vargs, msg );
00109 buildMessage( msg, vargs );
00110
00111
00112 setMark( file, lineNumber );
00113 }
00114
00122 virtual BrokenBarrierException* clone() const{
00123 return new BrokenBarrierException( *this );
00124 }
00125
00126 virtual ~BrokenBarrierException() throw();
00127
00128 };
00129
00130 }}}
00131
00132 #endif