You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
2.5 KiB
106 lines
2.5 KiB
/**
|
|
* @file pcf_flags.cpp
|
|
*
|
|
* @author Guy Maurel
|
|
* @license GPL v2+
|
|
*/
|
|
|
|
#include "pcf_flags.h"
|
|
|
|
static const char *pcf_names[] =
|
|
{
|
|
"IN_PREPROC", // 0
|
|
"IN_STRUCT", // 1
|
|
"IN_ENUM", // 2
|
|
"IN_FCN_DEF", // 3
|
|
"IN_FCN_CALL", // 4
|
|
"IN_SPAREN", // 5
|
|
"IN_TEMPLATE", // 6
|
|
"IN_TYPEDEF", // 7
|
|
"IN_CONST_ARGS", // 8
|
|
"IN_ARRAY_ASSIGN", // 9
|
|
"IN_CLASS", // 10
|
|
"IN_CLASS_BASE", // 11
|
|
"IN_NAMESPACE", // 12
|
|
"IN_FOR", // 13
|
|
"IN_OC_MSG", // 14
|
|
"IN_WHERE_SPEC", // 15
|
|
"IN_DECLTYPE", // 16
|
|
"FORCE_SPACE", // 17
|
|
"STMT_START", // 18
|
|
"EXPR_START", // 19
|
|
"DONT_INDENT", // 20
|
|
"ALIGN_START", // 21
|
|
"WAS_ALIGNED", // 22
|
|
"VAR_TYPE", // 23
|
|
"VAR_DEF", // 24
|
|
"VAR_1ST", // 25
|
|
"VAR_INLINE", // 26
|
|
"RIGHT_COMMENT", // 27
|
|
"OLD_FCN_PARAMS", // 28
|
|
"LVALUE", // 29
|
|
"ONE_LINER", // 30
|
|
"EMPTY_BODY", // 31
|
|
"ANCHOR", // 32
|
|
"PUNCTUATOR", // 33
|
|
"INSERTED", // 34
|
|
"LONG_BLOCK", // 35
|
|
"OC_BOXED", // 36
|
|
"KEEP_BRACE", // 37
|
|
"OC_RTYPE", // 38
|
|
"OC_ATYPE", // 39
|
|
"WF_ENDIF", // 40
|
|
"IN_QT_MACRO", // 41
|
|
"IN_FCN_CTOR", // 42 Issue #2152
|
|
"IN_TRY_BLOCK", // 43 Issue #1734
|
|
"INCOMPLETE", // 44
|
|
"IN_LAMBDA", // 45
|
|
"WF_IF", // 46
|
|
"NOT_POSSIBLE", // 47
|
|
"IN_CONDITIONAL", // 48 Issue #3558
|
|
"OC_IN_BLOCK", // 49
|
|
"CONT_LINE", // 50
|
|
};
|
|
|
|
|
|
std::string pcf_flags_str(PcfFlags flags)
|
|
{
|
|
char buffer[64];
|
|
|
|
// Generate hex representation first
|
|
snprintf(buffer, 63, "[0x%llx:", (long long unsigned int)(flags));
|
|
|
|
// Add human-readable names
|
|
auto out = std::string{ buffer };
|
|
auto first = true;
|
|
|
|
for (size_t i = 0; i < ARRAY_SIZE(pcf_names); ++i)
|
|
{
|
|
if (flags & static_cast<E_PcfFlag>(pcf_bit(i)))
|
|
{
|
|
if (first)
|
|
{
|
|
first = false;
|
|
}
|
|
else
|
|
{
|
|
out += ',';
|
|
}
|
|
out += pcf_names[i];
|
|
}
|
|
}
|
|
|
|
out += ']';
|
|
return(out);
|
|
}
|
|
|
|
|
|
void log_pcf_flags(log_sev_t sev, PcfFlags flags)
|
|
{
|
|
if (!log_sev_on(sev))
|
|
{
|
|
return;
|
|
}
|
|
log_fmt(sev, " chunk flags: %s\n", pcf_flags_str(flags).c_str());
|
|
}
|