Любой способ создать биту -справочную обертку в общем виде?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Любой способ создать биту -справочную обертку в общем виде?

Сообщение Anonymous »

Я создаю обертки для C -структуры, содержащих определения регистра с сильным использованием битфилд. Я хотел бы создать ссылки для всех из них, чтобы обеспечить постоянный API-API сокращения (реальные структуры могут использовать глубокое гнездование с длинными именами, которые бы любил инженер HW). PrettyPrint-Override ">

Код: Выделить всё

#include 
#include 

class storage {
public:
auto get_x() { return x_ref{ *this }; }
auto get_y() { return y_ref{ *this }; }
auto& get_z() { return z; }

private:
uint8_t x : 3;
uint8_t y : 5;
uint8_t z;

struct x_ref {
storage& store;
operator uint8_t() { return store.x; }
auto& operator=(uint8_t value) { store.x = value; return *this; }
};

struct y_ref {
storage& store;
operator uint8_t() { return store.y; }
auto& operator=(uint8_t value) { store.y = value; return *this; }
};
};

int main(int argc, char **argv) {
storage s{};
s.get_x() = 3;
s.get_y() = 5;
s.get_z() = 7;

uint8_t x = s.get_x(), y = s.get_y(), z = s.get_z();
std::printf("%u, %u\n", x, y, z);
}
Есть ли способ создать x/y_ref в качестве общего шаблона? Я хотел бы иметь возможность написать что -то вроде Auto get_x () {return ref { *this}; } , который не является действительным синтаксисом для BitFields. std :: bitset :: reference не имеет этой проблемы, поскольку он всегда хранит ссылку на Uint8_t & (или более крупное слово) и индекс, поэтому у него нет ничего для шаблона.

Подробнее здесь: https://stackoverflow.com/questions/796 ... eneric-way
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Поместите справочную сетку поверх всего ImageView.
    Anonymous » » в форуме Android
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Поместите справочную сетку поверх всего ImageView.
    Anonymous » » в форуме Android
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Создать обертку вокруг симулированного ответа
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Создать обертку вокруг симулированного ответа
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как создать общую библиотечную обертку для статической библиотеки (без использования исходных файлов) с Cmake?
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»