// Copyright (c) 2005 David Muse
// See the COPYING file for more information.

#ifndef ERROR_H
#define ERROR_H

#include <errno.h>

// The error class provides an interface to the errors that system calls
// can generate.

#ifdef RUDIMENTS_NAMESPACE
namespace rudiments {
#endif

class error {
        public:
                static        void           clearError();
                                        // Set the current system call error to
                                        // 0, "Success".

                static        void           setErrorNumber(int err);
                                        // Set the current system call error to
                                        // "err".  "err" should be one of the
                                        // errors defined in error.h such as
                                        // EINTR, ENOMEM, etc.

                static        int            getErrorNumber();
                                        // Returns the current system call
                                        // error.  Will match one of the errors
                                        // defined in error.h such as EINTR,
                                        // ENOMEM, etc.

                static        const char     *getErrorString();
                                        // Returns a string representation
                                        // of the current system call error.
                                        //
                                        // Note: this method returns a pointer
                                        // to an internal buffer which may be
                                        // overwritten at any time.
};

#ifdef RUDIMENTS_NAMESPACE
}
#endif

#endif