tag/Settings: convert to bit mask
This commit is contained in:
		| @@ -39,7 +39,7 @@ TagLoadConfig() | ||||
| 	if (value == nullptr) | ||||
| 		return; | ||||
|  | ||||
| 	std::fill_n(ignore_tag_items, size_t(TAG_NUM_OF_ITEM_TYPES), true); | ||||
| 	global_tag_mask = 0; | ||||
|  | ||||
| 	if (StringEqualsCaseASCII(value, "none")) | ||||
| 		return; | ||||
| @@ -62,7 +62,7 @@ TagLoadConfig() | ||||
| 				FormatFatalError("error parsing metadata item \"%s\"", | ||||
| 						 c); | ||||
|  | ||||
| 			ignore_tag_items[type] = false; | ||||
| 			global_tag_mask |= tag_mask_t(1) << unsigned(type); | ||||
|  | ||||
| 			s++; | ||||
| 			c = s; | ||||
|   | ||||
| @@ -19,7 +19,4 @@ | ||||
|  | ||||
| #include "TagSettings.h" | ||||
|  | ||||
| bool ignore_tag_items[TAG_NUM_OF_ITEM_TYPES] = { | ||||
| 	/* ignore comments by default */ | ||||
| 	[TAG_COMMENT] = true, | ||||
| }; | ||||
| tag_mask_t global_tag_mask = (tag_mask_t)-1 & ~(1 << TAG_COMMENT); | ||||
|   | ||||
| @@ -23,9 +23,11 @@ | ||||
| #include "TagType.h" | ||||
| #include "Compiler.h" | ||||
|  | ||||
| #include <stdbool.h> | ||||
| #include <stdint.h> | ||||
|  | ||||
| extern bool ignore_tag_items[TAG_NUM_OF_ITEM_TYPES]; | ||||
| typedef uint_least32_t tag_mask_t; | ||||
|  | ||||
| extern tag_mask_t global_tag_mask; | ||||
|  | ||||
| #ifdef __cplusplus | ||||
|  | ||||
| @@ -33,7 +35,7 @@ gcc_const | ||||
| static inline bool | ||||
| IsTagEnabled(unsigned tag) | ||||
| { | ||||
| 	return !ignore_tag_items[tag]; | ||||
| 	return global_tag_mask & (1u << tag); | ||||
| } | ||||
|  | ||||
| gcc_const | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Max Kellermann
					Max Kellermann