public final CsmClassifier findClassifier(CharSequence qualifiedName, boolean findInLibraries) { CsmClassifier result = findClassifier(qualifiedName); if (result == null && findInLibraries) { for (Iterator<CsmProject> it = getLibraries().iterator(); it.hasNext();) { CsmProject lib = it.next(); result = lib.findClassifier(qualifiedName); if (result != null) { break; } } } return result; }
private static ClassImplFunctionSpecialization findExistingClassImplClassImplFunctionSpecializationInProject(CsmFile file, ClassImplFunctionSpecialization spec) { ClassImplFunctionSpecialization out = null; if (file != null) { CsmClassifier existing = file.getProject().findClassifier(spec.getQualifiedName()); if (existing instanceof ClassImplFunctionSpecialization) { out = (ClassImplFunctionSpecialization) existing; } } return out; }
private ClassImplFunctionSpecialization getInstance() { if(instance != null) { return instance; } CsmClassifier cls = getFile().getProject().findClassifier(getName()); if (cls instanceof ClassImplFunctionSpecialization) { instance = (ClassImplFunctionSpecialization) cls; } return instance; }
private ClassImpl findBaseClassImplInProject() { ClassImpl out = null; CsmFile file = getContainingFile(); if (file != null) { CsmClassifier base = file.getProject().findClassifier(getQualifiedNameWithoutSuffix()); if (base instanceof ClassImpl) { out = (ClassImpl) base; } } return out; }
public static ForwardEnum createIfNeeded(CharSequence name, CsmFile file, AST ast, int start, int end, CsmScope scope, boolean registerInProject) { ForwardEnum fwd = new ForwardEnum(name, name, EnumImpl.isStronglyTypedEnum(ast), file, start, end); fwd.initQualifiedName(scope); fwd.setTemplateDescriptor(TemplateDescriptor.createIfNeeded(ast, file, scope, registerInProject)); if (fwd.getProject().findClassifier(fwd.getQualifiedName()) == null) { fwd.initScope(scope); if(registerInProject) { fwd.register(scope, false); } else { Utils.setSelfUID(fwd); } return fwd; } return null; }
public static ForwardClass createIfNeeded(CharSequence name, CsmFile file, AST ast, int start, int end, CsmScope scope, boolean registerInProject) { ForwardClass fwd = new ForwardClass(NameHolder.createName(name), ast, file, start, end); fwd.initQualifiedName(scope); if (fwd.getProject().findClassifier(fwd.getQualifiedName()) == null) { fwd.setTemplateDescriptor(TemplateDescriptor.createIfNeeded(ast, file, fwd, registerInProject)); fwd.initScope(scope); if(registerInProject) { fwd.register(scope, false); } else { Utils.setSelfUID(fwd); } return fwd; } return null; }
@Override public ForwardClass create() { ForwardClass fwd = new ForwardClass(getNameHolder(), kind, getFile(), getStartOffset(), getEndOffset()); fwd.initQualifiedName(getScope()); if(getTemplateDescriptorBuilder() != null) { getTemplateDescriptorBuilder().setScope(getScope()); fwd.setTemplateDescriptor(getTemplateDescriptorBuilder().create()); } if (fwd.getProject().findClassifier(fwd.getQualifiedName()) == null) { fwd.initScope(getScope()); if(isGlobal()) { fwd.register(getScope(), false); } else { Utils.setSelfUID(fwd); } return fwd; } return null; }