Add a MU_TRANSLATE_ENUM to define translations between related but different enums
- 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.