private void writeInterfaceList <T1>(IList <T1> list, bool isGeneric) where T1 : VhdlObjectProvider
        {
            writer.BeginAlign();

            bool first = true;

            foreach (VhdlObjectProvider objectProvider in list)
            {
                if (first)
                {
                    first = false;
                }
                else
                {
                    writer.Append(";").NewLine();
                }

                if (objectProvider is VhdlObjectGroup <VhdlObject> )
                {
                    VhdlObjectGroup <VhdlObject> group = (VhdlObjectGroup <VhdlObject>)objectProvider;
                    VhdlOutputHelper.handleAnnotationsBefore(group, writer);
                }

                //TODO: check for equal types etc.
                VhdlObject obj0 = objectProvider.VhdlObjects[0];

                InterfaceDeclarationFormat format = Annotations.getAnnotation <InterfaceDeclarationFormat>(obj0);

                if (format != null && format.UseObjectClass)
                {
                    writer.Append(obj0.ObjectClass.ToString()).Append(' ');
                }

                writer.AppendIdentifiers(objectProvider.VhdlObjects, ", ");
                writer.Align();

                writer.Append(" : ");

                if (format != null)
                {
                    if (format.UseMode || (obj0.Mode != VhdlObject.ModeEnum.IN))
                    {
                        writer.Append(obj0.Mode.ToString()).Append(' ');
                    }
                }
                else
                {
                    if (!isGeneric || obj0.Mode != VhdlObject.ModeEnum.IN)
                    {
                        writer.Append(obj0.Mode.ToString()).Append(' ');
                    }
                }

                VhdlObjectOutputHelper.interfaceSuffix(obj0, writer, output);
            }

            writer.NewLine().EndAlign();
        }
Ejemplo n.º 2
0
        private bool isOutputObjectClassFunction(VhdlObject @object)
        {
            InterfaceDeclarationFormat format = Annotations.getAnnotation <InterfaceDeclarationFormat>(@object);

            if (format != null && format.UseObjectClass)
            {
                return(true);
            }

            return(@object.ObjectClass != VhdlObject.ObjectClassEnum.CONSTANT);
        }
Ejemplo n.º 3
0
        private bool isOutputMode(VhdlObject @object)
        {
            if (@object.Mode == VhdlObject.ModeEnum.NONE)
            {
                return(false);
            }

            InterfaceDeclarationFormat format = Annotations.getAnnotation <InterfaceDeclarationFormat>(@object);

            if (format != null && format.UseMode)
            {
                return(true);
            }

            return(@object.Mode != VhdlObject.ModeEnum.IN);
        }
Ejemplo n.º 4
0
        private bool isOutputObjectClassProcedure(VhdlObject @object)
        {
            InterfaceDeclarationFormat format = Annotations.getAnnotation <InterfaceDeclarationFormat>(@object);

            if (format != null && format.UseObjectClass)
            {
                return(true);
            }

            switch (@object.ObjectClass)
            {
            case VhdlObject.ObjectClassEnum.CONSTANT:
                return(false);

            case VhdlObject.ObjectClassEnum.VARIABLE:
                return(@object.Mode != Variable.ModeEnum.INOUT && @object.Mode != Variable.ModeEnum.OUT);

            default:
                return(true);
            }
        }