protected void FormatTraits(IHasTraits traitsObject) { ArrayList traitList = traitsObject.Traits; TraitInfo trait; for (int i = 0, n = traitList.Count; i < n; ++i) { trait = (TraitInfo)traitList[i]; if (trait.Body is TraitClass) { TraitClass classBody = (TraitClass)trait.Body; #region Class information ClassInfo classInfo = (ClassInfo)_abc.Classes[(int)classBody.ClassI]; InstanceInfo instanceInfo = (InstanceInfo)_abc.Instances[(int)classBody.ClassI]; string classDefinition = ""; if (0 != (instanceInfo.Flags & InstanceInfo.ClassInterface)) { classDefinition += "interface "; } else { if (0 != (instanceInfo.Flags & InstanceInfo.ClassFinal)) { classDefinition += "final "; } if (0 == (instanceInfo.Flags & InstanceInfo.ClassSealed)) { classDefinition += "dynamic "; } classDefinition += "class "; } //TODO add protected namespace lookup classDefinition += NameUtil.ResolveMultiname(_abc, (int)instanceInfo.Name) + " extends " + NameUtil.ResolveMultiname(_abc, (int)instanceInfo.SuperName) + " "; if (instanceInfo.Interfaces.Count > 0) { classDefinition += "implements "; for (int j = 0, m = instanceInfo.Interfaces.Count; j < m; ++j) { classDefinition += NameUtil.ResolveMultiname(_abc, (U30)instanceInfo.Interfaces[j]); if (j != m - 1) { classDefinition += ", "; } } } _output.Add(";" + classDefinition + "\r\n"); _output.Add(";cinit (static class initializer)\r\n"); FormatMethod(classInfo.CInit); _output.Add(";class members\r\n"); FormatTraits(classInfo); _output.Add(";iinit (instance initializer aka constructor)\r\n"); FormatMethod(instanceInfo.IInit); _output.Add(";instance members\r\n"); FormatTraits(instanceInfo); #endregion } else if (trait.Body is TraitConst) { } else if (trait.Body is TraitFunction) { } else if ((trait.Body is TraitMethod)||(trait.Body is TraitGetter)||(trait.Body is TraitSetter)) { TraitMethod methodBody = (TraitMethod)trait.Body; _output.Add(";" + NameUtil.ResolveMultiname(_abc, trait.Name) + "\r\n"); FormatMethod(methodBody.Method); } else { } } }
protected void FormatTraits(IHasTraits traitsObject) { ArrayList traitList = traitsObject.Traits; TraitInfo trait; for (int i = 0, n = traitList.Count; i < n; ++i) { trait = (TraitInfo)traitList[i]; if (trait.Body is TraitClass) { TraitClass classBody = (TraitClass)trait.Body; #region Class information ClassInfo classInfo = (ClassInfo)_abc.Classes[(int)classBody.ClassI]; InstanceInfo instanceInfo = (InstanceInfo)_abc.Instances[(int)classBody.ClassI]; string classDefinition = ""; if (0 != (instanceInfo.Flags & InstanceInfo.ClassInterface)) { classDefinition += "interface "; } else { if (0 != (instanceInfo.Flags & InstanceInfo.ClassFinal)) { classDefinition += "final "; } if (0 == (instanceInfo.Flags & InstanceInfo.ClassSealed)) { classDefinition += "dynamic "; } classDefinition += "class "; } //TODO add protected namespace lookup classDefinition += NameUtil.ResolveMultiname(_abc, (int)instanceInfo.Name) + " extends " + NameUtil.ResolveMultiname(_abc, (int)instanceInfo.SuperName) + " "; if (instanceInfo.Interfaces.Count > 0) { classDefinition += "implements "; for (int j = 0, m = instanceInfo.Interfaces.Count; j < m; ++j) { classDefinition += NameUtil.ResolveMultiname(_abc, (U30)instanceInfo.Interfaces[j]); if (j != m - 1) { classDefinition += ", "; } } } _output.Add(";" + classDefinition + "\r\n"); _output.Add(";cinit (static class initializer)\r\n"); FormatMethod(classInfo.CInit); _output.Add(";class members\r\n"); FormatTraits(classInfo); _output.Add(";iinit (instance initializer aka constructor)\r\n"); FormatMethod(instanceInfo.IInit); _output.Add(";instance members\r\n"); FormatTraits(instanceInfo); #endregion } else if (trait.Body is TraitConst) { } else if (trait.Body is TraitFunction) { } else if ((trait.Body is TraitMethod) || (trait.Body is TraitGetter) || (trait.Body is TraitSetter)) { TraitMethod methodBody = (TraitMethod)trait.Body; _output.Add(";" + NameUtil.ResolveMultiname(_abc, trait.Name) + "\r\n"); FormatMethod(methodBody.Method); } else { } } }