Skip to content

Add a MU_TRANSLATE_ENUM to define translations between related but different enums #33

Description

@mattdurak

for example,

#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

// 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;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions