910 char* operator_string_begin =
const_cast<char*
>(
strstr( demangled_symbol,
"operator" ) );
911 if ( operator_string_begin != NULL ) {
912 char* operator_string_end = operator_string_begin + 8;
913 while ( *operator_string_end ==
' ' ) operator_string_end++;
914 if (
strstr( operator_string_end,
"delete[]" ) == operator_string_end ) {
915 operator_string_end += 8;
916 *operator_string_end =
'\0';
917 }
else if (
strstr( operator_string_end,
"delete" ) == operator_string_end ) {
918 operator_string_end += 6;
919 *operator_string_end =
'\0';
920 }
else if (
strstr( operator_string_end,
"new[]" ) == operator_string_end ) {
921 operator_string_end += 5;
922 *operator_string_end =
'\0';
923 }
else if (
strstr( operator_string_end,
"new" ) == operator_string_end ) {
924 operator_string_end += 3;
925 *operator_string_end =
'\0';
926 }
else if (
strstr( operator_string_end,
">>=" ) == operator_string_end ) {
927 operator_string_end += 3;
928 *operator_string_end =
'\0';
929 }
else if (
strstr( operator_string_end,
"<<=" ) == operator_string_end ) {
930 operator_string_end += 3;
931 *operator_string_end =
'\0';
932 }
else if (
strstr( operator_string_end,
"->*" ) == operator_string_end ) {
933 operator_string_end += 3;
934 *operator_string_end =
'\0';
935 }
else if (
strstr( operator_string_end,
"<<" ) == operator_string_end ) {
936 operator_string_end += 2;
937 *operator_string_end =
'\0';
938 }
else if (
strstr( operator_string_end,
">>" ) == operator_string_end ) {
939 operator_string_end += 2;
940 *operator_string_end =
'\0';
941 }
else if (
strstr( operator_string_end,
">=" ) == operator_string_end ) {
942 operator_string_end += 2;
943 *operator_string_end =
'\0';
944 }
else if (
strstr( operator_string_end,
"<=" ) == operator_string_end ) {
945 operator_string_end += 2;
946 *operator_string_end =
'\0';
947 }
else if (
strstr( operator_string_end,
"==" ) == operator_string_end ) {
948 operator_string_end += 2;
949 *operator_string_end =
'\0';
950 }
else if (
strstr( operator_string_end,
"!=" ) == operator_string_end ) {
951 operator_string_end += 2;
952 *operator_string_end =
'\0';
953 }
else if (
strstr( operator_string_end,
"|=" ) == operator_string_end ) {
954 operator_string_end += 2;
955 *operator_string_end =
'\0';
956 }
else if (
strstr( operator_string_end,
"&=" ) == operator_string_end ) {
957 operator_string_end += 2;
958 *operator_string_end =
'\0';
959 }
else if (
strstr( operator_string_end,
"^=" ) == operator_string_end ) {
960 operator_string_end += 2;
961 *operator_string_end =
'\0';
962 }
else if (
strstr( operator_string_end,
"%=" ) == operator_string_end ) {
963 operator_string_end += 2;
964 *operator_string_end =
'\0';
965 }
else if (
strstr( operator_string_end,
"/=" ) == operator_string_end ) {
966 operator_string_end += 2;
967 *operator_string_end =
'\0';
968 }
else if (
strstr( operator_string_end,
"*=" ) == operator_string_end ) {
969 operator_string_end += 2;
970 *operator_string_end =
'\0';
971 }
else if (
strstr( operator_string_end,
"-=" ) == operator_string_end ) {
972 operator_string_end += 2;
973 *operator_string_end =
'\0';
974 }
else if (
strstr( operator_string_end,
"+=" ) == operator_string_end ) {
975 operator_string_end += 2;
976 *operator_string_end =
'\0';
977 }
else if (
strstr( operator_string_end,
"&&" ) == operator_string_end ) {
978 operator_string_end += 2;
979 *operator_string_end =
'\0';
980 }
else if (
strstr( operator_string_end,
"||" ) == operator_string_end ) {
981 operator_string_end += 2;
982 *operator_string_end =
'\0';
983 }
else if (
strstr( operator_string_end,
"[]" ) == operator_string_end ) {
984 operator_string_end += 2;
985 *operator_string_end =
'\0';
986 }
else if (
strstr( operator_string_end,
"()" ) == operator_string_end ) {
987 operator_string_end += 2;
988 *operator_string_end =
'\0';
989 }
else if (
strstr( operator_string_end,
"++" ) == operator_string_end ) {
990 operator_string_end += 2;
991 *operator_string_end =
'\0';
992 }
else if (
strstr( operator_string_end,
"--" ) == operator_string_end ) {
993 operator_string_end += 2;
994 *operator_string_end =
'\0';
995 }
else if (
strstr( operator_string_end,
"->" ) == operator_string_end ) {
996 operator_string_end += 2;
997 *operator_string_end =
'\0';
998 }
else if (
strstr( operator_string_end,
"<" ) == operator_string_end ) {
999 operator_string_end += 1;
1000 *operator_string_end =
'\0';
1001 }
else if (
strstr( operator_string_end,
">" ) == operator_string_end ) {
1002 operator_string_end += 1;
1003 *operator_string_end =
'\0';
1004 }
else if (
strstr( operator_string_end,
"~" ) == operator_string_end ) {
1005 operator_string_end += 1;
1006 *operator_string_end =
'\0';
1007 }
else if (
strstr( operator_string_end,
"!" ) == operator_string_end ) {
1008 operator_string_end += 1;
1009 *operator_string_end =
'\0';
1010 }
else if (
strstr( operator_string_end,
"+" ) == operator_string_end ) {
1011 operator_string_end += 1;
1012 *operator_string_end =
'\0';
1013 }
else if (
strstr( operator_string_end,
"-" ) == operator_string_end ) {
1014 operator_string_end += 1;
1015 *operator_string_end =
'\0';
1016 }
else if (
strstr( operator_string_end,
"*" ) == operator_string_end ) {
1017 operator_string_end += 1;
1018 *operator_string_end =
'\0';
1019 }
else if (
strstr( operator_string_end,
"/" ) == operator_string_end ) {
1020 operator_string_end += 1;
1021 *operator_string_end =
'\0';
1022 }
else if (
strstr( operator_string_end,
"%" ) == operator_string_end ) {
1023 operator_string_end += 1;
1024 *operator_string_end =
'\0';
1025 }
else if (
strstr( operator_string_end,
"^" ) == operator_string_end ) {
1026 operator_string_end += 1;
1027 *operator_string_end =
'\0';
1028 }
else if (
strstr( operator_string_end,
"&" ) == operator_string_end ) {
1029 operator_string_end += 1;
1030 *operator_string_end =
'\0';
1031 }
else if (
strstr( operator_string_end,
"|" ) == operator_string_end ) {
1032 operator_string_end += 1;
1033 *operator_string_end =
'\0';
1034 }
else if (
strstr( operator_string_end,
"," ) == operator_string_end ) {
1035 operator_string_end += 1;
1036 *operator_string_end =
'\0';
1037 }
else if (
strstr( operator_string_end,
"=" ) == operator_string_end ) {
1038 operator_string_end += 1;
1039 *operator_string_end =
'\0';
1041 return operator_string_begin;
1043 char* end_of_demangled_name =
const_cast<char*
>(
strrchr( demangled_symbol,
')' ) );
1044 if ( end_of_demangled_name != NULL ) {
1047 while ( pars > 0 && end_of_demangled_name != demangled_symbol ) {
1048 c = *( --end_of_demangled_name );
1051 }
else if ( c ==
'(' ) {
1056 return demangled_symbol;
1058 char* end_of_func_name = end_of_demangled_name;
1059 if ( end_of_func_name != NULL ) {
1060 *end_of_func_name =
'\0';
1061 char c = *( --end_of_func_name );
1064 while ( pars > 0 && end_of_func_name != demangled_symbol ) {
1065 c = *( --end_of_func_name );
1068 }
else if ( c ==
'<' ) {
1072 *end_of_func_name =
'\0';
1074 c = *( --end_of_func_name );
1075 while (
isalnum( c ) || c ==
'_' || c ==
'~' ) {
1076 c = *( --end_of_func_name );
1078 return ++end_of_func_name;
1080 return demangled_symbol;