with Symbol_Table,Symbol_Table_io; use Symbol_Table; with Set_Structure; package body Set_Structure_io is procedure get is begin Set_Structure_io.get(Standard_Input); end get; procedure get ( file : in file_type ) is ch : character; sb : symbol; begin for i in 1..Set_Structure.Dimension loop -- Read sets for ith equation : for j in 1..Set_Structure.Number_of_Sets(i) loop -- Read the jth set of the ith equation : get(file,ch); while (ch = ' ') loop get(file,ch); end loop; if ch = '{' then loop get(file,ch); while (ch = ' ') loop get(file,ch); end loop; exit when (ch = '}'); sb := (sb'range => ' '); Symbol_Table_io.get(file,ch,sb,'}'); Set_Structure.Add(i,j,Symbol_Table.Get(sb)); exit when (ch = '}'); end loop; end if; end loop; end loop; end get; procedure put is begin Set_Structure_io.put(Standard_Output); end put; procedure put ( file : in file_type ) is n : natural := Set_Structure.Dimension; sb : Symbol; procedure Write_set ( file : in file_type; i,j : in natural ) is begin put(file,'{'); for k in 1..n loop if Set_Structure.Is_In(i,j,k) then --Symbol_Table_io.put(file,Symbol_Table.Get(i)); sb := Symbol_Table.Get(k); Symbol_Table_io.put(file,sb); put(file,' '); end if; end loop; put(file,'}'); end Write_set; begin for i in 1..n loop put(file," "); for j in 1..Set_Structure.Number_of_Sets(i) loop Write_set(file,i,j); end loop; new_line(file); end loop; end put; end Set_Structure_io;