Annotation of OpenXM_contrib/PHC/Ada/Schubert/curves_into_grassmannian_io.adb, Revision 1.1
1.1 ! maekawa 1: with Characters_and_Numbers; use Characters_and_Numbers;
! 2: with Symbol_Table; use Symbol_Table;
! 3: with Brackets; use Brackets;
! 4: with Curves_into_Grassmannian; use Curves_into_Grassmannian;
! 5:
! 6: package body Curves_into_Grassmannian_io is
! 7:
! 8: procedure Set_up_Symbol_Table
! 9: ( m,p,q : in natural; top,bottom : in Bracket;
! 10: addmix : in natural ) is
! 11:
! 12: n : constant natural := Number_of_Variables(top,bottom) + 2 + addmix;
! 13: rws : constant natural := (m+p)*(q+1);
! 14: row,deg : natural;
! 15: sb : Symbol;
! 16:
! 17: begin
! 18: if not Symbol_Table.Empty
! 19: then Symbol_Table.Clear;
! 20: end if;
! 21: Symbol_Table.Init(n); -- initialization with #variables
! 22: sb := (sb'range => ' ');
! 23: sb(1) := 'x';
! 24: sb(4) := 's';
! 25: for j in 1..p loop -- adding the rest columnwise
! 26: row := 0; deg := 0;
! 27: for i in 1..rws loop
! 28: row := row + 1;
! 29: if i >= top(j) and i <= bottom(j)
! 30: then sb(2) := Convert_Hexadecimal(row);
! 31: sb(3) := Convert_Hexadecimal(j);
! 32: sb(5) := Convert_Hexadecimal(deg);
! 33: Symbol_Table.Add(sb);
! 34: end if;
! 35: if i mod (m+p) = 0
! 36: then row := 0; deg := deg+1;
! 37: end if;
! 38: end loop;
! 39: end loop;
! 40: sb := (sb'range => ' ');
! 41: sb(1) := 's';
! 42: if addmix = 0
! 43: then Symbol_Table.Add(sb); -- adding "s"
! 44: else sb(2) := '1';
! 45: Symbol_Table.Add(sb); -- adding "s1"
! 46: sb(2) := '2';
! 47: Symbol_Table.Add(sb); -- adding "s2"
! 48: sb(2) := ' ';
! 49: end if;
! 50: sb(1) := 't';
! 51: Symbol_Table.Add(sb); -- adding "t"
! 52: end Set_up_Symbol_Table;
! 53:
! 54: procedure One_Set_up_Symbol_Table
! 55: ( m,p,q : in natural; top,bottom : in Bracket ) is
! 56: begin
! 57: Set_up_Symbol_Table(m,p,q,top,bottom,0);
! 58: end One_Set_up_Symbol_Table;
! 59:
! 60: procedure Two_Set_up_Symbol_Table
! 61: ( m,p,q : in natural; top,bottom : in Bracket ) is
! 62: begin
! 63: Set_up_Symbol_Table(m,p,q,top,bottom,1);
! 64: end Two_Set_up_Symbol_Table;
! 65:
! 66: procedure Reduce_Symbols ( top,bottom : in Bracket; locmap : in Matrix ) is
! 67:
! 68: ind : natural := 0;
! 69:
! 70: begin
! 71: for j in locmap'range(2) loop
! 72: for i in top(j)..bottom(j) loop
! 73: ind := ind+1;
! 74: if locmap(i,j) = 1
! 75: then Symbol_Table.Remove(ind-j+1);
! 76: end if;
! 77: end loop;
! 78: end loop;
! 79: end Reduce_Symbols;
! 80:
! 81: end Curves_into_Grassmannian_io;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>