diff options
Diffstat (limited to 'src/vppinfra')
-rw-r--r-- | src/vppinfra/vec.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/vppinfra/vec.h b/src/vppinfra/vec.h index f233ae1c48f..1b0378fe063 100644 --- a/src/vppinfra/vec.h +++ b/src/vppinfra/vec.h @@ -953,6 +953,27 @@ do { \ _v(i); \ }) +/** \brief Search a vector for the index of the entry that matches. + + @param v1 Pointer to a vector + @param v2 Pointer to entry to match + @param fn Comparison function !0 => match + @return index of match or ~0 +*/ +#define vec_search_with_function(v,E,fn) \ +({ \ + word _v(i) = 0; \ + while (_v(i) < vec_len(v)) \ + { \ + if (0 != fn(&(v)[_v(i)], (E))) \ + break; \ + _v(i)++; \ + } \ + if (_v(i) == vec_len(v)) \ + _v(i) = ~0; \ + _v(i); \ +}) + /** \brief Sort a vector using the supplied element comparison function @param vec vector to sort |