diff options
author | Max Kellermann <max@duempel.org> | 2015-08-24 11:10:15 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2015-08-24 11:20:45 +0200 |
commit | 0c19418e84a4db3f1e5a9ca143d5986a104a5675 (patch) | |
tree | d09343c895caf12ecd8d7c3b30957b4934529837 /src | |
parent | 60c077c79076f50317a4637b65c69bff3df134a7 (diff) |
tag/Settings: convert to bit mask
Diffstat (limited to 'src')
-rw-r--r-- | src/tag/TagConfig.cxx | 4 | ||||
-rw-r--r-- | src/tag/TagSettings.c | 5 | ||||
-rw-r--r-- | src/tag/TagSettings.h | 8 |
3 files changed, 8 insertions, 9 deletions
diff --git a/src/tag/TagConfig.cxx b/src/tag/TagConfig.cxx index e4d40696d..de5faff32 100644 --- a/src/tag/TagConfig.cxx +++ b/src/tag/TagConfig.cxx @@ -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; diff --git a/src/tag/TagSettings.c b/src/tag/TagSettings.c index 4582bd3c0..905265913 100644 --- a/src/tag/TagSettings.c +++ b/src/tag/TagSettings.c @@ -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); diff --git a/src/tag/TagSettings.h b/src/tag/TagSettings.h index a58bd8915..708517a08 100644 --- a/src/tag/TagSettings.h +++ b/src/tag/TagSettings.h @@ -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 |