| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Шаблонная магия. Возможно ли реализовать? |
| Автор: kuzulis 9.1.2014, 11:35 | ||||||||||||
| Всем доброго времени. Имеется некое ембеддед у-во (на ARM MCU). Оно имеет адресное пространство из 4 байтных регистров, где каждый регистр, соответственно, имеет уникальный адрес и назначение. Для простоты пусть будет как-то так:
Т.е. у нас есть как-бы две разных сущности (Entity A, B) , каждая из которых состоит из трех однотипных регистров x,y,z. Также, каждая сущность имеет разный набор флагов (масок) для своих регистров):
Далее, объявлена некая структура, описывающая карту регистров сущностей:
На C имеется API для доступа к регистрам и установки/сброса флагов:
ИМХО, это API ужасно. Так, на С++ (без шаблонов) я бы реализовал это как-то так (псевдо код):
Но опять-таки это накладно, громоздко и пр.. Хотелось бы упростить это с использованием шаблонов.. Например, как-то так:
возможно ли это? Или можно как-нибудь по другому упростить API? |
| Автор: baldina 9.1.2014, 13:14 | ||
если переменная часть - базовый адрес и набор флагов, можно типа такого (проверки не стал делать что бы не загромождать)
это наверно не идеальный вариант, зависит от того, как вы будете использовать, но в качестве источника некоторых идей думаю пойдет |
| Автор: kuzulis 9.1.2014, 17:21 |
| Да, спасибо.. Но все-равно что-то не то.. Наверное останусь на чистых С-ях и попробую переделать API на что-то человеческое.. |
| Автор: baldina 9.1.2014, 17:55 | ||||
тогда достаточно одной функции
ну и вариации по желанию
|
| Автор: baldina 9.1.2014, 18:13 | ||
вариации можно темплейтами (мне правда не нравится)))
|
| Автор: akizelokro 9.1.2014, 20:35 |
| Недавно я наблюдал споры о некоем сингелтоне, точнее, о его потоконебезопасности на компиляторах, не поддерживающих стандарт С++ 11 чтоли. Но не суть важно. Но это я всё посчитал лабудой, так как там стоит дождаться выхода компилятора, соответствующего стандарту. А вот что мне показалось более забавным. Раз возможно описать Singleton, то можно описать и Doubleton (класс, который будет содержать только два экземпляра), и Tripleton (три, соответственно), .. и N-ton. От нефикх делать я даже несколько вариантов таких закорючек составил. Так что не парьтесь. Реализуйте шаблон для Entity, а дальше Entity объединяйте с Nton'ом (вот вам и своеобразный аналог enum через шаблоны). Добавлено @ 20:37 Doubleton, Tripleton и Nton - теперь мой копирайт. При перепечатке "ля-ля-тополя" и так далее |
| Автор: baldina 9.1.2014, 21:51 | ||
изучай))) иногда кажется ты пишешь не приходя в сознание, причем во все топики сразу |