From 06eaf7232e9a920468c0f8d74dcf2fe8b555501c Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 13 Apr 2024 14:24:36 +0200 Subject: Adding upstream version 1:10.11.6. Signed-off-by: Daniel Baumann --- storage/innobase/ut/ut0vec.cc | 73 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 storage/innobase/ut/ut0vec.cc (limited to 'storage/innobase/ut/ut0vec.cc') diff --git a/storage/innobase/ut/ut0vec.cc b/storage/innobase/ut/ut0vec.cc new file mode 100644 index 00000000..c9262bc9 --- /dev/null +++ b/storage/innobase/ut/ut0vec.cc @@ -0,0 +1,73 @@ +/***************************************************************************** + +Copyright (c) 2006, 2016, Oracle and/or its affiliates. All Rights Reserved. + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; version 2 of the License. + +This program is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA + +*****************************************************************************/ + +/*******************************************************************//** +@file ut/ut0vec.cc +A vector of pointers to data items + +Created 4/6/2006 Osku Salerma +************************************************************************/ + +#include "ut0vec.h" +#include "mem0mem.h" + +/******************************************************************** +Create a new vector with the given initial size. */ +ib_vector_t* +ib_vector_create( +/*=============*/ + /* out: vector */ + ib_alloc_t* allocator, /* in: vector allocator */ + ulint sizeof_value, /* in: size of data item */ + ulint size) /* in: initial size */ +{ + ib_vector_t* vec; + + ut_a(size > 0); + + vec = static_cast( + allocator->mem_malloc(allocator, sizeof(*vec))); + + vec->used = 0; + vec->total = size; + vec->allocator = allocator; + vec->sizeof_value = sizeof_value; + + vec->data = static_cast( + allocator->mem_malloc(allocator, vec->sizeof_value * size)); + + return(vec); +} + +/******************************************************************** +Resize the vector, currently the vector can only grow and we +expand the number of elements it can hold by 2 times. */ +void +ib_vector_resize( +/*=============*/ + ib_vector_t* vec) /* in: vector */ +{ + ulint new_total = vec->total * 2; + ulint old_size = vec->used * vec->sizeof_value; + ulint new_size = new_total * vec->sizeof_value; + + vec->data = static_cast(vec->allocator->mem_resize( + vec->allocator, vec->data, old_size, new_size)); + + vec->total = new_total; +} -- cgit v1.2.3