Blame src/libnm-std-aux/nm-std-utils.h

Packit Service dff8e4
/* SPDX-License-Identifier: LGPL-2.1-or-later */
Packit Service dff8e4
Packit Service dff8e4
#ifndef __NM_STD_UTILS_H__
Packit Service dff8e4
#define __NM_STD_UTILS_H__
Packit Service dff8e4
Packit Service dff8e4
#include <stdbool.h>
Packit Service dff8e4
Packit Service dff8e4
#include "nm-std-aux.h"
Packit Service dff8e4
Packit Service dff8e4
/*****************************************************************************/
Packit Service dff8e4
Packit Service dff8e4
/* nm_utils_get_next_realloc_size() is used to grow buffers exponentially, when
Packit Service dff8e4
 * the final size is unknown. As such, it has borders for which it allocates
Packit Service dff8e4
 * certain buffer sizes.
Packit Service dff8e4
 *
Packit Service dff8e4
 * The use of these defines is to get favorable allocation sequences.
Packit Service dff8e4
 * For example, nm_str_buf_init() asks for an initial allocation size. Note that
Packit Service dff8e4
 * it reserves the exactly requested amount, under the assumption that the
Packit Service dff8e4
 * user may know how many bytes will be required. However, often the caller
Packit Service dff8e4
 * doesn't know in advance, and NMStrBuf grows exponentially by calling
Packit Service dff8e4
 * nm_utils_get_next_realloc_size().
Packit Service dff8e4
 * Imagine you call nm_str_buf_init() with an initial buffer size 100, and you
Packit Service dff8e4
 * add one character at a time. Then the first reallocation will increase the
Packit Service dff8e4
 * buffer size only from 100 to 104.
Packit Service dff8e4
 * If you however start with an initial buffer size of 104, then the next reallocation
Packit Service dff8e4
 * via nm_utils_get_next_realloc_size() gives you 232, and so on. By using
Packit Service dff8e4
 * these sizes, it results in one less allocation, if you anyway don't know the
Packit Service dff8e4
 * exact size in advance. */
Packit Service dff8e4
#define NM_UTILS_GET_NEXT_REALLOC_SIZE_32   ((size_t) 32)
Packit Service dff8e4
#define NM_UTILS_GET_NEXT_REALLOC_SIZE_40   ((size_t) 40)
Packit Service dff8e4
#define NM_UTILS_GET_NEXT_REALLOC_SIZE_104  ((size_t) 104)
Packit Bot c44df3
#define NM_UTILS_GET_NEXT_REALLOC_SIZE_232  ((size_t) 232)
Packit Service dff8e4
#define NM_UTILS_GET_NEXT_REALLOC_SIZE_1000 ((size_t) 1000)
Packit Service dff8e4
Packit Service dff8e4
size_t nm_utils_get_next_realloc_size(bool true_realloc, size_t requested);
Packit Service dff8e4
Packit Service dff8e4
#endif /* __NM_STD_UTILS_H__ */