/*****************************************************************************
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 <ib_vector_t*>(
allocator->mem_malloc(allocator, sizeof (*vec)));
vec->used = 0 ;
vec->total = size;
vec->allocator = allocator;
vec->sizeof_value = sizeof_value;
vec->data = static_cast <void *>(
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 <void *>(vec->allocator->mem_resize(
vec->allocator, vec->data, old_size, new_size));
vec->total = new_total;
}
Messung V0.5 in Prozent C=86 H=100 G=93
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-10-08)
¤
*© Formatika GbR, Deutschland