I need to map from one enum type to another. Here is the enum I am given:
enum CfgFruitType { CFGNoFruit, CFGApple, CFGApricot, CFGBanana,
CFGMango, CFGKiwi, CFGFig, CFGGrape, CFGMelon, CFGLemon,
CFGNectarine, CFGPineapple, CFGWatermelon, CFGCherry, CFGPear,
CFGStrawberry };
and I need to map this to a second enum:
enum FAddressType { AddressTypeUnknown, AddressTypeCherry,
AddressTypeApple, AddressTypePear, AddressTypePlum,
AddressTypeStrawberry };
Here is my implementation:
FAddressType maptype(CfgFruitType cfgtype) {
int mapper[16][2] =
{
{ CFGNoFruit, AddressTypeUnknown },
{ CFGApple, AddressTypeApple },
{ CFGApricot, AddressTypeUnknown },
{ CFGBanana, AddressTypeUnknown },
{ CFGMango, AddressTypeUnknown },
{ CFGKiwi, AddressTypeUnknown },
{ CFGFig, AddressTypeUnknown },
{ CFGGrape, AddressTypeUnknown },
{ CFGMelon, AddressTypeUnknown },
{ CFGLemon, AddressTypeUnknown },
{ CFGNectarine, AddressTypeUnknown },
{ CFGPineapple, AddressTypeUnknown },
{ CFGWatermelon, AddressTypeUnknown },
{ CFGCherry, AddressTypeCherry },
{ CFGPear, AddressTypePear },
{ CFGStrawberry, AddressTypeStrawberry }
};
return cfgtype < 16 ? (FAddressType)mapper[cfgtype][1] : AddressTypeUnknown;
}
Is this the best approach? How can it be improved?