MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / DemangleModifiers

Method DemangleModifiers

demangler/msvc/demangle_msvc.cpp:1427–1492  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1425}
1426
1427void Demangle::DemangleModifiers(bool& _const, bool& _volatile, bool &isMember)
1428{
1429 m_logger->LogDebug("%s: '%s'\n", __FUNCTION__, reader.GetRaw());
1430 if (reader.Peek() == '@')
1431 return;
1432
1433 _const = false;
1434 _volatile = false;
1435 isMember = false;
1436 char elm = reader.Read();
1437 switch (elm)
1438 {
1439 case 'A': break;
1440 case 'B': _const = true; break;
1441 case 'J': _const = true; break;
1442 case 'C': _volatile = true; break;
1443 case 'G': _volatile = true; break;
1444 case 'K': _volatile = true; break;
1445 case 'D': _const = true; _volatile = true; break;
1446 case 'H': _const = true; _volatile = true; break;
1447 case 'L': _const = true; _volatile = true; break;
1448 case '6': break;
1449 case '7': break;
1450 case 'M': break;
1451 case 'N': break;
1452 case 'O': _volatile = true; break;
1453 case 'P': _volatile = true; _const = true; break;
1454 case 'Q': isMember = true; break;
1455 case 'U': break;
1456 case 'Y': break;
1457 case 'R': _const = true; isMember = true; break;
1458 case 'V': _const = true; break;
1459 case 'Z': _const = true; break;
1460 case 'S': _volatile = true; isMember = true; break;
1461 case 'W': _volatile = true; break;
1462 case '0': _volatile = true; break;
1463 case 'T': _const = true; _volatile = true; isMember = true; break;
1464 case 'X': _const = true; _volatile = true; break;
1465 case '1': _const = true; _volatile = true; break;
1466 case '8': break;
1467 case '9': break;
1468 case '2': break;
1469 case '3': _const = true; break;
1470 case '4': _volatile = true; break;
1471 case '5': _const = true; _volatile = true; break;
1472 case '_':
1473 elm = reader.Read();
1474 if (elm == 'A' || elm == 'B')
1475 {
1476 //For unhandled "member" and "based" parameters
1477 break;
1478 }
1479 else if (elm == 'C' || elm == 'D')
1480 {
1481 //For unhandled "member" and "based" parameters
1482 break;
1483 }
1484 else

Callers

nothing calls this directly

Calls 5

LogDebugMethod · 0.80
DemangleExceptionClass · 0.70
GetRawMethod · 0.45
PeekMethod · 0.45
ReadMethod · 0.45

Tested by

no test coverage detected