Status.h
Go to the documentation of this file.
1 
20 #pragma once
21 
22 #include <WString.h>
23 #include <IFS/Error.h>
24 
25 #define CONFIGDB_ERROR_MAP(XX) \
26  XX(OK) \
27  XX(FormatError) \
28  XX(UpdateConflict) \
29  XX(FileError)
30 
31 #define CONFIGDB_FORMAT_ERROR_MAP(XX) \
32  XX(BadSyntax) \
33  XX(BadType) \
34  XX(BadSelector) \
35  XX(BadIndex) \
36  XX(BadProperty) \
37  XX(NotInSchema) \
38  XX(UpdateConflict)
39 
40 namespace ConfigDB
41 {
42 enum class Error {
43 #define XX(err) err,
45 #undef XX
46 };
47 
48 enum class FormatError {
49 #define XX(err) err,
51 #undef XX
52 };
53 
54 struct Status {
55  struct Code {
56  int fileError{};
58  };
59 
62 
63  static Status fileError(int errorCode)
64  {
65  return Status{Error::FileError, {.fileError = errorCode}};
66  }
67 
69  {
70  return Status{Error::FormatError, {.formatError = err}};
71  }
72 
74  {
76  code.formatError = err;
77  return *this;
78  }
79 
80  explicit operator bool() const
81  {
82  return error == Error::OK;
83  }
84 
85  String toString() const;
86 
87  size_t printTo(Print& p) const
88  {
89  return p.print(toString());
90  }
91 };
92 
93 } // namespace ConfigDB
94 
96 {
97  return status.toString();
98 }
99 
String toString(ConfigDB::Status status)
Definition: Status.h:95
#define CONFIGDB_ERROR_MAP(XX)
Definition: Status.h:25
#define CONFIGDB_FORMAT_ERROR_MAP(XX)
Definition: Status.h:31
Provides formatted output to stream.
Definition: Print.h:37
size_t print(char c)
Prints a single character to output stream.
Definition: Print.h:103
The String class.
Definition: WString.h:133
Definition: Array.h:26
FormatError
Definition: Status.h:48
Error
Definition: Status.h:42
Definition: Status.h:55
int fileError
Definition: Status.h:56
FormatError formatError
Definition: Status.h:57
Definition: Status.h:54
Status & operator=(FormatError err)
Definition: Status.h:73
Code code
Definition: Status.h:61
static Status fileError(int errorCode)
Definition: Status.h:63
Error error
Definition: Status.h:60
String toString() const
static Status formatError(FormatError err)
Definition: Status.h:68
size_t printTo(Print &p) const
Definition: Status.h:87