libcute 0.1
Loading...
Searching...
No Matches
Macros
result.h File Reference
#include <stdbool.h>
#include "macro.h"
Include dependency graph for result.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define CU_RESULT_NAME(NAME)   NAME##_Result
 
#define CU_RESULT_FN(NAME, SUFFIX)   CU_CONCAT(CU_RESULT_NAME(NAME), SUFFIX)
 
#define CU_RESULT_HEADER(NAME, T, E)
 
#define CU_RESULT_DECL(NAME, T, E)
 
#define CU_RESULT_IMPL(NAME, T, E)
 

Detailed Description

Generic result helper macros.

Macro Definition Documentation

◆ CU_RESULT_DECL

#define CU_RESULT_DECL (   NAME,
  T,
 
)
Value:
typedef struct { \
union { \
T value; \
E error; \
}; \
bool isOk; \
} CU_RESULT_NAME(NAME); \
CU_RESULT_HEADER(NAME, T, E)
#define CU_RESULT_NAME(NAME)
Definition result.h:10

Declare the typed result struct and its helpers.

◆ CU_RESULT_FN

#define CU_RESULT_FN (   NAME,
  SUFFIX 
)    CU_CONCAT(CU_RESULT_NAME(NAME), SUFFIX)

Construct a result helper function name.

◆ CU_RESULT_HEADER

#define CU_RESULT_HEADER (   NAME,
  T,
 
)
Value:
CU_RESULT_NAME(NAME) CU_RESULT_FN(NAME, _ok)(T value); \
CU_RESULT_NAME(NAME) CU_RESULT_FN(NAME, _error)(E error); \
bool CU_RESULT_FN(NAME, _is_ok)(CU_RESULT_NAME(NAME) * result); \
T CU_RESULT_FN(NAME, _unwrap)(CU_RESULT_NAME(NAME) * result); \
E CU_RESULT_FN(NAME, _unwrap_error)(CU_RESULT_NAME(NAME) * result);
#define CU_RESULT_FN(NAME, SUFFIX)
Definition result.h:12

Declare result helper functions for a given type.

◆ CU_RESULT_IMPL

#define CU_RESULT_IMPL (   NAME,
  T,
 
)

Implement the typed result helpers.

◆ CU_RESULT_NAME

#define CU_RESULT_NAME (   NAME)    NAME##_Result

Build the concrete result type name for a category.