#include "treeprop.h" /****************************************************************************** Tree property checker. File name :belong_to_sets.c Author :Christos Stamelos. Version :II Date :14 Jan 1991. ******************************************************************************/ /* function construct set of belongs to sets */ void Set_of_item_sets::construct_set_of_belongs_to_sets( Set_of_belongs_to_sets *isetofbelongstosets) { itemsets->construct_set_of_belongs_to_sets (isetofbelongstosets,biggestcardinallity); } void Item_set_list::construct_set_of_belongs_to_sets( Set_of_belongs_to_sets *isetofbelongstosets , DemNumber *biggestcardinallity) { int i; for (i=biggestcardinallity->get_val();i>0;i-- ){ Item_set_list_iterator next_arg(*this); Item_set_ each_arg; while (each_arg = next_arg()) if(i == (each_arg->get_cardinality())->get_val() ) each_arg->construct_set_of_belongs_to_sets(isetofbelongstosets); } } void Item_set::construct_set_of_belongs_to_sets( Set_of_belongs_to_sets *isetofbelongstosets) { members->construct_set_of_belongs_to_sets(isetofbelongstosets , item); } void DemIdent_list::construct_set_of_belongs_to_sets( Set_of_belongs_to_sets *isetofbelongstosets , Lc *item) { DemIdent_list_iterator next_arg(*this); DemIdent* each_arg; while (each_arg = next_arg()) isetofbelongstosets->insertentry( each_arg , item ); } void Set_of_belongs_to_sets::insertentry( DemIdent *iclass , Lc *item ) { belongstosets->insertentry( iclass , item ); } void Belongs_to_set_list::insertentry( DemIdent *iclass , Lc *item ) { int done = 0; Belongs_to_set_list_iterator next_arg(*this); Belongs_to_set_ each_arg; while (each_arg = next_arg()) if(iclass->g_equal(each_arg->get_classname())){ done = 1; int j; j = (each_arg->get_cardinality())->get_val()+1; DemNumber *temp = new DemNumber(j); each_arg->rset_cardinality( temp ); (each_arg->get_belogsto())->append( item ); } if ( !done ){ Lc_list *newlist = new Lc_list(item); DemNumber *itemp = new DemNumber(1); Belongs_to_set *newbelongs_to_set = new Belongs_to_set( iclass , itemp , newlist ); this->append(newbelongs_to_set); } }