Lines Matching defs:name

47 const char* Demangler::AppendOperatorString(const char* name) {
49 switch (*name) {
51 name++;
52 switch (*name) {
69 name++;
70 switch (*name) {
83 name++;
84 switch (*name) {
103 name++;
104 switch (*name) {
117 name++;
118 switch (*name) {
128 name++;
129 switch (*name) {
136 name++;
137 switch (*name) {
153 name++;
154 switch (*name) {
173 name++;
174 switch (*name) {
193 name++;
194 switch (*name) {
207 name++;
208 switch (*name) {
230 name++;
231 switch (*name) {
238 name++;
239 switch (*name) {
260 return name + 1;
263 const char* Demangler::GetStringFromLength(const char* name, std::string* str) {
264 assert(std::isdigit(*name));
266 size_t length = *name - '0';
267 name++;
268 while (*name != '\0' && std::isdigit(*name)) {
269 length = length * 10 + *name - '0';
270 name++;
274 while (*name != '\0' && length != 0) {
275 read_str += *name;
276 name++;
288 return name;
305 const char* Demangler::ParseS(const char* name) {
306 if (std::islower(*name)) {
307 const char* type = kSTypes[*name - 'a'];
312 return name + 1;
319 if (*name == '_') {
322 return name + 1;
325 bool isdigit = std::isdigit(*name);
326 if (!isdigit && !std::isupper(*name)) {
332 index = *name - '0' + 1;
334 index = *name - 'A' + 11;
336 name++;
337 if (*name != '_') {
347 return name + 1;
350 const char* Demangler::ParseFunctionName(const char* name) {
351 if (*name == 'E') {
358 // Remove the last saved part so that the full function name is not saved.
371 return name + 1;
374 return ParseComplexString(name);
377 const char* Demangler::ParseComplexArgument(const char* name) {
378 if (*name == 'E') {
388 return name + 1;
391 return ParseComplexString(name);
401 const char* Demangler::ParseComplexString(const char* name) {
402 if (*name == 'S') {
403 name++;
404 if (*name == 't') {
406 return name + 1;
408 return ParseS(name);
410 if (*name == 'L') {
411 name++;
412 if (!std::isdigit(*name)) {
416 if (std::isdigit(*name)) {
418 name = GetStringFromLength(name, &str);
419 if (name == nullptr) {
420 return name;
425 return name;
427 if (*name == 'D') {
428 name++;
429 if (saves_.empty() || (*name != '0' && *name != '1' && *name != '2'
430 && *name != '5')) {
435 return name + 1;
437 if (*name == 'C') {
438 name++;
439 if (saves_.empty() || (*name != '1' && *name != '2' && *name != '3'
440 && *name != '5')) {
445 return name + 1;
447 if (*name == 'K') {
449 return name + 1;
451 if (*name == 'V') {
453 return name + 1;
455 if (*name == 'I') {
462 return name + 1;
464 name = AppendOperatorString(name);
465 if (name != nullptr) {
468 return name;
481 const char* Demangler::ParseFunctionArgument(const char* name) {
482 if (*name == 'E') {
516 return name + 1;
518 return ParseArguments(name);
521 const char* Demangler::ParseArguments(const char* name) {
522 switch (*name) {
525 return name + 1;
531 if (name[-1] != 'R') {
535 return name + 1;
540 if (*name == 'K') {
545 if (name[-1] == 'K' || name[-1] == 'V') {
553 return name + 1;
588 return name + 1;
594 return name + 1;
597 name++;
598 if (*name == 't') {
600 return name + 1;
602 name = ParseS(name);
603 if (name == nullptr) {
608 return name;
611 name++;
612 if (*name >= 'a' && *name <= 'z') {
613 const char* arg = Demangler::kDTypes[*name - 'a'];
618 return name + 1;
629 return name + 1;
633 return name + 1;
636 if (*name >= 'a' && *name <= 'z') {
637 const char* arg = Demangler::kTypes[*name - 'a'];
642 return name + 1;
643 } else if (std::isdigit(*name)) {
645 name = GetStringFromLength(name, &arg);
646 if (name == nullptr) {
650 if (*name == 'I') {
658 return name;
664 const char* Demangler::ParseTemplateArgumentsComplex(const char* name) {
665 if (*name == 'E') {
673 return name + 1;
675 return ParseArguments(name);
678 const char* Demangler::ParseTemplateArguments(const char* name) {
679 if (*name == 'E') {
688 return name + 1;
690 return ParseArguments(name);
693 const char* Demangler::FindFunctionName(const char* name) {
694 if (*name == 'N') {
697 return name + 1;
700 if (std::isdigit(*name)) {
701 name = GetStringFromLength(name, &function_name_);
703 name = AppendOperatorString(name);
708 return name;
711 std::string Demangler::Parse(const char* name, size_t max_length) {
712 if (name[0] == '\0' || name[0] != '_' || name[1] == '\0' || name[1] != 'Z') {
714 return name;
721 const char* cur_name = name + 2;
723 && static_cast<size_t>(cur_name - name) < max_length) {
727 return name;
743 std::string demangle(const char* name) {
745 return demangler.Parse(name);