Lines Matching refs:name
47 const char* Demangler::AppendOperatorString(const char* name) { in AppendOperatorString() argument
49 switch (*name) { in AppendOperatorString()
51 name++; in AppendOperatorString()
52 switch (*name) { in AppendOperatorString()
69 name++; in AppendOperatorString()
70 switch (*name) { in AppendOperatorString()
83 name++; in AppendOperatorString()
84 switch (*name) { in AppendOperatorString()
103 name++; in AppendOperatorString()
104 switch (*name) { in AppendOperatorString()
117 name++; in AppendOperatorString()
118 switch (*name) { in AppendOperatorString()
128 name++; in AppendOperatorString()
129 switch (*name) { in AppendOperatorString()
136 name++; in AppendOperatorString()
137 switch (*name) { in AppendOperatorString()
153 name++; in AppendOperatorString()
154 switch (*name) { in AppendOperatorString()
173 name++; in AppendOperatorString()
174 switch (*name) { in AppendOperatorString()
193 name++; in AppendOperatorString()
194 switch (*name) { in AppendOperatorString()
207 name++; in AppendOperatorString()
208 switch (*name) { in AppendOperatorString()
230 name++; in AppendOperatorString()
231 switch (*name) { in AppendOperatorString()
238 name++; in AppendOperatorString()
239 switch (*name) { in AppendOperatorString()
260 return name + 1; in AppendOperatorString()
263 const char* Demangler::GetStringFromLength(const char* name, std::string* str) { in GetStringFromLength() argument
264 assert(std::isdigit(*name)); in GetStringFromLength()
266 size_t length = *name - '0'; in GetStringFromLength()
267 name++; in GetStringFromLength()
268 while (*name != '\0' && std::isdigit(*name)) { in GetStringFromLength()
269 length = length * 10 + *name - '0'; in GetStringFromLength()
270 name++; in GetStringFromLength()
274 while (*name != '\0' && length != 0) { in GetStringFromLength()
275 read_str += *name; in GetStringFromLength()
276 name++; in GetStringFromLength()
288 return name; in GetStringFromLength()
305 const char* Demangler::ParseS(const char* name) { in ParseS() argument
306 if (std::islower(*name)) { in ParseS()
307 const char* type = kSTypes[*name - 'a']; in ParseS()
312 return name + 1; in ParseS()
319 if (*name == '_') { in ParseS()
322 return name + 1; in ParseS()
325 bool isdigit = std::isdigit(*name); in ParseS()
326 if (!isdigit && !std::isupper(*name)) { in ParseS()
332 index = *name - '0' + 1; in ParseS()
334 index = *name - 'A' + 11; in ParseS()
336 name++; in ParseS()
337 if (*name != '_') { in ParseS()
347 return name + 1; in ParseS()
350 const char* Demangler::ParseFunctionName(const char* name) { in ParseFunctionName() argument
351 if (*name == 'E') { in ParseFunctionName()
371 return name + 1; in ParseFunctionName()
374 return ParseComplexString(name); in ParseFunctionName()
377 const char* Demangler::ParseComplexArgument(const char* name) { in ParseComplexArgument() argument
378 if (*name == 'E') { in ParseComplexArgument()
388 return name + 1; in ParseComplexArgument()
391 return ParseComplexString(name); in ParseComplexArgument()
401 const char* Demangler::ParseComplexString(const char* name) { in ParseComplexString() argument
402 if (*name == 'S') { in ParseComplexString()
403 name++; in ParseComplexString()
404 if (*name == 't') { in ParseComplexString()
406 return name + 1; in ParseComplexString()
408 return ParseS(name); in ParseComplexString()
410 if (*name == 'L') { in ParseComplexString()
411 name++; in ParseComplexString()
412 if (!std::isdigit(*name)) { in ParseComplexString()
416 if (std::isdigit(*name)) { in ParseComplexString()
418 name = GetStringFromLength(name, &str); in ParseComplexString()
419 if (name == nullptr) { in ParseComplexString()
420 return name; in ParseComplexString()
425 return name; in ParseComplexString()
427 if (*name == 'D') { in ParseComplexString()
428 name++; in ParseComplexString()
429 if (saves_.empty() || (*name != '0' && *name != '1' && *name != '2' in ParseComplexString()
430 && *name != '5')) { in ParseComplexString()
435 return name + 1; in ParseComplexString()
437 if (*name == 'C') { in ParseComplexString()
438 name++; in ParseComplexString()
439 if (saves_.empty() || (*name != '1' && *name != '2' && *name != '3' in ParseComplexString()
440 && *name != '5')) { in ParseComplexString()
445 return name + 1; in ParseComplexString()
447 if (*name == 'K') { in ParseComplexString()
449 return name + 1; in ParseComplexString()
451 if (*name == 'V') { in ParseComplexString()
453 return name + 1; in ParseComplexString()
455 if (*name == 'I') { in ParseComplexString()
462 return name + 1; in ParseComplexString()
464 name = AppendOperatorString(name); in ParseComplexString()
465 if (name != nullptr) { in ParseComplexString()
468 return name; in ParseComplexString()
481 const char* Demangler::ParseFunctionArgument(const char* name) { in ParseFunctionArgument() argument
482 if (*name == 'E') { in ParseFunctionArgument()
516 return name + 1; in ParseFunctionArgument()
518 return ParseArguments(name); in ParseFunctionArgument()
521 const char* Demangler::ParseArguments(const char* name) { in ParseArguments() argument
522 switch (*name) { in ParseArguments()
525 return name + 1; in ParseArguments()
531 if (name[-1] != 'R') { in ParseArguments()
535 return name + 1; in ParseArguments()
540 if (*name == 'K') { in ParseArguments()
545 if (!cur_state_.suffixes.empty() && (name[-1] == 'K' || name[-1] == 'V')) { in ParseArguments()
552 return name + 1; in ParseArguments()
587 return name + 1; in ParseArguments()
593 return name + 1; in ParseArguments()
596 name++; in ParseArguments()
597 if (*name == 't') { in ParseArguments()
599 return name + 1; in ParseArguments()
601 name = ParseS(name); in ParseArguments()
602 if (name == nullptr) { in ParseArguments()
607 return name; in ParseArguments()
610 name++; in ParseArguments()
611 if (*name >= 'a' && *name <= 'z') { in ParseArguments()
612 const char* arg = Demangler::kDTypes[*name - 'a']; in ParseArguments()
617 return name + 1; in ParseArguments()
628 return name + 1; in ParseArguments()
632 return name + 1; in ParseArguments()
635 if (*name >= 'a' && *name <= 'z') { in ParseArguments()
636 const char* arg = Demangler::kTypes[*name - 'a']; in ParseArguments()
641 return name + 1; in ParseArguments()
642 } else if (std::isdigit(*name)) { in ParseArguments()
644 name = GetStringFromLength(name, &arg); in ParseArguments()
645 if (name == nullptr) { in ParseArguments()
649 if (*name == 'I') { in ParseArguments()
657 return name; in ParseArguments()
663 const char* Demangler::ParseTemplateArgumentsComplex(const char* name) { in ParseTemplateArgumentsComplex() argument
664 if (*name == 'E') { in ParseTemplateArgumentsComplex()
672 return name + 1; in ParseTemplateArgumentsComplex()
674 return ParseArguments(name); in ParseTemplateArgumentsComplex()
677 const char* Demangler::ParseTemplateArguments(const char* name) { in ParseTemplateArguments() argument
678 if (*name == 'E') { in ParseTemplateArguments()
687 return name + 1; in ParseTemplateArguments()
689 return ParseArguments(name); in ParseTemplateArguments()
692 const char* Demangler::FindFunctionName(const char* name) { in FindFunctionName() argument
693 if (*name == 'N') { in FindFunctionName()
696 return name + 1; in FindFunctionName()
699 if (std::isdigit(*name)) { in FindFunctionName()
700 name = GetStringFromLength(name, &function_name_); in FindFunctionName()
701 } else if (*name == 'L' && std::isdigit(name[1])) { in FindFunctionName()
702 name = GetStringFromLength(name + 1, &function_name_); in FindFunctionName()
704 name = AppendOperatorString(name); in FindFunctionName()
709 return name; in FindFunctionName()
712 std::string Demangler::Parse(const char* name, size_t max_length) { in Parse() argument
713 if (name[0] == '\0' || name[0] != '_' || name[1] == '\0' || name[1] != 'Z') { in Parse()
715 return name; in Parse()
722 const char* cur_name = name + 2; in Parse()
724 && static_cast<size_t>(cur_name - name) < max_length) { in Parse()
729 return name; in Parse()
745 std::string demangle(const char* name) { in demangle() argument
747 return demangler.Parse(name); in demangle()