[System.Security.SecurityCritical] // auto-generated
public StringExpressionSet Union(StringExpressionSet ses)
{
// If either set is empty, the union represents a copy of the other.
if (ses == null || ses.IsEmpty())
{
return(this.Copy());
}
if (this.IsEmpty())
{
return(ses.Copy());
}
CheckList();
ses.CheckList();
// Perform the union
// note: insert smaller set into bigger set to reduce needed comparisons
StringExpressionSet bigger = ses.m_list.Count > this.m_list.Count ? ses : this;
StringExpressionSet smaller = ses.m_list.Count <= this.m_list.Count ? ses : this;
StringExpressionSet unionSet = bigger.Copy();
unionSet.Reduce();
for (int index = 0; index < smaller.m_list.Count; ++index)
{
unionSet.AddSingleExpressionNoDuplicates((String)smaller.m_list[index]);
}
unionSet.GenerateString();
return(unionSet);
}