bool Type::isNativeMemberPure(bool ignoreStaticMembers) { //if (!attr.isNative) // return false; for (UTsize i = 0; i < members.size(); i++) { MemberInfo *memberInfo = members.at(i); if (ignoreStaticMembers && memberInfo->isStatic()) { continue; } if (memberInfo->isConstructor()) { ConstructorInfo *cinfo = (ConstructorInfo *)memberInfo; if (cinfo->defaultConstructor) { continue; } } if (memberInfo->isConstructor() || memberInfo->isMethod()) { if (!((MethodBase *)memberInfo)->isNative()) { return false; } } if (memberInfo->isProperty()) { PropertyInfo *pinfo = (PropertyInfo *)memberInfo; if (pinfo->getGetMethod() && !pinfo->getGetMethod()->isNative()) { return false; } if (pinfo->getSetMethod() && !pinfo->getSetMethod()->isNative()) { return false; } } if (memberInfo->isField()) { if (!memberInfo->getOrdinal()) { return false; } } } if (baseType) { return baseType->isNativeMemberPure(); } return true; }
void Type::findMembers(const MemberTypes& memberTypes, utArray<MemberInfo *>& membersOut, bool includeBases, bool includePropertyGetterSetters) { if (!includeBases) { membersOut.clear(); } for (size_t i = 0; i < members.size(); i++) { MemberInfo *m = members.at((int)i); if (m->isConstructor() && memberTypes.constructor) { membersOut.push_back(m); } if (m->isMethod() && memberTypes.method) { membersOut.push_back(m); } if (m->isField() && memberTypes.field) { membersOut.push_back(m); } if (m->isProperty() && memberTypes.property) { membersOut.push_back(m); if (includePropertyGetterSetters) { PropertyInfo *p = (PropertyInfo *)m; if (p->getter && (p->getter->getDeclaringType() == p->getDeclaringType())) { membersOut.push_back(p->getter); } if (p->setter && (p->setter->getDeclaringType() == p->getDeclaringType())) { membersOut.push_back(p->setter); } } } } if (baseType && includeBases) { baseType->findMembers(memberTypes, membersOut, true, includePropertyGetterSetters); } }
ConstructorInfo *Type::getConstructor() { for (UTsize i = 0; i < members.size(); i++) { MemberInfo *m = members.at(i); if (m->isConstructor()) { return (ConstructorInfo *)m; } } return NULL; }