/// <inheritdoc/>
        public override void DiscoverAllAnnotations(IList <RuleInstance> result)
        {
            base.DiscoverAllAnnotations(result);

            SubName?.DiscoverAllAnnotations(result);
            SuperName?.DiscoverAllAnnotations(result);
            Rank?.DiscoverAllAnnotations(result);
        }
Example #2
0
        /// <inheritdoc/>
        protected override ulong CalculateLongHashCode()
        {
            var result = base.CalculateLongHashCode() ^ SubName.GetLongHashCode() ^ SuperName.GetLongHashCode();

            if (Rank != null)
            {
                result ^= LongHashCodeWeights.BaseModalityWeight ^ Rank.GetLongHashCode();
            }

            return(result);
        }
        /// <inheritdoc/>
        public override AstStatement CloneAstStatement(Dictionary <object, object> context)
        {
            if (context.ContainsKey(this))
            {
                return((AstStatement)context[this]);
            }

            var result = new AstUseInheritanceStatement();

            context[this] = result;

            result.SubName   = SubName.Clone(context);
            result.SuperName = SuperName.Clone(context);
            result.Rank      = Rank.CloneValue(context);
            result.HasNot    = HasNot;

            result.AppendAnnotations(this, context);

            return(result);
        }
Example #4
0
        public bool IsNullTarget(AmlParser.Target target)
        {
            SuperName superName = target.superName;

            if (superName.Tag != SuperName.TagValue.SimpleName)
            {
                return(false);
            }
            SimpleName simpleName = superName.GetAsSimpleName();

            if (simpleName.Tag != SimpleName.TagValue.NameString)
            {
                return(false);
            }
            NodePath nodePath = simpleName.GetAsNameString().nodePath;

            return(!nodePath.IsAbsolute &&
                   nodePath.NumParentPrefixes == 0 &&
                   nodePath.NameSegments.Length == 0);
        }
Example #5
0
        /// <summary>
        /// Clones the instance using special context and returns cloned instance.
        /// </summary>
        /// <param name="context">Special context for providing references continuity.</param>
        /// <returns>Cloned instance.</returns>
        public InheritanceItem Clone(Dictionary <object, object> context)
        {
            if (context.ContainsKey(this))
            {
                return((InheritanceItem)context[this]);
            }

            var result = new InheritanceItem();

            context[this]               = result;
            result.SubName              = SubName.Clone(context);
            result.SuperName            = SuperName.Clone(context);
            result.Rank                 = Rank.CloneValue(context);
            result.IsSystemDefined      = IsSystemDefined;
            result.KeysOfPrimaryRecords = KeysOfPrimaryRecords;

            result.AppendAnnotations(this, context);

            return(result);
        }
 public bool StartsWith(string letters)
 {
     return(SuperName.StartsWith(letters));
 }
Example #7
0
 public virtual void Visit(SuperName superName)
 {
     superName.AcceptAlternative(this);
 }