QbDebugError.h

00001 /* QbDebugError class - code taken and modified from QbDebugError by SIM Coin */
00002 #ifndef QBDEBUGERROR_H
00003 #define QBDEBUGERROR_H
00004 
00005 #include <Inventor/errors/SoError.h>
00006 
00007 // Avoid problem with Microsoft Win32 API headers (yes, they actually
00008 // #define ERROR -- in wingdi.h).
00009 #if defined(ERROR)
00010 #define SODEBUGERROR_STORE_ERROR_DEF ERROR
00011 #undef ERROR
00012 #endif /* ERROR */
00013 
00014 
00015 class QbDebugError : public SoError {
00016   typedef SoError inherited;
00017 
00018 public:
00019   enum Severity { ERROR, WARNING, INFO };
00020 
00021   static void setHandlerCallback(SoErrorCB * const function,
00022                                  void * const data);
00023   static SoErrorCB * getHandlerCallback(void);
00024   static void * getHandlerData(void);
00025 
00026   static SoType getClassTypeId(void);
00027   virtual SoType getTypeId(void) const;
00028 
00029   QbDebugError::Severity getSeverity(void) const;
00030 
00031   static void post(const char * const source, const char * const format, ...);
00032   static void postWarning(const char * const source, const char * const format, ...);
00033   static void postInfo(const char * const source, const char * const format, ...);
00034 
00035   static void initClass(void);
00036 
00037 protected:
00038   virtual SoErrorCBPtr getHandler(void * & data) const;
00039 
00040 private:
00041   static void callbackForwarder(const struct cc_debugerror * error, void * data);
00042   static void commonPostHandling(Severity severity, const char * type,
00043                                  const char * source, const SbString & s);
00044 
00045   static SoType classTypeId;
00046   static SoErrorCB * callback;
00047   static void * callbackData;
00048   Severity severity;
00049 };
00050 
00051 // Avoid problem with Microsoft Win32 API headers (see above).
00052 #if defined(SODEBUGERROR_STORE_ERROR_DEF)
00053 #define ERROR SODEBUGERROR_STORE_ERROR_DEF
00054 #undef SODEBUGERROR_STORE_ERROR_DEF
00055 #endif /* SODEBUGERROR_STORE_ERROR_DEF */
00056 
00057 #endif // !QBDEBUGERROR_H

Generated on Thu Oct 28 10:59:16 2004 for gitk by doxygen 1.3.6