private void GenerateArray(ZArray arrayNode)
{
Expression ns = null;
string arrayStyle = null;
if (arrayNode == null || arrayNode.domainType == null || arrayNode.ElementType == null)
return;
switch (GetTypeClassification(arrayNode.ElementType))
{
case TypeClassification.Simple:
ns = arrayNode.ElementType.Namespace;
arrayStyle = "SimpleArray"; break;
case TypeClassification.Enum:
arrayStyle = "EnumArray"; break;
case TypeClassification.Struct:
arrayStyle = "StructArray"; break;
case TypeClassification.Heap:
if (arrayNode.ElementType == SystemTypes.Object)
ns = arrayNode.ElementType.Namespace;
arrayStyle = "ComplexArray"; break;
}
Class arrayClass = (Class)Templates.GetTypeTemplateByName(arrayStyle);
if (ns == null)
ns = new QualifiedIdentifier(new Identifier("Microsoft.Zing"), new Identifier("Application"));
Replacer.Replace(arrayClass, arrayStyle, arrayNode.Name);
Replacer.Replace(arrayClass, "_ElementType", new QualifiedIdentifier(ns, arrayNode.ElementType.Name));
// Replacer.Replace(arrayClass, "_size", new Literal(arrayNode.Sizes[0], SystemTypes.Int32));
SetTypeId(arrayClass);
InstallType(arrayClass);
}