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

Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Implift/transforming_solutions.adb, Revision 1.1

1.1     ! maekawa     1: package body Transforming_Solutions is
        !             2:
        !             3:   procedure Transform ( t : in Transfo; s : in out Solution ) is
        !             4:   begin
        !             5:     Apply(t,s.v);
        !             6:   end Transform;
        !             7:
        !             8:   function  Transform ( t : Transfo; s : Solution ) return Solution is
        !             9:
        !            10:     res : Solution(s.n);
        !            11:
        !            12:   begin
        !            13:     res.m := s.m;
        !            14:     res.t := s.t;
        !            15:     res.v := t*s.v;
        !            16:     return res;
        !            17:   end Transform;
        !            18:
        !            19:   procedure Transform ( t : in Transfo; l : in out Solution_List ) is
        !            20:
        !            21:     tmp : Solution_List;
        !            22:
        !            23:   begin
        !            24:     if not Is_Null(l)
        !            25:      then declare
        !            26:            n : natural := Head_Of(l).n;
        !            27:            s : Solution(n);
        !            28:           begin
        !            29:            tmp := l;
        !            30:             while not Is_Null(tmp) loop
        !            31:               Apply(t,Head_Of(tmp).v);
        !            32:              tmp := Tail_Of(tmp);
        !            33:             end loop;
        !            34:           end;
        !            35:     end if;
        !            36:   end Transform;
        !            37:
        !            38:   function Transform ( t : Transfo; l : Solution_List ) return Solution_List is
        !            39:
        !            40:     res,res_last,tmp : Solution_List;
        !            41:
        !            42:   begin
        !            43:     tmp := l;
        !            44:     while not Is_Null(tmp) loop
        !            45:       Append(res,res_last,Transform(t,Head_Of(tmp).all));
        !            46:       tmp := Tail_Of(tmp);
        !            47:     end loop;
        !            48:     return res;
        !            49:   end Transform;
        !            50:
        !            51:   function Insert ( c : Complex_Number; i : integer; s : Solution )
        !            52:                   return Solution is
        !            53:
        !            54:     res : Solution(s.n+1);
        !            55:
        !            56:   begin
        !            57:     res.m := s.m;
        !            58:     res.t := s.t;
        !            59:     for j in res.v'first..(i-1) loop
        !            60:       res.v(j) := s.v(j);
        !            61:     end loop;
        !            62:     res.v(i) := c;
        !            63:     for j in (i+1)..res.v'last loop
        !            64:       res.v(j) := s.v(j-1);
        !            65:     end loop;
        !            66:     return res;
        !            67:   end Insert;
        !            68:
        !            69:   procedure Insert ( c : in Complex_Number; i : in integer;
        !            70:                     l : in out Solution_List ) is
        !            71:   begin
        !            72:     if not Is_Null(l)
        !            73:      then declare
        !            74:            tmp : Solution_List;
        !            75:            res,res_last : Solution_List;
        !            76:            sol : Solution(Head_Of(l).n+1);
        !            77:           begin
        !            78:            tmp := l;
        !            79:            while not Is_Null(tmp) loop
        !            80:              declare
        !            81:                ls : Link_to_Solution := Head_Of(tmp);
        !            82:               begin
        !            83:                sol.m := ls.m;
        !            84:                sol.t := ls.t;
        !            85:                for j in sol.v'first..(i-1) loop
        !            86:                  sol.v(j) := ls.v(j);
        !            87:                 end loop;
        !            88:                sol.v(i) := c;
        !            89:                for j in (i+1)..sol.v'last loop
        !            90:                  sol.v(j) := ls.v(j-1);
        !            91:                 end loop;
        !            92:                Append(res,res_last,sol);
        !            93:               end;
        !            94:              tmp := Tail_Of(tmp);
        !            95:             end loop;
        !            96:            Clear(l); l := res;
        !            97:           end;
        !            98:     end if;
        !            99:   end Insert;
        !           100:
        !           101:   function Insert ( c : Complex_Number; i : integer; l : Solution_List )
        !           102:                  return Solution_List is
        !           103:
        !           104:     res : Solution_List;
        !           105:
        !           106:   begin
        !           107:     if not Is_Null(l)
        !           108:      then declare
        !           109:            tmp,res_last : Solution_List;
        !           110:           begin
        !           111:            tmp := l;
        !           112:            while not Is_Null(tmp) loop
        !           113:              Append(res,res_last,Insert(c,i,Head_Of(tmp).all));
        !           114:               tmp := Tail_Of(tmp);
        !           115:             end loop;
        !           116:          end;
        !           117:     end if;
        !           118:     return res;
        !           119:   end Insert;
        !           120:
        !           121:   function Insert ( cv : Vector; i : integer; s : Solution )
        !           122:                  return Solution_List is
        !           123:
        !           124:     res,res_last : Solution_List;
        !           125:
        !           126:   begin
        !           127:     for j in cv'range loop
        !           128:       Append(res,res_last,Insert(cv(j),i,s));
        !           129:     end loop;
        !           130:     return res;
        !           131:   end Insert;
        !           132:
        !           133: end Transforming_Solutions;

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