Пример #1
0
        public override QualifiedElement GetQualifiedName()
        {
            var stack = StackPool.Get();

            try
            {
                foreach (var elem in AncestorsAndSelf())
                {
                    elem.AggregateIdentities(stack);
                }
                var ret = new QualifiedElement();

                while (stack.Count != 0)
                {
                    var(scope, category, name) = stack.Pop();
                    _ = new IdentityElement(ret, scope, category, name);
                }

                return(ret);
            }
            finally
            {
                Debug.Assert(stack.Count == 0);
                StackPool.Return(stack);
            }
        }
Пример #2
0
        public override QualifiedElement GetQualifiedName()
        {
            var accum = StackPool.Get();

            try
            {
                foreach (var identity in From.Identities.Take(Order).Cast <IdentityElement>().Reverse())
                {
                    identity.AggregateIdentities(accum);
                }

                var ret = new QualifiedElement();

                while (accum.Count != 0)
                {
                    var(scope, category, name) = accum.Pop();
                    _ = new IdentityElement(ret, scope, category, name);
                }

                return(ret);
            }
            finally
            {
                Debug.Assert(accum.Count == 0);
                StackPool.Return(accum);
            }
        }
Пример #3
0
        public override QualifiedElement GetQualifiedName()
        {
            var accum = StackPool.Get();

            try
            {
                AggregateIdentities(accum);

                var piv = Parent switch
                {
                    NameSpaceElement ns => ns.Parent,
                    _ => Parent
                };

                if (!(piv is ImaginaryRoot))
                {
                    foreach (var element in piv.AncestorsAndSelf())
                    {
                        element.AggregateIdentities(accum);
                    }
                }

                var ret = new QualifiedElement();

                while (accum.Count != 0)
                {
                    var(scope, cat, nme) = accum.Pop();
                    _ = new IdentityElement(ret, scope, cat, nme);
                }

                return(ret);
            }
            finally
            {
                Debug.Assert(accum.Count == 0);
                StackPool.Return(accum);
            }
        }