Example #1
0
        protected virtual ISymbolCollection OnCreateFieldInstances(ISymbol parentInstance, IDataType parentType)
        {
            SymbolCollection     symbols = new SymbolCollection(InstanceCollectionMode.Names);
            IEnumerable <IField> members = null;

            if (parentType.Category == DataTypeCategory.Struct)
            {
                members = (IEnumerable <IField>)((IStructType)parentType).Members;
            }
            else if (parentType.Category == DataTypeCategory.Union)
            {
                members = ((IUnionType)parentType).Fields;
            }
            if (members != null)
            {
                foreach (IField field in members)
                {
                    ISymbol item = null;
                    item = this.CreateFieldInstance(field, parentInstance);
                    if (item != null)
                    {
                        symbols.Add(item);
                        continue;
                    }
                    object[] args = new object[] { field.InstanceName, parentInstance.InstancePath };
                    Module.Trace.TraceWarning("Couldn't create field '{0}' for instance '{1}'!", args);
                }
            }
            return(symbols);
        }
Example #2
0
        public ISymbolCollection CreateArrayElementInstances(ISymbol parentInstance, IArrayType arrayType)
        {
            ISymbolCollection symbols = null;

            if (this.nonCachedArrayElements)
            {
                symbols = new ArrayElementSymbolCollection(parentInstance, arrayType, this);
            }
            else
            {
                symbols = new SymbolCollection(InstanceCollectionMode.Names);
                foreach (int[] numArray in new ArrayIndexIterator(arrayType))
                {
                    ISymbol item = this.CreateArrayElement(numArray, parentInstance, arrayType);
                    symbols.Add(item);
                }
                if (parentInstance is IOversamplingArrayInstance)
                {
                    symbols.Add(this.CreateOversamplingElement(parentInstance));
                }
            }
            return(symbols);
        }