public static int DefaultComparison(ChannelMapEntryWrapper x, ChannelMapEntryWrapper y) { int status_result = CompareStatus(x, y); if (status_result != 0) return status_result; return CompareNumber(x, y); }
public static int CompareStatus(ChannelMapEntryWrapper x, ChannelMapEntryWrapper y) { return (int)x.QAMStatus - (int)y.QAMStatus; }
public static ChannelMapEntryWrapper CreateOrGetWrapperForEntry(ChannelMapEntry entry) { int number = entry.Number; if (wrappers_by_num_.ContainsKey(number)) { ChannelMapEntryWrapper wrapper = wrappers_by_num_[number]; if (!entry.Equals(wrapper.MapEntry)) throw new Exception("Conflicting channel map entry already exists!"); return wrapper; } else { ChannelMapEntryWrapper wrapper = new ChannelMapEntryWrapper(entry); wrappers_by_num_.Add(number, wrapper); int qam_key = ChannelNumberToInt(entry.PhysicalChannel); if (!wrappers_by_qam_key_.ContainsKey(qam_key)) { wrappers_by_qam_key_.Add(qam_key, new List<ChannelMapEntryWrapper>()); } wrappers_by_qam_key_[qam_key].Add(wrapper); return wrapper; } }
public static int ComparePhysicalChannel(ChannelMapEntryWrapper x, ChannelMapEntryWrapper y) { ChannelNumber x_chan = x.MapEntry.PhysicalChannel; ChannelNumber y_chan = y.MapEntry.PhysicalChannel; int val = x_chan.Number - y_chan.Number; if (val != 0) return val; return x_chan.SubNumber - y_chan.SubNumber; }
public static int CompareOTA(ChannelMapEntryWrapper x, ChannelMapEntryWrapper y) { return -y.ExistsAsOTA.CompareTo(x.ExistsAsOTA); }
public static int CompareNumber(ChannelMapEntryWrapper x, ChannelMapEntryWrapper y) { return x.MapEntry.Number - y.MapEntry.Number; }
public static int CompareListing(ChannelMapEntryWrapper x, ChannelMapEntryWrapper y) { bool x_single_listing = x.listings.Count == 1; bool y_single_listing = y.listings.Count == 1; if (x_single_listing != y_single_listing) return y_single_listing.CompareTo(x_single_listing); if (x.listings.Count != y.listings.Count) return y.listings.Count - x.listings.Count; if (x_single_listing) { return x.listings[0].Name.CompareTo(y.listings[0].Name); } return 0; }
public static int CompareCallsign(ChannelMapEntryWrapper x, ChannelMapEntryWrapper y) { return x.MapEntry.Callsign.CompareTo(y.MapEntry.Callsign); }