package org.erlide.project.model.impl;
import com.google.common.base.Objects;
import org.erlide.project.model.IErlangModel;
import org.erlide.project.model.IErlangModelElement;
import org.erlide.project.model.IErlangProject;
@SuppressWarnings("all")
public abstract class ErlangModelElement implements IErlangModelElement {
protected ErlangModelElement() {
}
@Override
public IErlangProject getProject() {
return this.<IErlangProject>getParentOfType(IErlangProject.class);
}
@Override
public IErlangModel getModel() {
return this.<IErlangModel>getParentOfType(IErlangModel.class);
}
@SuppressWarnings("unchecked")
private <T extends Object> T getParentOfType(final Class<? extends T> clazz) {
IErlangModelElement crt = this;
while (((!Objects.equal(crt, null)) && (!crt.getClass().isAssignableFrom(clazz)))) {
IErlangModelElement _parent = crt.getParent();
crt = _parent;
}
return ((T) crt);
}
}