| 37 | return getTypeID(memberList[exType.memberOffset + member]); |
| 38 | } |
| 39 | NULLCArray MemberName(int member, int* type) |
| 40 | { |
| 41 | assert(linker); |
| 42 | NULLCArray ret; |
| 43 | |
| 44 | ExternTypeInfo &exType = linker->exTypes[*type]; |
| 45 | if(exType.subCat != ExternTypeInfo::CAT_CLASS) |
| 46 | { |
| 47 | nullcThrowError("typeid::memberName: type (%s) is not a class", &linker->exSymbols[exType.offsetToName]); |
| 48 | return NULLCArray(); |
| 49 | } |
| 50 | if((unsigned int)member >= exType.memberCount) |
| 51 | { |
| 52 | nullcThrowError("typeid::memberName: member number illegal, type (%s) has only %d members", &linker->exSymbols[exType.offsetToName], exType.memberCount); |
| 53 | return NULLCArray(); |
| 54 | } |
| 55 | char *symbols = &linker->exSymbols[0]; |
| 56 | unsigned int strLength = (unsigned int)strlen(symbols + exType.offsetToName) + 1; |
| 57 | const char *memberName = symbols + exType.offsetToName + strLength; |
| 58 | for(int n = 0; n < member; n++) |
| 59 | { |
| 60 | strLength = (unsigned int)strlen(memberName) + 1; |
| 61 | memberName += strLength; |
| 62 | } |
| 63 | |
| 64 | ret.ptr = (char*)memberName; |
| 65 | ret.len = (unsigned int)strlen(memberName) + 1; |
| 66 | return ret; |
| 67 | } |
| 68 | NULLCRef MemberByIndex(NULLCRef obj, int member) |
| 69 | { |
| 70 | assert(linker); |
nothing calls this directly
no test coverage detected