// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: error.h,v 1.3 1998/07/12 23:58:47 jgg Exp $
+// $Id: error.h,v 1.8 2001/05/07 05:06:52 jgg Exp $
/* ######################################################################
Global Erorr Class - Global error mechanism
##################################################################### */
/*}}}*/
-// Header section: pkglib
#ifndef PKGLIB_ERROR_H
#define PKGLIB_ERROR_H
-#ifdef __GNUG__
-#pragma interface "apt-pkg/error.h"
-#endif
+
+#ifdef __GNUG__
+// Methods have a hidden this parameter that is visible to this attribute
+#define APT_MFORMAT1 __attribute__ ((format (printf, 2, 3)))
+#define APT_MFORMAT2 __attribute__ ((format (printf, 3, 4)))
+#else
+#define APT_MFORMAT1
+#define APT_MFORMAT2
+#endif
+
#include <string>
+using std::string;
+
class GlobalError
{
struct Item
public:
// Call to generate an error from a library call.
- bool Errno(const char *Function,const char *Description,...);
+ bool Errno(const char *Function,const char *Description,...) APT_MFORMAT2;
+ bool WarningE(const char *Function,const char *Description,...) APT_MFORMAT2;
/* A warning should be considered less severe than an error, and may be
ignored by the client. */
- bool Error(const char *Description,...);
- bool Warning(const char *Description,...);
+ bool Error(const char *Description,...) APT_MFORMAT1;
+ bool Warning(const char *Description,...) APT_MFORMAT1;
// Simple accessors
inline bool PendingError() {return PendingFlag;};
GlobalError();
};
-/* The 'extra-ansi' syntax is used to help with collisions. This is the
- single global instance of this class. */
-extern GlobalError *_error;
+// The 'extra-ansi' syntax is used to help with collisions.
+GlobalError *_GetErrorObj();
+#define _error _GetErrorObj()
+
+#undef APT_MFORMAT1
+#undef APT_MFORMAT2
#endif