You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.6 KiB

  1. /********************************************************************
  2. Get number of elements in vector. */
  3. UNIV_INLINE
  4. ulint
  5. ib_vector_size(
  6. /*===========*/
  7. /* out: number of elements in vector */
  8. const ib_vector_t* vec) /* in: vector */
  9. {
  10. return(vec->used);
  11. }
  12. /********************************************************************
  13. Get n'th element. */
  14. UNIV_INLINE
  15. void*
  16. ib_vector_get(
  17. /*==========*/
  18. /* out: n'th element */
  19. ib_vector_t* vec, /* in: vector */
  20. ulint n) /* in: element index to get */
  21. {
  22. ut_a(n < vec->used);
  23. return(vec->data[n]);
  24. }
  25. /********************************************************************
  26. Remove the last element from the vector. */
  27. UNIV_INLINE
  28. void*
  29. ib_vector_pop(
  30. /*==========*/
  31. /* out: last vector element */
  32. ib_vector_t* vec) /* in/out: vector */
  33. {
  34. void* elem;
  35. ut_a(vec->used > 0);
  36. --vec->used;
  37. elem = vec->data[vec->used];
  38. ut_d(vec->data[vec->used] = NULL);
  39. UNIV_MEM_INVALID(&vec->data[vec->used], sizeof(*vec->data));
  40. return(elem);
  41. }
  42. /********************************************************************
  43. Free the underlying heap of the vector. Note that vec is invalid
  44. after this call. */
  45. UNIV_INLINE
  46. void
  47. ib_vector_free(
  48. /*===========*/
  49. ib_vector_t* vec) /* in, own: vector */
  50. {
  51. mem_heap_free(vec->heap);
  52. }
  53. /********************************************************************
  54. Test whether a vector is empty or not. */
  55. UNIV_INLINE
  56. ibool
  57. ib_vector_is_empty(
  58. /*===============*/ /* out: TRUE if empty else FALSE */
  59. const ib_vector_t* vec) /* in vector to test */
  60. {
  61. return(ib_vector_size(vec) == 0);
  62. }