typedef struct
{
-#if CLIB_VEC64 > 0
- u64 len;
-#else
u32 len; /**< Number of elements in vector (NOT its allocated length). */
u8 numa_id; /**< NUMA id */
u8 vpad[3]; /**< pad to 8 bytes */
-#endif
u8 vector_data[0]; /**< Vector data . */
} vec_header_t;
*/
#define vec_len(v) ((v) ? _vec_len(v) : 0)
+u32 vec_len_not_inline (void *v);
/** \brief Vector's NUMA id (lvalue-capable)
})
/** \brief Total number of elements that can fit into vector. */
-#define vec_max_len(v) (vec_capacity(v,0) / sizeof (v[0]))
+#define vec_max_len(v) \
+ ((v) ? (vec_capacity (v,0) - vec_header_bytes (0)) / sizeof (v[0]) : 0)
/** \brief Set vector length to a user-defined value */
#ifndef __COVERITY__ /* Coverity gets confused by ASSERT() */