Мое приложение написано на C. У меня есть модуль, который использует некоторые данные из определенной , приведенной в глобальной структуре. Теперь я должен расширить модуль, чтобы, возможно, работать против другой заданной глобальной структуры, которая в основном предоставляет те же поля (что касается моего модуля), но под разными именами.Инкапсулирующий доступ к аналогичным структурам
Вот аналогий автомобилей, надеюсь, сделать мою проблему более ясной. У меня эти две глобальные структуры, над которыми я не контролирую.
struct {
unsigned char manufacturer_id;
unsigned short top_speed;
} Car;
struct {
RGB_t color;
unsigned short topSpeed;
unsigned char mfr;
} Automobile;
Скажем, мой модуль Автоменеджмента использует информацию от Automobile. НАПРИМЕР,
const char *car_manager__get_manufacturer_name(car_manager_t *self)
{
return self->manufacturers[Automobile.mfr];
}
Я хотел бы расширить Car Manager для необязательно (возможно решается флагом в car_manager_t, например) используют ту же самую информацию от автомобиля, поэтому данная функция будет возвращать self->manufacturers[Car.manufacturer_id]
. Я не хочу дублировать логику в модуле, добавляя эту функциональность.
Я предполагаю, что мне нужно будет установить интерфейс для доступа к глобальным структурам. Любые предложения о том, как это сделать?
Вы можете быть более конкретными? – nmichaels