[BACK]Return to sets_of_unknowns_io.adb CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Root_Counts / Product

Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Product/sets_of_unknowns_io.adb, Revision 1.1.1.1

1.1       maekawa     1: with integer_io;                         use integer_io;
                      2: with Symbol_Table,Symbol_Table_io;       use Symbol_Table;
                      3:
                      4: package body Sets_of_Unknowns_io is
                      5:
                      6:   procedure get ( s : in out Set ) is
                      7:   begin
                      8:     get(Standard_Input,s);
                      9:   end get;
                     10:
                     11:   procedure get ( file : in file_type; s : in out Set ) is
                     12:
                     13:     ch : character;
                     14:     continue : boolean;
                     15:
                     16:     procedure Read_Symbol ( cont : out boolean ) is
                     17:     begin
                     18:       loop
                     19:        get(file,ch);
                     20:        exit when ch /= ' ';
                     21:       end loop;
                     22:       if ch = '}'
                     23:        then cont := false;
                     24:        else declare
                     25:              sb : symbol;
                     26:              nb : natural;
                     27:             begin
                     28:               sb := (sb'range => ' ');
                     29:               Symbol_Table_io.get(file,ch,sb,'}');
                     30:              nb := Symbol_Table.Get(sb);
                     31:              if nb = 0
                     32:               then Symbol_Table.Add(sb,nb);
                     33:               end if;
                     34:              Add(s,nb);
                     35:             end;
                     36:            cont := (ch /= '}');
                     37:       end if;
                     38:     end Read_Symbol;
                     39:
                     40:   begin
                     41:     loop
                     42:       get(file,ch);
                     43:       exit when ch = '{' or ch = '}';
                     44:     end loop;
                     45:     if ch = '{'
                     46:      then loop
                     47:             Read_Symbol(continue);
                     48:             exit when not continue;
                     49:           end loop;
                     50:     end if;
                     51:   end get;
                     52:
                     53:   procedure put ( s : in Set ) is
                     54:   begin
                     55:     put(Standard_Output,s);
                     56:   end put;
                     57:
                     58:   procedure put ( file : in file_type; s : in Set ) is
                     59:
                     60:     standard : boolean := (Symbol_Table.Number = 0);
                     61:
                     62:     procedure Write_Element ( i: in natural ) is
                     63:     begin
                     64:       if standard
                     65:        then put(file,'x'); put(file,i,2);
                     66:             if i >= 10
                     67:              then put(file,' ');
                     68:             end if;
                     69:        else Symbol_Table_io.put(file,Symbol_Table.Get(i));
                     70:             put(file,' ');
                     71:       end if;
                     72:     end Write_Element;
                     73:
                     74:   begin
                     75:     text_io.put(file,"{");
                     76:     for i in 1..Dimension(s) loop
                     77:       if Is_In(s,i)
                     78:        then Write_Element(i);
                     79:       end if;
                     80:     end loop;
                     81:     text_io.put(file,"}");
                     82:   end put;
                     83:
                     84: end Sets_of_Unknowns_io;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>