Какими из операторов можно проверить присутствие флага, и удалить его если он есть, в противном случае добавить?
Значения флагов имеет тип uint32_t
.
bool window::set_fullscreen(const bool value) const
{
uint32_t flags = SDL_GetWindowFlags(m_window_.get());
if(flags & SDL_WINDOW_FULLSCREEN)
{
if(value)
{
return true;
}
flags &= SDL_WINDOW_FULLSCREEN; // удалить флаг если значение value false
}
else
{
// Тут необходимо добавить флаг в значение flags и вызвать соответствующую ф-цию
}
return SDL_SetWindowFullscreen(m_window_.get(), flags) == 0;
}
Если переменная флагов - flags
, а конкретный бит - mask
(например, 000100 в бинарной записи), то
Проверка установленности:
if (flags&mask) { установлен }
Установка флага:
flags |= mask;
Сброс флага:
flags &= ~mask;
Изменение флага на противоположный:
flags ^= mask;
Видимо, флаги здесь соответствуют выставленным битам, например FlagX = 0x00000800
означает, что 11-й бит установлен.
Для установки флага используется битовое ИЛИ
flags = flags | FlagX
Для сброса нужно, не портя других битов, обнулить конкретный. Для этого инвертируем константу флага (все биты становятся единичными, кроме данного) и выполняем битовое И
flags = flags & (~FlagX)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть проект, на C++ с OpenGL - просто камера, которой можно управлять с помощью клавиатурыНо когда включена русская раскладка, то камера не перемещается,...
Есть вот такая вот программа которая входящие данные забивает в бинарное дерево, а потом считает количество обращений к элементамНужно после...
Есть в котором встречаются <i> и </i>Заменить каждое вхождение <i> на <курсив>, а каждое вхождение </i> на <конец курсив>
Программа запрашивает у пользователя шестизначное числоВывести на экран, соблюдал ли он правила