Common System 0.2.0
Common interfaces and patterns for system integration
Loading...
Searching...
No Matches
utilities.h File Reference

Utility functions and macros for Result<T> pattern. More...

#include "core.h"
#include "compat.h"
#include <stdexcept>
#include <system_error>
#include <utility>
#include <variant>
Include dependency graph for utilities.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  kcenon::common::exception_mapper
 Maps standard exception types to appropriate error codes. More...
 

Namespaces

namespace  kcenon
 
namespace  kcenon::common
 Core interfaces.
 

Macros

#define COMMON_RETURN_IF_ERROR(expr)
 Return early if expression is an error.
 
#define COMMON_ASSIGN_OR_RETURN(decl, expr)
 Assign value or return error.
 
#define COMMON_RETURN_ERROR_IF(condition, code, message, module)
 Return error if condition is false.
 
#define COMMON_RETURN_ERROR_IF_WITH_DETAILS(condition, code, message, module, details)
 Return error with details if condition is false.
 

Functions

template<typename T >
Result< T > kcenon::common::ok (T value)
 Create a successful result.
 
VoidResult kcenon::common::ok ()
 Create a successful void result.
 
template<typename T >
Result< T > kcenon::common::make_error (int code, const std::string &message, const std::string &module="")
 Create an error result with code and message.
 
template<typename T >
Result< T > kcenon::common::make_error (int code, const std::string &message, const std::string &module, const std::string &details)
 Create an error result with details.
 
template<typename T >
Result< T > kcenon::common::make_error (const error_info &err)
 Create an error result from existing error_info.
 
template<typename T , typename F >
Result< T > kcenon::common::try_catch (F &&func, const std::string &module="")
 Convert exception to Result with automatic error code mapping.
 
template<typename F >
VoidResult kcenon::common::try_catch_void (F &&func, const std::string &module="")
 Convert exception to VoidResult with automatic error code mapping.
 

Detailed Description

Utility functions and macros for Result<T> pattern.

This header provides Result pattern utilities:

  • Factory functions (ok, make_error)
  • Exception to Result conversion utilities
  • Convenience macros for common patterns

For working with Result values, use member methods directly:

  • result.is_ok(), result.is_err()
  • result.value(), result.error()
  • result.value_or(), result.unwrap_or()
  • result.map(), result.and_then(), result.or_else()

Definition in file utilities.h.

Macro Definition Documentation

◆ COMMON_ASSIGN_OR_RETURN

#define COMMON_ASSIGN_OR_RETURN ( decl,
expr )
Value:
auto _result_##decl = (expr); \
if (_result_##decl.is_err()) { \
return _result_##decl.error(); \
} \
decl = std::move(_result_##decl).value()

Assign value or return error.

Usage: COMMON_ASSIGN_OR_RETURN(auto value, some_operation()); // Use 'value' here

Definition at line 294 of file utilities.h.

294#define COMMON_ASSIGN_OR_RETURN(decl, expr) \
295 auto _result_##decl = (expr); \
296 if (_result_##decl.is_err()) { \
297 return _result_##decl.error(); \
298 } \
299 decl = std::move(_result_##decl).value()

◆ COMMON_RETURN_ERROR_IF

#define COMMON_RETURN_ERROR_IF ( condition,
code,
message,
module )
Value:
do { \
if (condition) { \
return kcenon::common::error_info{code, message, module}; \
} \
} while(false)
Standard error information used by Result<T>.
Definition core.cppm:106

Return error if condition is false.

Usage: COMMON_RETURN_ERROR_IF(!ptr, error_codes::INVALID_ARGUMENT, "Null pointer", "MyModule");

Definition at line 307 of file utilities.h.

307#define COMMON_RETURN_ERROR_IF(condition, code, message, module) \
308 do { \
309 if (condition) { \
310 return kcenon::common::error_info{code, message, module}; \
311 } \
312 } while(false)

◆ COMMON_RETURN_ERROR_IF_WITH_DETAILS

#define COMMON_RETURN_ERROR_IF_WITH_DETAILS ( condition,
code,
message,
module,
details )
Value:
do { \
if (condition) { \
return kcenon::common::error_info{code, message, module, details}; \
} \
} while(false)

Return error with details if condition is false.

Usage: COMMON_RETURN_ERROR_IF_WITH_DETAILS(!valid, -1, "Invalid", "Module", "Details");

Definition at line 320 of file utilities.h.

320#define COMMON_RETURN_ERROR_IF_WITH_DETAILS(condition, code, message, module, details) \
321 do { \
322 if (condition) { \
323 return kcenon::common::error_info{code, message, module, details}; \
324 } \
325 } while(false)

◆ COMMON_RETURN_IF_ERROR

#define COMMON_RETURN_IF_ERROR ( expr)
Value:
do { \
auto _result_temp = (expr); \
if (_result_temp.is_err()) { \
return _result_temp.error(); \
} \
} while(false)

Return early if expression is an error.

Usage: COMMON_RETURN_IF_ERROR(some_operation()); // Continue only if successful

Definition at line 279 of file utilities.h.

279#define COMMON_RETURN_IF_ERROR(expr) \
280 do { \
281 auto _result_temp = (expr); \
282 if (_result_temp.is_err()) { \
283 return _result_temp.error(); \
284 } \
285 } while(false)