xref: /aosp_15_r20/external/icu/icu4c/as_is/os400/cxxfilt.cpp (revision 0e209d3975ff4a8c132096b14b0e9364a753506e)
1*0e209d39SAndroid Build Coastguard Worker // Copyright (C) 2016 and later: Unicode, Inc. and others.
2*0e209d39SAndroid Build Coastguard Worker // License & terms of use: http://www.unicode.org/copyright.html
3*0e209d39SAndroid Build Coastguard Worker /* Copyright (C) 2012 IBM Corporation and Others. All Rights Reserved */
4*0e209d39SAndroid Build Coastguard Worker 
5*0e209d39SAndroid Build Coastguard Worker #include <stdio.h>
6*0e209d39SAndroid Build Coastguard Worker #include <demangle.h>
7*0e209d39SAndroid Build Coastguard Worker 
showSym(char * str)8*0e209d39SAndroid Build Coastguard Worker void showSym(char *str) {
9*0e209d39SAndroid Build Coastguard Worker   char *rest;
10*0e209d39SAndroid Build Coastguard Worker   struct Name *name = Demangle(str, rest); // "f__1XFi"
11*0e209d39SAndroid Build Coastguard Worker 
12*0e209d39SAndroid Build Coastguard Worker   printf("# '%s'\n", str);
13*0e209d39SAndroid Build Coastguard Worker   if(*rest) printf("\trest: '%s'\n", rest);
14*0e209d39SAndroid Build Coastguard Worker   if(name->Kind() == MemberFunction) {
15*0e209d39SAndroid Build Coastguard Worker     //((MemberFunctionName *) name)->Scope()->Text() is "X"
16*0e209d39SAndroid Build Coastguard Worker     //((MemberFunctionName *) name)->RootName() is "f"
17*0e209d39SAndroid Build Coastguard Worker     //((MemberFunctionName *) name)->Text() is "X::f(int)"
18*0e209d39SAndroid Build Coastguard Worker     printf("\t=> %s\n", ((MemberFunctionName *) name)->Text());
19*0e209d39SAndroid Build Coastguard Worker   } else {
20*0e209d39SAndroid Build Coastguard Worker     printf("\t(not MemberFunction)\n");
21*0e209d39SAndroid Build Coastguard Worker   }
22*0e209d39SAndroid Build Coastguard Worker }
23*0e209d39SAndroid Build Coastguard Worker 
24*0e209d39SAndroid Build Coastguard Worker 
25*0e209d39SAndroid Build Coastguard Worker 
26*0e209d39SAndroid Build Coastguard Worker 
27*0e209d39SAndroid Build Coastguard Worker 
main(int argc,char * argv[])28*0e209d39SAndroid Build Coastguard Worker int main(int argc, /*const*/ char *argv[]) {
29*0e209d39SAndroid Build Coastguard Worker   if(argc>1) {
30*0e209d39SAndroid Build Coastguard Worker     for(int i=1;i<argc;i++) {
31*0e209d39SAndroid Build Coastguard Worker        showSym(argv[i]);
32*0e209d39SAndroid Build Coastguard Worker     }
33*0e209d39SAndroid Build Coastguard Worker   } else {
34*0e209d39SAndroid Build Coastguard Worker     printf("Usage: %s <symbol> ...\n", argv[0]);
35*0e209d39SAndroid Build Coastguard Worker   }
36*0e209d39SAndroid Build Coastguard Worker 
37*0e209d39SAndroid Build Coastguard Worker 
38*0e209d39SAndroid Build Coastguard Worker 
39*0e209d39SAndroid Build Coastguard Worker }
40