generalização do mapeamento de um sistema multi-variável / camada

Eu escrevi uma aplicação comC ++ / QT que se comunica com um dispositivo para ler / escrever suas variáveis, coloca / as coloca em uma estrutura e as apresenta em um gui para ambos os propósitos de visualização / edição.

1) O dispositivo vem com um código c de exemplo que também define o protocolo de comunicação (de uma forma muito ruim) como:

#define VALUE_1 0x12345678
#define VALUE_2 0xDEADBEEF
#define MY_DEVICE_VAR (VALUE_1 << 4) & (VALUE_2 >> 6)
#define MY_DEVICE_VAR_1 (MY_DEVICE_VAR & (VALUE_1 << 2)
#define MY_DEVICE_VAR_2 (MY_DEVICE_VAR & (VALUE_2 << 4)
#define MY_DEVICE_VAR_2 (MY_DEVICE_VAR & (VALUE_2 << 4)
// .. and 300 more lines like above

Então a variávelVAR_1 é representado por:MY_DEVICE_VAR_1.

2) Eu tenho uma estrutura que contém todas as variáveis ​​do dispositivo:

struct MyDeviceData
{
    int var1;
    double var2;
    char var3;
    bool var4;
        .
        .
};

É basicamente um armazenamento para / uma projeção dos dados lidos do dispositivo. Existem 4 tipos diferentes de variáveis ​​POD.

3) Finalmente meu gui tem elementos gui para mostrar e editar a instância de MyDeviceData

class MyGuI
{
    QLineEdit var1;
    QLineEdit var2;
    QComboBox var3;
    QCheckBox var4;
       .
       .
};

Agora minhas perguntas são:

1) Estou fazendo o mapeamento deMY_DEVICE_VAR1 ->MyDeviceData::var1 ->MyGUI::var1 comif eswitch/case declarações com as quais não tenho orgulho. Qual seria a melhor maneira "programática" de fazer o mapeamento?

2) Quando o valor de um elemento gui é alterado, quero enviar valor atualizado para o cartão. além de substituir as funções de manipulador de eventos como "textChanged, selectedIndexChanged"etc. Existe algum método" mais inteligente "(QSignalMapper?)

3) Nesse tipo de projeto, é possível generalizar todo o trabalho pesado? (uma ferramenta de gerador de código? modelos?)

questionAnswers(1)

yourAnswerToTheQuestion