Exemplo n.º 1
0
 private static int AdjustFixedLength(int baseLength, ScannableEntryItemRepeatInfo repeatData)
 {
     if (repeatData.Min == repeatData.Max && repeatData.Min != null)
     {
         return(baseLength * repeatData.Min.Value);
     }
     else if ((repeatData.Options & ~(ScannableEntryItemRepeatOptions.AnyOrder | ScannableEntryItemRepeatOptions.MaxReduce | ScannableEntryItemRepeatOptions.Specific)) == ScannableEntryItemRepeatOptions.None)
     {
         return(baseLength);
     }
     else
     {
         return(-1);
     }
 }
 public static ScannableEntryItemRepeatInfo operator |(ScannableEntryItemRepeatInfo left, ScannableEntryItemRepeatInfo right)
 {
     if (left.Options == ScannableEntryItemRepeatOptions.Specific &&
         right.Options == ScannableEntryItemRepeatOptions.Specific)
     {
         throw new InvalidOperationException("left and right are both specific match requirements");
     }
     if (left.Options == ScannableEntryItemRepeatOptions.Specific)
     {
         ScannableEntryItemRepeatInfo result = new ScannableEntryItemRepeatInfo(left.Min, left.Max);
         result.Options = left.Options | right.Options;
         return(result);
     }
     if (right.Options == ScannableEntryItemRepeatOptions.Specific)
     {
         ScannableEntryItemRepeatInfo result = new ScannableEntryItemRepeatInfo(right.Min, right.Max);
         result.Options = left.Options | right.Options;
         return(result);
     }
     return(new ScannableEntryItemRepeatInfo(left.Options | right.Options));
 }