예제 #1
0
 private static void AddEntries(List <DataDefinition> linkage, LinkageSection node)
 {
     foreach (var definition in node.Children())
     {
         AddEntries(linkage, definition);
     }
 }
예제 #2
0
        /// <summary>TCRFUN_DECLARATION_NO_DUPLICATE_NAME</summary>
        /// <param name="node">LINKAGE SECTION node</param>
        /// <param name="profile">Parameters for original function</param>
        private void CheckNoLinkageItemIsAParameter(LinkageSection node, ParametersProfile profile)
        {
            if (node == null)
            {
                return;                   // no LINKAGE SECTION
            }
            var linkage = new List <DataDefinition>();

            AddEntries(linkage, node);
            foreach (var description in linkage)
            {
                var used = Validate(profile.ReturningParameter, description.Name);
                if (used != null)
                {
                    AddErrorAlreadyParameter(description, description.QualifiedName); continue;
                }
                used = GetParameter(profile.InputParameters, description.Name);
                if (used != null)
                {
                    AddErrorAlreadyParameter(description, description.QualifiedName); continue;
                }
                used = GetParameter(profile.OutputParameters, description.Name);
                if (used != null)
                {
                    AddErrorAlreadyParameter(description, description.QualifiedName); continue;
                }
                used = GetParameter(profile.InoutParameters, description.Name);
                if (used != null)
                {
                    AddErrorAlreadyParameter(description, description.QualifiedName); continue;
                }
            }
        }
예제 #3
0
 /// <summary>
 /// Check the Linkage section for private variables
 /// </summary>
 /// <param name="linkageSection"></param>
 /// <returns></returns>
 public override bool Visit(LinkageSection linkageSection)
 {
     RemoveNonPublicDataDeclaration(linkageSection);
     //remove linkage section if it doesn't contain any children
     if (linkageSection.Children.Count == 0)
     {
         linkageSection.Remove();
     }
     return(false);
 }
예제 #4
0
 /// <summary>TCRFUN_DECLARATION_NO_DUPLICATE_NAME</summary>
 /// <param name="node">LINKAGE SECTION node</param>
 /// <param name="profile">Parameters for original function</param>
 private void CheckNoLinkageItemIsAParameter(LinkageSection node, ParametersProfile profile)
 {
     if (node == null) return; // no LINKAGE SECTION
     var linkage = new List<DataDefinition>();
     AddEntries(linkage, node);
     foreach(var description in linkage) {
     var used = Validate(profile.ReturningParameter, description.Name);
     if (used != null) { AddErrorAlreadyParameter(description, description.QualifiedName); continue; }
     used = GetParameter(profile.InputParameters,  description.Name);
     if (used != null) { AddErrorAlreadyParameter(description, description.QualifiedName); continue; }
     used = GetParameter(profile.OutputParameters, description.Name);
     if (used != null) { AddErrorAlreadyParameter(description, description.QualifiedName); continue; }
     used = GetParameter(profile.InoutParameters,  description.Name);
     if (used != null) { AddErrorAlreadyParameter(description, description.QualifiedName); continue; }
     }
 }
예제 #5
0
 private void AddEntries(List<DataDefinition> linkage, LinkageSection node)
 {
     foreach(var definition in node.Children())
     AddEntries(linkage, definition);
 }
예제 #6
0
 public virtual bool Visit(LinkageSection linkageSection)
 {
     return(true);
 }