do not run when IATTR feature is not supported
[util-vserver.git] / util-vserver / ensc_vector / vector.h
index 1521f86..bca1a6d 100644 (file)
@@ -30,9 +30,14 @@ struct Vector
     size_t     elem_size;
 };
 
+typedef enum { vecMOVE_FRONT, vecSHIFT_ONCE }           VectorSelfOrgMethod;
+
 void   Vector_init(struct Vector *, size_t elem_size);
 void   Vector_free(struct Vector *);
 void * Vector_search(struct Vector *, void const *key, int (*compar)(const void *, const void *));
+void * Vector_searchSelfOrg(struct Vector *, void const *key,
+                            int (*compar)(const void *, const void *),
+                            VectorSelfOrgMethod method);
 void   Vector_sort(struct Vector *, int (*compar)(const void *, const void *));
 void   Vector_unique(struct Vector *, int (*compar)(const void *, const void *));
 void * Vector_pushback(struct Vector *);
@@ -41,6 +46,14 @@ void Vector_popback(struct Vector *);
 void   Vector_resize(struct Vector *vec);
 void   Vector_clear(struct Vector *vec);
 void   Vector_zeroEnd(struct Vector *vec);
+void   Vector_foreach(struct Vector *vec, void (*func)(void *, void *), void *);
+
+static void            Vector_foreach_const(struct Vector const *vec,
+                                            void (*func)(void const *, void *),
+                                            void *);
+static void const *    Vector_searchSelfOrg_const(struct Vector const *, void const *key,
+                                                  int (*compar)(const void *, const void *),
+                                                  VectorSelfOrgMethod method);
 static void const *    Vector_search_const(struct Vector const *, void const *key, int (*compar)(const void *, const void *));
 static void *          Vector_begin(struct Vector *);
 static void *          Vector_end(struct Vector *);