Skip to content

Instantly share code, notes, and snippets.

@theoknock
Last active January 3, 2022 06:35
Show Gist options
  • Save theoknock/5f7c4480a301afd5ffdb4304b7111c4d to your computer and use it in GitHub Desktop.
Save theoknock/5f7c4480a301afd5ffdb4304b7111c4d to your computer and use it in GitHub Desktop.
Iterating a set of bits (bit mask, bit field). Useful for indexing arrays using bit values without actually using bit values as index values
typedef NS_OPTIONS(uint8_t, CaptureDeviceConfigurationControlPropertyBit) {
CaptureDeviceConfigurationControlPropertyBitTorchLevel = 1<< 0,
CaptureDeviceConfigurationControlPropertyBitLensPosition = 1<< 1,
CaptureDeviceConfigurationControlPropertyBitExposureDuration = 1<< 2,
CaptureDeviceConfigurationControlPropertyBitISO = 1<< 3,
CaptureDeviceConfigurationControlPropertyBitZoomFactor = 1<< 4,
};
typedef CaptureDeviceConfigurationControlPropertyBit CaptureDeviceConfigurationControlPropertyBitMask;
CaptureDeviceConfigurationControlPropertyBitMask mask = (CaptureDeviceConfigurationControlPropertyBitTorchLevel |
CaptureDeviceConfigurationControlPropertyBitLensPosition|
CaptureDeviceConfigurationControlPropertyBitExposureDuration|
CaptureDeviceConfigurationControlPropertyBitISO|
CaptureDeviceConfigurationControlPropertyBitZoomFactor);
do{
printf("mask\t==\t%d\n", (CaptureDeviceConfigurationControlPropertyBitMask)mask);
} while((mask ^= mask & (0- mask)) != 0.0);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment