Example #1
0
        /// <summary>
        /// Ands two sets of tag bits and replaces Tag Bits A with the result A & B.
        /// </summary>
        /// <param name="lhs">Tag Bits A.</param>
        /// <param name="rhs">Tag Bits B.</param>
        internal static void And(ref TagBits lhs, ref TagBits rhs)
        {
            ulong hibits = lhs.bits7;

            lhs.And(ref rhs);
            lhs.bits7 = TranspileAnd(hibits, rhs.bits7);
        }
Example #2
0
        /// <summary>
        /// Ands two sets of tag bits and replaces Tag Bits A with the result A & B.
        /// </summary>
        /// <param name="lhs">Tag Bits A.</param>
        /// <param name="rhs">Tag Bits B.</param>
        internal static void And(ref TagBits lhs, ref TagBits rhs)
        {
            TagBits bits   = lhs;
            ulong   hibits = FIFTH_BIT.Get(lhs);

            bits.And(ref rhs);
            // Box into a type to allow the fields to be changed
            object localBits = bits;

            FIFTH_BIT.Set(localBits, TranspileAnd(hibits, FIFTH_BIT.Get(rhs)));
            lhs = (TagBits)localBits;
        }
Example #3
0
 public void AndTagBits(ref TagBits rhs)
 {
     UpdateTagBits();
     rhs.And(ref tagBits);
 }