Exemplo n.º 1
0
        /// <summary>
        /// Merges two instances based on the stronger of both variabilities and the set union of their reaching definitions
        /// </summary>
        /// <param name="a">first instance</param>
        /// <param name="b">second instance</param>
        /// <returns>instance representing the merged information of both instances</returns>
        public static VariabilityInfo MergeDefs(VariabilityInfo a, VariabilityInfo b)
        {
            Contract.Requires(a.Definitions != null);
            Contract.Requires(b.Definitions != null);

            return(new VariabilityInfo(
                       VariabilityOperations.Stronger(a.Variability, b.Variability),
                       a.Definitions.Union(b.Definitions).Distinct().ToArray()));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Two instances are defined to be equal iff they have the same variability and the same set of reaching definitions.
        /// </summary>
        /// <param name="obj">some object, possibly an instance of VariabilityInfo</param>
        /// <returns>whether both instances meet the equality criterion</returns>
        public override bool Equals(object obj)
        {
            VariabilityInfo vi = obj as VariabilityInfo;

            if (vi == null)
            {
                return(false);
            }
            return(Variability == vi.Variability &&
                   Definitions.SequenceEqual(vi.Definitions));
        }
Exemplo n.º 3
0
 /// <summary>
 /// Merges two instances under assumption of a single reaching definition
 /// </summary>
 /// <param name="a">first instance</param>
 /// <param name="b">second instance</param>
 /// <param name="def">the one and only reaching definition</param>
 /// <returns>merged instance, based on the stronger of both variabilities</returns>
 public static VariabilityInfo MergeByNewDef(VariabilityInfo a, VariabilityInfo b, int def)
 {
     return(CreateBySingleDef(
                VariabilityOperations.Stronger(a.Variability, b.Variability),
                def));
 }