Azure / Azure/macro-utils-c

Add a MU_TRANSLATE_ENUM to define translations between related but different enums

Open
#33 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
8
Forks
17
Avg merge
31m
Merged PRs (30d)
3

Description

for example,

```c
#define MODULE_A_STATUS_VALUES \
MODULE_A_OK, \
MODULE_A_FAILED, \
MODULE_A_SPECIFIC_FAILURE

MU_DEFINE_ENUM(MODULE_A_STATUS, MODULE_A_STATUS_VALUES);

#define MODULE_B_STATUS_VALUES \
MODULE_B_FAILED, \
MODULE_B_OK, \
MODULE_B_CANCELED

MU_DEFINE_ENUM(MODULE_B_STATUS, MODULE_B_STATUS_VALUES);
```

May want to translate between `MODULE_A_STATUS` and `MODULE_B_STATUS`

```c
// generates MODULE_A_STATUS_translate_to_MODULE_B_STATUS
MU_DEFINE_ENUM_TRANSLATION(
MODULE_A_STATUS /*from*/, MODULE_B_STATUS /*to*/, MODULE_B_FAILED /*default for unknown values*/,
MODULE_A_OK, MODULE_B_OK,
MODULE_A_FAILED, MODULE_B_FAILED,
MODULE_A_SPECIFIC_FAILURE, MODULE_B_FAILED);

MODULE_B_STATUS do_module_a_work(void)
{
MODULE_A_STATUS result = foo();
MODULE_B_STATUS converted = MODULE_A_STATUS_translate_to_MODULE_B_STATUS(result);
return converted;
}
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.