MCPcopy Create free account
hub / github.com/WheretIB/nullc / MemberByIndex

Function MemberByIndex

NULLC/includes/typeinfo.cpp:68–94  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

66 return ret;
67 }
68 NULLCRef MemberByIndex(NULLCRef obj, int member)
69 {
70 assert(linker);
71 NULLCRef ret;
72 ret.ptr = NULL;
73 ret.typeID = 0;
74
75 ExternTypeInfo &exType = linker->exTypes[obj.typeID];
76 if((exType.subCat != ExternTypeInfo::CAT_CLASS) || ((unsigned)member >= exType.memberCount))
77 return ret;
78
79 unsigned int *memberList = &linker->exTypeExtra[exType.memberOffset];
80 ret.typeID = memberList[member];
81 ret.ptr = obj.ptr;
82 unsigned int pos = 0;
83 for(unsigned m = 0; m <= (unsigned)member; m++)
84 {
85 ExternTypeInfo &memberType = linker->exTypes[memberList[m]];
86 unsigned int alignment = memberType.defaultAlign > 4 ? 4 : memberType.defaultAlign;
87 if(alignment && pos % alignment != 0)
88 pos += alignment - (pos % alignment);
89 if(m != (unsigned)member)
90 pos += memberType.size;
91 }
92 ret.ptr += pos;
93 return ret;
94 }
95 NULLCRef MemberByName(NULLCRef obj, NULLCArray member)
96 {
97 assert(linker);

Callers 1

MemberByNameFunction · 0.85

Calls 1

assertFunction · 0.85

Tested by

no test coverage detected