Załóżmy, że mamy jakieś nazwane wyliczenia:
enum MyEnum {
XYZ,
ABC = 0x50
};
Poszukałem skryptu (dowolnego języka), który skanuje wszystkie nagłówki w moim projekcie i generuje nagłówek z jedną funkcją na wyliczenie.
char* enum_to_string(MyEnum t);
I implementacja z czymś takim:
char* enum_to_string(MyEnum t){
switch(t){
case XYZ:
return "XYZ";
case ABC:
return "ABC";
default:
return "INVALID ENUM";
}
}
Rozwiązanie nie powinno modyfikować mojego źródła, z wyjątkiem wygenerowanych funkcji. Wyliczenia są w interfejsie API. Macie jakiś pomysł?
1 odpowiedź
Możesz użyć GCCXML.
Uruchomienie GCCXML na przykładowym kodzie powoduje:
<GCC_XML>
<Namespace id="_1" name="::" members="_3 " mangled="_Z2::"/>
<Namespace id="_2" name="std" context="_1" members="" mangled="_Z3std"/>
<Enumeration id="_3" name="MyEnum" context="_1" location="f0:1" file="f0" line="1">
<EnumValue name="XYZ" init="0"/>
<EnumValue name="ABC" init="80"/>
</Enumeration>
<File id="f0" name="my_enum.h"/>
</GCC_XML>
Możesz użyć dowolnego języka, który wolisz, aby pobrać tagi Enumeration i EnumValue i wygenerować pożądany kod.