Я пытаюсь создать библиотеку-компоненты сущностей в C ++, которая позволяет спецификации как статически объявленных (или «встроенных»), так и компонентов времени выполнения. Первый будет иметь свои соответствующие таблицы в памяти, предварительно распределенные компилятором, в то время как последний вызовет A API C под капюшоном для регистрации компонентов во время выполнения и предназначен для использования разработчиками плагина или мода. Таким образом, чтобы библиотека ECS статически генерировала начальный статически выделенный буфер для хранения всех таблиц компонентов при составлении, мне нужно иметь возможность зацикливаться на всех компонентах во время компиляции. Каждый компонент должен быть объявлен с использованием компонента () «Ключевое слово» ( кашель макрос), как таковая:
component(Transform2D) {
mat3 transform {};
};
component(Collide2D) {
// ...
};
namespace mynamespace {
// the macro SHOULD be scope-agnostic for convenience
component(mycomponent) {
// ...
};
}
Я уже включил контр-библиотеку Contexpr Falemagn для реализации картирования произвольных типов для увеличения идентификаторов, но у меня возникают проблемы с реализацией обратного-отображение произвольных идентификаторов (например, int s). «Реестр», который отображает int s произвольных типах, но тот, который может соответствовать определению макроса.// Type registry starts at zero
struct some_type {
// ...
};
REGISTER(some_type); // some_type gets mapped to int 0
namespace my_namespace {
struct some_type {
// ...
};
REGISTER(some_type); // my_namespace::some_type gets mapped to int 1
}
static_assert(std::is_same_v
Нормальный способ, который я думаю, что можно было бы реализовать это через специализации шаблона: < /p>
< /p>
Подробнее здесь: https://stackoverflow.com/questions/797 ... istry-in-c
Реестр типов компиляции в C ++ ⇐ C++
Программы на C++. Форум разработчиков
1753298810
Anonymous
Я пытаюсь создать библиотеку-компоненты сущностей в C ++, которая позволяет спецификации как статически объявленных (или «встроенных»), так и компонентов времени выполнения. Первый будет иметь свои соответствующие таблицы в памяти, предварительно распределенные компилятором, в то время как последний вызовет A API C под капюшоном для регистрации компонентов во время выполнения и предназначен для использования разработчиками плагина или мода. Таким образом, чтобы библиотека ECS статически генерировала начальный статически выделенный буфер для хранения всех таблиц компонентов при составлении, мне нужно иметь возможность зацикливаться на всех компонентах во время компиляции. Каждый компонент должен быть объявлен с использованием компонента () «Ключевое слово» ( кашель макрос), как таковая:
component(Transform2D) {
mat3 transform {};
};
component(Collide2D) {
// ...
};
namespace mynamespace {
// the macro SHOULD be scope-agnostic for convenience
component(mycomponent) {
// ...
};
}
Я уже включил контр-библиотеку Contexpr Falemagn для реализации картирования произвольных типов для увеличения идентификаторов, но у меня возникают проблемы с реализацией обратного-отображение произвольных идентификаторов (например, int s). «Реестр», который отображает int s произвольных типах, но тот, который может соответствовать определению макроса.// Type registry starts at zero
struct some_type {
// ...
};
REGISTER(some_type); // some_type gets mapped to int 0
namespace my_namespace {
struct some_type {
// ...
};
REGISTER(some_type); // my_namespace::some_type gets mapped to int 1
}
static_assert(std::is_same_v
Нормальный способ, который я думаю, что можно было бы реализовать это через специализации шаблона: < /p>
< /p>
Подробнее здесь: [url]https://stackoverflow.com/questions/79712372/compile-time-type-registry-in-c[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия