[BACK]Return to curves_into_grassmannian_io.adb CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Schubert

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>