Hallo,
ich möchte gerne ein char array anhand einer Beschreibungsdatei zur
Laufzeit in ein JsonObject oder Key valuepair wandeln.
In der ersten Applikation hab ich ein Struct mit allen Werten erstellt
und mit reinterpret_cast gewandelt, danach ein JsonObject erstellt
1 | struct MyData
|
2 | {
|
3 | uint8_t Test0;
|
4 | uint8_t Test1;
|
5 | uint16_t Test2
|
6 | }
|
7 |
|
8 | Mydata* data = reinterpret_cast<Mydata*>(bytes);
|
Es funktioniert, aber ich muss bei Änderungen jedesmal das Struct
anpassen und die Applikation neu kompilieren.
Jetzt war mein Lösungsansatz eine Funktion zuschreiben, welche anhand
der Typenbezeichnung in der Beschreibungsdatei die Wandlung vornimmt.
Pseudocode:
1 | static auto ConvertbasedonString(char *type, char* buffer)
|
2 | {
|
3 | if(type == "uint8_t")
|
4 | return reinterpret_cast<char>(buffer)
|
5 | else if(type == "uint16_t")
|
6 | return reinterpret_cast<uint16_t>(buffer)
|
7 | }
|
1 | Beschreibungsdatei:
|
2 |
|
3 | Name: Test0
|
4 | type: uint8_t
|
5 | pos=0
|
6 | size=1
|
7 |
|
8 | Name: Test1
|
9 | type: uint8_t
|
10 | pos=1
|
11 | size=1
|
12 |
|
13 | Name: Test2
|
14 | type: uint16_t
|
15 | pos=2
|
16 | size=2
|
Wie kann ich in einer C++ Funktion unterschiedliche primitive Typen
zurückgeben oder gibt es für meine Idee einen anderen Lösungsansatz?