else
{
namespaceRef = NamespaceDefinition.createNamespaceDefinition(namespace);
}
final TypeDefinitionBase typeDefinition;
if (isInterface)
{
final InterfaceDefinition interfaceDefinition = new InterfaceDefinition(typeName);
final IReference[] extendedInterfaces = getReferences(iinfo.interfaceNames);
interfaceDefinition.setExtendedInterfaceReferences(extendedInterfaces);
setupCastFunction(iinfo, interfaceDefinition);
typeDefinition = interfaceDefinition;
}
else
{
String protectedNSURI;
if (iinfo.hasProtectedNs())
protectedNSURI = iinfo.protectedNs.getName();
else
{
String classNSURI = namespace.getName();
protectedNSURI = (classNSURI.isEmpty() ? "" : classNSURI + ":") + typeName;
}
NamespaceDefinition.IProtectedNamespaceDefinition protectedNSDefinition = NamespaceDefinition.createProtectedNamespaceDefinition(protectedNSURI);
final ClassDefinition classDefinition = new ClassDefinition(typeName, namespaceRef, protectedNSDefinition);
final IReference baseClass = getReference(iinfo.superName);
classDefinition.setBaseClassReference(baseClass);
final IReference[] implementedInterfaces = getReferences(iinfo.interfaceNames);
classDefinition.setImplementedInterfaceReferences(implementedInterfaces);
setupConstructor(iinfo, classDefinition);
typeDefinition = classDefinition;
}
final INamespaceDefinition namespaceReference = getNamespaceReferenceForNamespace(namespace);
typeDefinition.setNamespaceReference((INamespaceReference)namespaceReference);
if (!isSealed)
typeDefinition.setDynamic();
if (isFinal)
typeDefinition.setFinal();
final TypeDefinitionBuilder visitor = new TypeDefinitionBuilder(this, typeDefinition);
classDefinitions.put(cinfo, typeDefinition);