HCore SysError

Files CCore/inc/sys/SysError.h CCore/src/sys/SysError.cpp

It is assumed that the OS reports errors using error codes. These codes can be converted to text messages.


#ifndef CCore_inc_sys_SysError_h
#define CCore_inc_sys_SysError_h
 
#include <CCore/inc/Gadget.h>

namespace CCore {
namespace Sys {

/* enum ErrorType */ 

enum ErrorType : ....
 {
  NoError = 0
 };
 
/* classes */ 

struct ErrorDesc;

/* struct ErrorDesc */ 

struct ErrorDesc
 {
  // public data
 
  const char *str;
  ulen len;
  
  // public

  bool init(ErrorType error,PtrLen<char> buf) noexcept;
  
  const char * getPtr() const { return str; }
  
  ulen getLen() const { return len; }
 };
  
} // namespace Sys
} // namespace CCore
 
#endif

The enumeration ErrorType represents error codes. It may have a base integral type (usually int). All target functions report errors using this enumeration.

NoError is a "no-error" code and it must be equal zero.

The structure ErrorDesc is used to convert a error code to the text message.

The fields str and len defines the text string.

init() is used to initialize the structure. The first argument is a error code. The second is a buffer to store the text message. It may or may not be used to copy a text representation of the error code. If the buffer is not used, then the text is a static text. If the buffer is not large enough, the message may be truncated or the function may fail. The return value is true in case of success.