[BACK]Return to generic_lists_of_vectors.ads CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Math_Lib / Supports

Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Supports/generic_lists_of_vectors.ads, Revision 1.1

1.1     ! maekawa     1: with Abstract_Ring;
        !             2: with Generic_Vectors;
        !             3: with Generic_VecVecs;
        !             4: with Generic_Lists;
        !             5:
        !             6: generic
        !             7:
        !             8:   with package Ring is new Abstract_Ring(<>);
        !             9:   with package Vectors is new Generic_Vectors(Ring);
        !            10:   with package VecVecs is new Generic_VecVecs(Ring,Vectors);
        !            11:
        !            12: package Generic_Lists_of_Vectors is
        !            13:
        !            14: -- DESCRIPTION :
        !            15: --   An implementation of lists of links to vectors.
        !            16:
        !            17:   use Vectors,VecVecs;
        !            18:
        !            19: -- DATA STRUCTURE : a list of pointers to vectors
        !            20:
        !            21:   package Vector_Lists is new Generic_Lists(Link_to_Vector);
        !            22:   type List is new Vector_Lists.List;
        !            23:
        !            24: -- CREATORS :
        !            25:
        !            26:   function Deep_Create    ( v : VecVec ) return List;
        !            27:   function Shallow_Create ( v : VecVec ) return List;
        !            28:
        !            29:   function Deep_Create    ( l : List ) return VecVec;
        !            30:   function Shallow_Create ( l : List ) return VecVec;
        !            31:
        !            32:   -- DESCRIPTION :
        !            33:   --   l := Create(v) equals v := Create(l).
        !            34:   --   There is no sharing of pointers with a deep Create.
        !            35:   --   With a shallow Create, both structure share the pointers.
        !            36:
        !            37: -- COMPARISON and COPYING :
        !            38:
        !            39:   procedure Copy ( l1 : in List; l2 : in out List );
        !            40:
        !            41:   -- DESCRIPTION :
        !            42:   --   After Copy(l1,l2), Equal(l1,l2) holds.
        !            43:   --   Of course, this is a deep copy, a shallow copy is given by l2 := l1.
        !            44:
        !            45:   function Equal ( l1,l2 : List ) return boolean;
        !            46:
        !            47:   -- DESCRIPTION :
        !            48:   --   Returns true if both lists have the same vectors, false otherwise.
        !            49:
        !            50: -- SELECTORS :
        !            51:
        !            52:   function Is_In ( l : List; v : Vector ) return boolean;
        !            53:   function Is_In ( l : List; v : Link_to_Vector ) return boolean;
        !            54:
        !            55:   -- DESCRIPTION :
        !            56:   --   Returns true if the vector belongs to l, false otherwise.
        !            57:
        !            58:   function Sub_List ( l1,l2 : List ) return boolean;
        !            59:
        !            60:   -- DESCRIPTION :
        !            61:   --   Returns true if all elements in l1 occur in l2, false otherwise.
        !            62:
        !            63: -- CONSTRUCTORS :
        !            64:
        !            65:   procedure Append ( first,last : in out List; v : in Vector );
        !            66:
        !            67:   -- DESCRIPTION :
        !            68:   --   The vector will be appended to the list first,
        !            69:   --   last is a pointer to the last element of the list first.
        !            70:
        !            71:   procedure Append_Diff ( first,last : in out List; v : in Vector );
        !            72:   procedure Append_Diff ( first,last : in out List; v : in Link_to_Vector );
        !            73:
        !            74:   -- DESCRIPTION :
        !            75:   --   Only when v does not already belong to first, v will be added.
        !            76:
        !            77:   procedure Deep_Concat    ( first,last : in out List; l : in List );
        !            78:   procedure Shallow_Concat ( first,last : in out List; l : in List );
        !            79:
        !            80:   -- DESCRIPTION :
        !            81:   --   The list l will be concatenated to the list first,
        !            82:   --   last is a pointer to the last element of the list first.
        !            83:   --   With a deep concatenation, no pointers are shared.
        !            84:
        !            85:   procedure Deep_Concat_Diff    ( first,last : in out List; l : in List );
        !            86:   procedure Shallow_Concat_Diff ( first,last : in out List; l : in List );
        !            87:
        !            88:   -- DESCRIPTION :
        !            89:   --   Only those vectors of l will be concatenated that are not already
        !            90:   --   in the list first.
        !            91:   --   With a deep concatenation, no pointers are shared.
        !            92:
        !            93:   procedure Remove ( l : in out List; x : in Vector );
        !            94:   procedure Remove ( l : in out List; x : in Link_to_Vector );
        !            95:
        !            96:   -- DESCRIPTION :
        !            97:   --   Removes the point x from the list l.
        !            98:
        !            99:   procedure Swap_to_Front ( l : in out List; x : in Vector );
        !           100:   procedure Swap_to_Front ( l : in out List; x : in Link_to_Vector );
        !           101:
        !           102:   -- DESCRIPTION :
        !           103:   --   The point x belongs to the list l,
        !           104:   --   Its content will be place in front of l and the first element
        !           105:   --   of l will be swapped to the place of x.
        !           106:
        !           107: -- DESTRUCTORS :
        !           108:
        !           109:   procedure Deep_Clear    ( l : in out List );
        !           110:   procedure Shallow_Clear ( l : in out List );
        !           111:
        !           112:   -- DESCRIPTION :
        !           113:   --   Frees all allocated memory space.
        !           114:   --   A deep clear deallocates also the points to the integer vectors,
        !           115:   --   while a shallow clear only removes the list structure.
        !           116:
        !           117: end Generic_Lists_of_Vectors;

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