Czy istnieje prosty sposób na konwersję wyliczenia C ++ na ciąg?

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.

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.