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

Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Symmetry/symbolic_symmetry_group_io.adb, Revision 1.1.1.1

1.1       maekawa     1: with integer_io;                         use integer_io;
                      2: with Communications_with_User;           use Communications_with_User;
                      3: with Symbol_Table,Symbol_Table_io;       use Symbol_Table;
                      4:
                      5: package body Symbolic_Symmetry_Group_io is
                      6:
                      7:   procedure iget ( p : in out Permutation ) is
                      8:
                      9:   -- DESCRIPTION ;
                     10:   --   Auxiliary procedure to realize an interactive get.
                     11:
                     12:     ok : boolean := false;
                     13:     pp : Permutation(p'range) := (p'range => 0);
                     14:     ans : character;
                     15:
                     16:   begin
                     17:     while not ok loop
                     18:       get(Standard_Input,pp);
                     19:       ok := Is_Permutation(pp);
                     20:       if not ok
                     21:        then put("is no permutation.  Do you want to retry ? (y/n) ");
                     22:             Ask_Yes_or_No(ans);
                     23:             ok := (ans /= 'y');
                     24:       end if;
                     25:     end loop;
                     26:     p := pp;
                     27:   end iget;
                     28:
                     29:   procedure get ( p : in out Permutation ) is
                     30:   begin
                     31:     iget(p);
                     32:   end get;
                     33:
                     34:   procedure get ( file : in file_type; p : in out Permutation ) is
                     35:
                     36:     sb : Symbol;
                     37:     ch : character;
                     38:
                     39:   begin
                     40:     for i in p'range loop
                     41:       sb := (sb'range => ' ');
                     42:       get(ch);
                     43:       while ch = ' ' loop get(ch); end loop;
                     44:       if ch = '-'
                     45:        then get(ch);
                     46:             Symbol_Table_io.get(file,ch,sb);
                     47:             p(i) := -Symbol_Table.get(sb);
                     48:        else Symbol_Table_io.get(file,ch,sb);
                     49:             p(i) := Symbol_Table.get(sb);
                     50:       end if;
                     51:     end loop;
                     52:   end get;
                     53:
                     54:   procedure get ( l : in out List_of_Permutations; n,nb : in natural ) is
                     55:
                     56:     p : Permutation(1..n) := (1..n => 0);
                     57:     l2 : List_of_Permutations;
                     58:
                     59:   begin
                     60:     for i in 1..nb loop
                     61:       iget(p);
                     62:       Append(l,l2,p);
                     63:     end loop;
                     64:   end get;
                     65:
                     66:   procedure get ( file : in file_type;
                     67:                  l : in out List_of_Permutations; n,nb : in natural ) is
                     68:
                     69:     p : Permutation(1..n) := (1..n => 0);
                     70:     l2 : List_of_Permutations;
                     71:
                     72:   begin
                     73:     for i in 1..nb loop
                     74:       get(file,p);
                     75:       if Is_Permutation(p)
                     76:        then Append(l,l2,p);
                     77:       end if;
                     78:     end loop;
                     79:   end get;
                     80:
                     81:   procedure put ( p : in Permutation ) is
                     82:   begin
                     83:     put(Standard_Output,p);
                     84:   end put;
                     85:
                     86:   procedure put ( file : in file_type; p : in Permutation ) is
                     87:
                     88:     sb : Symbol;
                     89:
                     90:   begin
                     91:     for i in p'range loop
                     92:       put(file,' ');
                     93:       if p(i) < 0
                     94:        then put(file,'-');
                     95:             sb := Symbol_Table.get(-p(i));
                     96:        else sb := Symbol_Table.get(p(i));
                     97:       end if;
                     98:       Symbol_Table_io.put(file,sb);
                     99:     end loop;
                    100:   end put;
                    101:
                    102:   procedure put ( l : in List_of_Permutations ) is
                    103:   begin
                    104:     put(Standard_Output,l);
                    105:   end put;
                    106:
                    107:   procedure put ( file : in file_type; l : in List_of_Permutations ) is
                    108:
                    109:     temp : List_of_Permutations := l;
                    110:
                    111:   begin
                    112:     while not Is_Null(temp) loop
                    113:       put(file,Permutation(Head_Of(temp).all));
                    114:       new_line(file);
                    115:       temp := Tail_Of(temp);
                    116:     end loop;
                    117:   end put;
                    118:
                    119: end Symbolic_Symmetry_Group_io;

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