#include "treeprop.h" /****************************************************************************** Tree property checker. File name :set_utilities.c Author :Christos Stamelos. Version :II Date :14 Jan 1991. ******************************************************************************/ /* This file contains the functionallity for set manipulation */ /* The specific type of set is : Item_set = < item > Lc DemNumber List( DemIdent ). */ int belongs_to_set(DemIdent* id, DemIdent_list* iset) { DemIdent_list_iterator next_arg(*iset); DemIdent_ each_arg; while(each_arg=next_arg()) if (id->g_equal(each_arg)) return 1; return 0; } DemIdent_list* DemIdent_list::intersec(DemIdent_list* iset) { DemIdent_list_iterator next_arg(*this); DemIdent_ each_arg; DemIdent_list* intersec_set = new DemIdent_list(); while(each_arg=next_arg()) if ( belongs_to_set(each_arg,iset) ) intersec_set->append(each_arg); return intersec_set; } int DemIdent_list::is_empty_set() { if( this->list_length() ) return 0; else return 1; } DemIdent_list* DemIdent_list::set_difference(DemIdent_list *iset) { DemIdent_list_iterator next_arg(*this); DemIdent_ each_arg; DemIdent_list* difference_set = new DemIdent_list(); while(each_arg=next_arg()) if( !belongs_to_set(each_arg,iset) ) difference_set->append(each_arg); return difference_set; } DemIdent_list* DemIdent_list::replace_subset_with_element(DemIdent_list* iset, DemIdent *element) { DemIdent_list* new_list = new DemIdent_list( ); new_list = this->set_difference( iset ) ; new_list->append(element); return new_list; }