Usando tipos enumerados como Bitflags (2 / 3 paso)

Paso 2: Uso de tipos enumerados

Cómo muchas veces tenemos chicos utilizan este idioma:

template
 class EnumFlag {
 public:
     void set(T f) {
         _flags |= (1<<(uint64_t)f);
     }
     void unset(T f) {
        _flags &= ~(1<<(uint64_t)f);
    }
     void toggle(T f) {
         _flags ^= (1<<(uint64_t)f);
     }
     void zero() { _flags = (uint64_t)0; }
     bool has(T f) { return (_flags & f); }

 

private:
     uint64_t _flags;
 };

A veces puede ser un gran dolor para gestionar las máscaras de bits, sobre todo cuando vas por encima del espacio de 32 bits de bandera. Cualquier pequeño error en tu define completamente puede deshacerse de su comprobación de bandera. Hay una manera más fácil a través de la creación dinámica de máscaras de bits con la localización de pedacito, y he escrito una clase que lo hace solo.

enum class MyFlags : uint64_t {
     FLAG1 = 1,
     FLAG2,
     FLAG3,
     FLAG4
 };

 

EnumFlag<MyFlags> myFlag;
 // Initialize the flags
 myFlag.zero();
 // Set flag2
 myFlag.set(MyFlags::FLAG2);
 // Check for flag3
 if (myFlag.has(MyFlags.FLAG3) do_something();

Obviamente cambiaría uint64_t a uint32_t si estás en un sistema de 32 bits. Se
Utilice un EnumFlag con enumeradores indexadas 1, así:

Observe que las banderas son simplemente elementos de un tipo de datos enumerados. Esto no significa duro código de la máscara de la bandera con el nombre de la bandera y le da una manera fácil de insertar nuevas banderas en cualquier parte de la estructura de la bandera de enum y la próxima vez que se compila a refactorizar todo.

¿Cómo limpio es?!

Artículos Relacionados

Usando el LM386 como un oscilador.

Usando el LM386 como un oscilador.

Mayoría de la gente sabe el LM386 como un amplificador mono. Lo que puede sorprender a algunas personas es que el LM386 puede también fácilmente convertirse en un oscilador sin cualquier otro específico de IC como el chip 555 temporizador común.En es
Usando la PSP como Joystick de PC y luego controlar su ordenador con la PSP

Usando la PSP como Joystick de PC y luego controlar su ordenador con la PSP

puede hacer muchas cosas interesantes con el homebrew de la PSP y en este instructable va de la cam para enseñarte a utilizar tu PSP como joystick para jugar juegos, pero también hay un programa que te permite usar tu joystick como el ratón.Aquí está
Usando Arduino UNO como DAC de alta resolución 3-CH

Usando Arduino UNO como DAC de alta resolución 3-CH

En esta aplicación, daremos una demostración sobre cómo construir una fuente de alimentación de alta precisión utilizando el DAC 3000 y una fuente de referencia de alta precisión REF4096.STEP1:List de MaterialDirección de la tienda de eBay:BUONO UNO
Usando el cubo como un soporte de taladro

Usando el cubo como un soporte de taladro

Un cubo de café Folgers puede transformarse en un soporte para un taladro portátil cuando se trabaja en un proyecto y cuando está poniendo en almacenamiento que puede ser colgado en un gancho en la pared. Con la adición de una manija hecha de una per
Usando un LED como indicador para diferentes eventos en su sistema - Arduino

Usando un LED como indicador para diferentes eventos en su sistema - Arduino

Muchos sistemas o máquinas se someten a diferentes eventos. Por ejemplo, cuando usted enciende su ordenador portátil, un LED se enciende para mostrar poder sobre eventos de estado. Otro LED se enciende cuando se conecta en su cargador; este otro LED
Como subir códigos a Lilypad Arduino sin FTDI con usando Arduino Uno

Como subir códigos a Lilypad Arduino sin FTDI con usando Arduino Uno

Hoy, voy a demostrarte que yo había diseñado un problema con mi módulo FTDI mientras estoy tratando de subir a cualquiera - en el IDE de Arduino - códigos desde mi computadora a la placa Lilypad Arduino Atmega328.En realidad, debe utilizar los módulo
101 + Hacks de vida usando los palillos

101 + Hacks de vida usando los palillos

¿Piensa en palillos son sólo para los países del este? CREO QUE OTRA VEZ :)Aquí hay 101 + increíbles (e inusuales) cosas que puedes con los palillos en la cocina, comedor, garaje/taller, "Cueva de hombre", oficina, casa cuarto de baño, bibliotec
Como soldadura sin electricidad (o un soldador)

Como soldadura sin electricidad (o un soldador)

Soldar es una habilidad valiosa. Hay un montón de situaciones donde la capacidad de reparar o modificar electrónica realmente puede salvar el día. Pero la mayoría de las personas no lleva un cautín alrededor con ellos. Y aunque contaba con un soldado
Como ver DVDs en un Netbook

Como ver DVDs en un Netbook

este instructivo puede consultarse en la web del autor - http://www.neatinformation.com/Si usted enlace a este instructable desde otro sitio web, por favor incluya un enlace a la Web de Información aseado .Netbooks son extremadamente ligeros y relati
Persianas automatización usando un LinkIt

Persianas automatización usando un LinkIt

Automatización de persianas, es un proyecto de fin de semana, usted puede poner juntos usando plataforma Mediatek LinkIt uno y 3D impreso piezas para que los archivos STL se unen en el paso 2.Para girar la varilla/barra ciega vamos a utilizar un serv
IoT gráficos usando las herramientas de Google: Introducción

IoT gráficos usando las herramientas de Google: Introducción

La revolución de internet conectado sensor está aquíSe está haciendo más fácil todos los días conecta su proyecto Arduino, Raspberry Pi,ESP8266, Edisono fotón a internet y datos de medición del sensor a una base de datos de nube como ThingSpeak o Dat
Como usar LightScribe y etiqueta tus discos!

Como usar LightScribe y etiqueta tus discos!

Hola, acabo de hacer mi primer disco mediante LightScribe.  Es muy fácil de hacer y da resultados perfectos!  Este es mi primer real Instructable, he tenido otros tres pero quité porque sólo había acometido a través de ellos.  Por favor comenten y pu
Como hacer una katana de prop(wood) y de la envoltura

Como hacer una katana de prop(wood) y de la envoltura

Ahora, no estoy totalmente seguro si es igual en todas partes, pero por lo menos en el con que me he ido a, llevando espadas de metal está prohibido, o, si se permite, está prohibido desenvainar espadas de metal, tiempo tienen borde o no.Además, seam
Cómo hablar a alguien usando el Ham Radio

Cómo hablar a alguien usando el Ham Radio

Radio de jamón es genial, pero puede ser muy nervio wracking para hablar con alguien uso. Hablarle a alguien usando la radio de jamón se conoce comúnmente como 'QSO' o un 'contacto'. Aunque puede parecer realmente asustadizo al principio, no te arrep