public DnsResourceDataNamingAuthorityPointer(ushort order, ushort preference, DataSegment flags, DataSegment services, DataSegment regularExpression, DnsDomainName replacement) { if (flags == null) { throw new ArgumentNullException("flags"); } if (!IsLegalFlags(flags)) { throw new ArgumentException( string.Format(CultureInfo.InvariantCulture, "Flags ({0}) contain a non [a-zA-Z0-9] character.", Encoding.ASCII.GetString(flags.Buffer, flags.StartOffset, flags.Length)), "flags"); } Order = order; Preference = preference; Flags = flags.All(flag => flag <'a' || flag> 'z') && flags.IsStrictOrdered() ? flags : new DataSegment(flags.Select(flag => flag >= 'a' && flag <= 'z' ? (byte)(flag + 'A' - 'a') : flag) .Distinct().OrderBy(flag => flag).ToArray()); Services = services; RegularExpression = regularExpression; Replacement = replacement; }
private static bool IsLegalFlags(DataSegment flags) { return(flags.All(flag => (flag >= '0' && flag <= '9' || flag >= 'A' && flag <= 'Z' || flag >= 'a' && flag <= 'z'))); }