/// <summary>
        ///   Writes the attribute specification to a stream.
        /// </summary>
        /// <param name="wr"><see cref="StreamWriter"/> object to write the attribute specification to.</param>
        /// <param name="indentOffset">Number of indents to add before any documentation begins.</param>
        /// <exception cref="ArgumentNullException"><paramref name="wr"/> is a null reference.</exception>
        /// <exception cref="IOException">An error occurred while writing to the <see cref="StreamWriter"/> object.</exception>
        public void Write(StreamWriter wr, int indentOffset)
        {
            if (wr == null)
            {
                throw new ArgumentNullException("wr");
            }

            if (indentOffset < 0)
            {
                indentOffset = 0;
            }

            Dictionary <string, string[]> lookup = new Dictionary <string, string[]>(2);

            lookup.Add("Summary", new string[] { Summary });
            if (!string.IsNullOrWhiteSpace(Remarks))
            {
                lookup.Add("Remarks", new string[] { Remarks });
            }

            DocumentationHelper.WriteFlowerLine(wr, indentOffset);
            DocumentationHelper.WriteGeneralDocumentationElements(wr, lookup, indentOffset);
            DocumentationHelper.WriteFlowerLine(wr, indentOffset);
            DocumentationHelper.WriteLine(wr, string.Format("attribute {0} of {1} : {2} is {3};", Declaration.Name, Item.Name, GetItemString(), Value), indentOffset);
        }
예제 #2
0
        /// <summary>
        ///   Writes the file to the <see cref="StreamWriter"/> object.
        /// </summary>
        /// <param name="wr"><see cref="StreamWriter"/> object to write the code to.</param>
        /// <exception cref="ArgumentNullException"><paramref name="wr"/> is a null reference.</exception>
        /// <exception cref="IOException">An error occurred while writing to the <see cref="StreamWriter"/> object.</exception>
        private void WriteFileSubHeader(StreamWriter wr)
        {
            List <Dictionary <string, List <string> > > subInfo = null;
            List <string> info = null;

            GenerateModuleInfo(Module, out info, out subInfo);

            // Determine the first part maximum string length.
            int maxSizeRegions = 0;

            foreach (Dictionary <string, List <string> > lookup in subInfo)
            {
                foreach (string key in lookup.Keys)
                {
                    MaxStringLength(key, ref maxSizeRegions);
                }
            }

            int col1  = maxSizeRegions + 6;            // 6 is for "--   " and space after.
            int index = 0;

            foreach (string key in info)
            {
                // Write the module of the file.
                StringBuilder sb = new StringBuilder();
                sb.Append("-- ");
                sb.Append(key);
                DocumentationHelper.WriteLine(wr, sb.ToString(), 0);
                Dictionary <string, List <string> > lookup = subInfo[index++];
                int subIndex = 0;
                foreach (string subKey in lookup.Keys)
                {
                    DocumentationHelper.WriteLine(wr, string.Format("--   {0}", subKey), 0);
                    for (int i = 0; i < lookup[subKey].Count; i++)
                    {
                        sb.Clear();
                        sb.Append("--");
                        for (int j = 2; j < col1; j++)
                        {
                            sb.Append(" ");
                        }
                        sb.Append(lookup[subKey][i]);
                        DocumentationHelper.WriteLine(wr, sb.ToString(), 0);
                    }
                    subIndex++;

                    if (subIndex != lookup.Keys.Count)
                    {
                        DocumentationHelper.WriteLine(wr, "--", 0);
                    }
                }
                DocumentationHelper.WriteFlowerLine(wr, 0);
            }
        }
예제 #3
0
        /// <summary>
        ///   Writes the basic file header composed of the summary and remarks section.
        /// </summary>
        /// <param name="wr"><see cref="StreamWriter"/> object to write the header to.</param>
        /// <param name="indentOffset">Number of indents to add before any documentation begins.</param>
        /// <exception cref="ArgumentNullException"><paramref name="wr"/> is a null reference.</exception>
        /// <exception cref="IOException">An error occurred while writing to the <see cref="StreamWriter"/> object.</exception>
        public void WriteBasicHeader(StreamWriter wr, int indentOffset)
        {
            if (wr == null)
            {
                throw new ArgumentNullException("wr");
            }

            if (indentOffset < 0)
            {
                indentOffset = 0;
            }

            Dictionary <string, string[]> lookup = new Dictionary <string, string[]>(2);

            lookup.Add("Summary", new string[] { Summary });
            if (!string.IsNullOrWhiteSpace(Remarks))
            {
                lookup.Add("Remarks", new string[] { Remarks });
            }

            DocumentationHelper.WriteFlowerLine(wr, indentOffset);
            DocumentationHelper.WriteGeneralDocumentationElements(wr, lookup, indentOffset);
            DocumentationHelper.WriteFlowerLine(wr, indentOffset);
        }
예제 #4
0
        /// <summary>
        ///   Writes the entity to a stream.
        /// </summary>
        /// <param name="wr"><see cref="StreamWriter"/> object to write the entity to.</param>
        /// <param name="indentOffset">Number of indents to add before any documentation begins.</param>
        /// <exception cref="ArgumentNullException"><paramref name="wr"/> is a null reference.</exception>
        /// <exception cref="InvalidOperationException">The number of ports and generics is zero.</exception>
        /// <exception cref="IOException">An error occurred while writing to the <see cref="StreamWriter"/> object.</exception>
        public override void Write(StreamWriter wr, int indentOffset)
        {
            if (wr == null)
            {
                throw new ArgumentNullException("wr");
            }

            if (indentOffset < 0)
            {
                indentOffset = 0;
            }

            if (Generics.Count == 0 && Ports.Count == 0)
            {
                throw new InvalidOperationException(string.Format("An attempt was made to write an entity ({0}), but the entity does not have any ports or generics.", Name));
            }

            // Generate the documentation lookup table.
            Dictionary <string, string[]> lookup = new Dictionary <string, string[]>();

            lookup.Add("Summary", new string[] { Summary });

            if (Generics.Count > 0)
            {
                List <string> subItems = new List <string>(Generics.Count);
                foreach (GenericInfo info in Generics)
                {
                    subItems.Add(info.GetDocumentationString());
                }
                lookup.Add("Generics", subItems.ToArray());
            }

            if (Ports.Count > 0)
            {
                List <string> subItems = new List <string>(Ports.Count);
                foreach (PortInfo info in Ports)
                {
                    subItems.Add(info.GetDocumentationString());
                }
                lookup.Add("Ports", subItems.ToArray());
            }

            if (!string.IsNullOrWhiteSpace(Remarks))
            {
                lookup.Add("Remarks", new string[] { Remarks });
            }

            // Write the header.
            DocumentationHelper.WriteFlowerLine(wr, indentOffset);
            DocumentationHelper.WriteGeneralDocumentationElements(wr, lookup, indentOffset);
            DocumentationHelper.WriteFlowerLine(wr, indentOffset);
            DocumentationHelper.WriteLine(wr, string.Format("entity {0} is", Name), indentOffset);

            if (Generics.Count > 0)
            {
                SimplifiedGenericInfo.WriteGenericDeclaration(wr, Generics.ToArray(), indentOffset);
            }

            if (Ports.Count > 0)
            {
                SimplifiedPortInfo.WritePortDeclaration(wr, Ports.ToArray(), indentOffset);
            }

            StringBuilder sb = new StringBuilder();

            sb.Append("end");
            if (DefaultValues.AddOptionalTypeNames)
            {
                sb.Append(" entity");
            }
            if (DefaultValues.AddOptionalNames)
            {
                sb.AppendFormat(" {0}", Name);
            }
            sb.Append(";");
            DocumentationHelper.WriteLine(wr, sb.ToString(), indentOffset);
        }
예제 #5
0
        /// <summary>
        ///   Writes the procedure to a stream.
        /// </summary>
        /// <param name="wr"><see cref="StreamWriter"/> object to write the procedure to.</param>
        /// <param name="indentOffset">Number of indents to add before any documentation begins.</param>
        /// <exception cref="ArgumentNullException"><paramref name="wr"/> is a null reference.</exception>
        /// <exception cref="InvalidOperationException">No code lines were specified or no parameters were specified.</exception>
        /// <exception cref="IOException">An error occurred while writing to the <see cref="StreamWriter"/> object.</exception>
        public override void Write(StreamWriter wr, int indentOffset)
        {
            if (wr == null)
            {
                throw new ArgumentNullException("wr");
            }

            if (indentOffset < 0)
            {
                indentOffset = 0;
            }

            if (CodeLines.Count == 0)
            {
                throw new InvalidOperationException(string.Format("An attempt was made to write a procedure ({0}), but it doesn't have any code associated with it", Name));
            }
            if (Parameters.Count == 0)
            {
                throw new InvalidOperationException(string.Format("An attempt was made to write a procedure ({0}), but it doesn't have any parameters", Name));
            }

            // Generate the documentation lookup table.
            Dictionary <string, string[]> lookup = new Dictionary <string, string[]>();

            lookup.Add("Summary", new string[] { Summary });

            if (Parameters.Count > 0)
            {
                List <string> subItems = new List <string>(Parameters.Count);
                foreach (ProcedureParameterInfo info in Parameters)
                {
                    subItems.Add(info.GetDocumentationString());
                }
                lookup.Add("Parameters", subItems.ToArray());
            }

            if (!string.IsNullOrWhiteSpace(Remarks))
            {
                lookup.Add("Remarks", new string[] { Remarks });
            }

            // Write the header.
            DocumentationHelper.WriteFlowerLine(wr, indentOffset);
            DocumentationHelper.WriteGeneralDocumentationElements(wr, lookup, indentOffset);
            DocumentationHelper.WriteFlowerLine(wr, indentOffset);
            DocumentationHelper.WriteLine(wr, GetSignature(), indentOffset);

            // Write the variable declarations out.
            BaseTypeInfo.WriteBaseTypeInfos(null, wr, Variables.ToArray(), indentOffset + 1, Name, "procedure");

            DocumentationHelper.WriteLine(wr, "begin", indentOffset);

            // Write the code lines.
            foreach (string line in CodeLines)
            {
                DocumentationHelper.WriteLine(wr, line, indentOffset + 1);
            }

            StringBuilder sb = new StringBuilder();

            sb.Append("end");
            if (DefaultValues.AddOptionalTypeNames)
            {
                sb.Append(" procedure");
            }
            if (DefaultValues.AddOptionalNames)
            {
                sb.AppendFormat(" {0}", Name);
            }
            sb.Append(";");
            DocumentationHelper.WriteLine(wr, sb.ToString(), indentOffset);
        }