Beispiel #1
0
        public ResolvedAttributeSet MergeSet(ResolvedAttributeSet toMerge)
        {
            ResolvedAttributeSet rasResult = this;

            if (toMerge != null)
            {
                int l = toMerge.Set.Count;
                for (int i = 0; i < l; i++)
                {
                    // don't pass in the context here
                    ResolvedAttributeSet rasMerged = rasResult.Merge(toMerge.Set[i]);
                    if (rasMerged != rasResult)
                    {
                        rasResult = rasMerged;
                    }
                    // copy context here
                    toMerge.CopyAttCtxMappingsInto(rasResult.Ra2attCtxSet, rasResult.AttCtx2ra, toMerge.Set[i]);
                }
            }
            return(rasResult);
        }
Beispiel #2
0
        public ResolvedAttributeSet MergeSet(ResolvedAttributeSet toMerge)
        {
            ResolvedAttributeSet rasResult = this;

            if (toMerge != null)
            {
                foreach (ResolvedAttribute ra in toMerge.Set)
                {
                    // don't pass in the context here
                    ResolvedAttributeSet rasMerged = rasResult.Merge(ra);
                    if (rasMerged != rasResult)
                    {
                        rasResult = rasMerged;
                    }
                    // get the attribute from the merged set, attributes that were already present were merged, not replaced
                    rasResult.ResolvedName2resolvedAttribute.TryGetValue(ra.ResolvedName, out ResolvedAttribute currentRa);
                    // copy context here
                    toMerge.CopyAttCtxMappingsInto(rasResult.Ra2attCtxSet, rasResult.AttCtx2ra, ra, currentRa);
                }
            }
            return(rasResult);
        }