Sto scrivendo un'interfaccia tra due modelli di configurazione che utilizzano strutture diverse. Pur sapendo che non esiste un modo "magico" per tradurre da un tipo di struttura a un altro, ho vagato se ci fossero alcune buone pratiche o un modo efficiente / efficace per configurare un tale sistema. Penso che sia simile a come i programmi possono gestire diverse strutture di configurazione attraverso le versioni.
Ecco un semplice esempio: diciamo che abbiamo una struttura di tipo A che contiene 3 parametri:
struct A {
int alpha;
bool beta;
bool charlie;
};
La seconda struttura di configurazione condivide gli stessi parametri, ma in un ordine diverso, vediamo la struttura B:
struct B {
union {
struct {
char beta : 1;
char charlie : 1;
} bit;
char field;
}
int alpha;
};
Un semplice programma per convertire un A in un B sarebbe:
void convert(A const *aelem, B *belem) {
belem->alpha = aelem->alpha;
belem->bit.beta = aelem->beta;
belem->bit.charlie = aelem->charlie;
}
Quindi, anche se questo può sembrare abbastanza semplice con tali strutture di base, ho a che fare con dozzine di strutture, ognuna delle quali contiene circa 50 parametri. Quindi qualcuno sa di un buon modello da seguire per un simile problema?