#include "treeprop.h" /****************************************************************************** Tree property checker. File name :item_sets.c Author :Christos Stamelos. Version :II Date :14 Jan 1991. ******************************************************************************/ /* function : construct_set_of_item_sets */ void Demeter_in::construct_set_of_item_sets(Set_of_item_sets *isetofitemsets) { input->construct_set_of_item_sets( isetofitemsets ); } void Input::construct_set_of_item_sets(Set_of_item_sets *isetofitemsets) { } void Cd_graph::construct_set_of_item_sets(Set_of_item_sets *isetofitemsets) { adjacencies->construct_set_of_item_sets( isetofitemsets ); } void Adjacency_nlist::construct_set_of_item_sets(Set_of_item_sets *isetofitemsets) { Adjacency_list_iterator next_arg(*this); Adjacency_ each_arg; while (each_arg = next_arg()) each_arg->construct_set_of_item_sets( isetofitemsets ); } void Adjacency::construct_set_of_item_sets(Set_of_item_sets *isetofitemsets) { ns->construct_set_of_item_sets( isetofitemsets , source ); } void Neighbors::construct_set_of_item_sets(Set_of_item_sets *isetofitemsets, Vertex *ivertex) { } void Repetit_n::construct_set_of_item_sets(Set_of_item_sets *isetofitemsets, Vertex *ivertex) { } void Neighbors_wc::construct_set_of_item_sets(Set_of_item_sets *isetofitemsets, Vertex *ivertex) { } void Construct_ns::construct_set_of_item_sets(Set_of_item_sets *isetofitemsets, Vertex *ivertex) { } void Alternat_ns::construct_set_of_item_sets(Set_of_item_sets *isetofitemsets, Vertex *ivertex) { alternat_ns->construct_set_of_item_sets(isetofitemsets,ivertex); } void Term_bar_list::construct_set_of_item_sets(Set_of_item_sets *isetofitemsets, Vertex *ivertex) { Term_list_iterator next_arg(*this); Term_ each_arg; while (each_arg = next_arg()){ DemIdent *globalident = new DemIdent("GLOBALIDENT"); Lc *iLc = new Lc( ivertex->get_vertex_name(), ivertex->get_vertex_name()); Lc *iLctemp = new Lc( globalident , globalident ); isetofitemsets->insert_symbol_class( iLc , (each_arg->get_vertex())->get_vertex_name() ); isetofitemsets->insert_symbol_class( iLctemp ,(each_arg->get_vertex())->get_vertex_name() ); } } /* End of function : construct_set_of_item_sets */ /* function insert_symbol_class(Lc * , DemIdent *) */ void Set_of_item_sets::insert_symbol_class(Lc *iLc , DemIdent *rulename ) { DemNumber *temp; temp = itemsets->insert_symbol_class( iLc , rulename ); if ( temp->get_val() > biggestcardinallity->get_val() ) this->rset_biggestcardinallity( temp ); } DemNumber *Item_set_list::insert_symbol_class(Lc *iLc , DemIdent *rulename ) { DemNumber *temp; Item_set_list_iterator next_arg(*this); Item_set_ each_arg; while (each_arg = next_arg()) if((temp=each_arg->insert_symbol_class(iLc ,rulename)) != (DemNumber *) NULL ) return temp; DemIdent_list *members_in = new DemIdent_list(rulename); DemNumber *new_number = new DemNumber(1); Item_set *new_item_set = new Item_set(iLc,new_number,members_in); this->append(new_item_set); return new_number; } DemNumber *Item_set::insert_symbol_class(Lc *iLc , DemIdent *rulename ) { if ( item->isequal(iLc) ) { members->append(rulename ); DemNumber *inumber = new DemNumber(cardinality->get_val()+1); rset_cardinality(inumber ); return cardinality; } else return (DemNumber *) NULL; } /* end of function insert_symbol_class */ /* functionallity for set display */ void Set_of_item_sets::display_sorted() { if ( itemsets -> list_length() ) { cout << "\n\tThe sorted sets are:\n\n"; } itemsets->display_sorted( biggestcardinallity ); } void Item_set_list::display_sorted(DemNumber* biggestcardinallity) { DemIdent *globalident = new DemIdent("GLOBALIDENT"); for(int i=biggestcardinallity->get_val();i>0;i--){ Item_set_list_iterator next_arg(*this); Item_set_ each_arg; while( each_arg = next_arg() ) if( !(((each_arg->get_item())->get_classname())->g_equal(globalident)) && ((each_arg->get_cardinality())->get_val() == i) ){ cout << "\t"; ((each_arg->get_item())->get_classname())->pp(); cout << " :"; cout << "\t [ ";(each_arg->get_members())->pp();cout << " ]\n"; } } }