| 16 | } |
| 17 | |
| 18 | void GetCFunctionName(char* fName, unsigned int size, FunctionInfo *funcInfo) |
| 19 | { |
| 20 | const char *namePrefix = *funcInfo->name == '$' ? "__" : ""; |
| 21 | unsigned int nameShift = *funcInfo->name == '$' ? 1 : 0; |
| 22 | unsigned int finalLength = 0; |
| 23 | const char *printedName = funcInfo->GetOperatorName(); |
| 24 | unsigned funcID = ((funcInfo->address & 0x80000000) && (funcInfo->address != -1)) ? (funcInfo->address & ~0x80000000) : funcInfo->indexInArr; |
| 25 | if((funcInfo->type == FunctionInfo::LOCAL || funcInfo->type == FunctionInfo::COROUTINE) || !funcInfo->visible) |
| 26 | finalLength = SafeSprintf(fName, size, "%s%s_%d", namePrefix, printedName ? printedName : (funcInfo->name + nameShift), funcID); |
| 27 | else if(funcInfo->type == FunctionInfo::THISCALL) |
| 28 | finalLength = SafeSprintf(fName, size, "%s%s_%s", namePrefix, printedName ? printedName : (funcInfo->name + nameShift), funcInfo->funcType->GetFullTypeName()); |
| 29 | else |
| 30 | finalLength = SafeSprintf(fName, size, "%s%s", namePrefix, printedName ? printedName : (funcInfo->name + nameShift)); |
| 31 | |
| 32 | for(unsigned int k = 0; k < finalLength; k++) |
| 33 | { |
| 34 | if(fName[k] == ':' || fName[k] == '$' || fName[k] == '[' || fName[k] == ']' || fName[k] == ' ' || fName[k] == '(' || fName[k] == ')' || fName[k] == ',') |
| 35 | fName[k] = '_'; |
| 36 | } |
| 37 | TypeInfo **type = CodeInfo::classMap.find(funcInfo->nameHash); |
| 38 | if(type) |
| 39 | strcat(fName, "__"); |
| 40 | |
| 41 | unsigned int length = (unsigned int)strlen(fName); |
| 42 | if(fName[length-1] == '$') |
| 43 | fName[length-1] = '_'; |
| 44 | } |
| 45 | |
| 46 | void OutputCFunctionName(FILE *fOut, FunctionInfo *funcInfo) |
| 47 | { |
no test coverage detected