mirror of
https://git.proxmox.com/git/libgit2
synced 2025-08-03 08:57:10 +00:00
Add util.h - utility macros
ARRAY_SIZE() et al go in util.h, included from common.h Signed-off-by: Andreas Ericsson <ae@op5.se> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
76a8c44727
commit
3a2aabdce1
@ -2,6 +2,7 @@
|
||||
#define INCLUDE_common_h__
|
||||
|
||||
#include "cc-compat.h"
|
||||
#include "util.h"
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
25
src/util.h
Normal file
25
src/util.h
Normal file
@ -0,0 +1,25 @@
|
||||
#ifndef INCLUDE_util_h__
|
||||
#define INCLUDE_util_h__
|
||||
|
||||
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
|
||||
|
||||
/*
|
||||
* Realloc the buffer pointed at by variable 'x' so that it can hold
|
||||
* at least 'nr' entries; the number of entries currently allocated
|
||||
* is 'alloc', using the standard growing factor alloc_nr() macro.
|
||||
*
|
||||
* DO NOT USE any expression with side-effect for 'x' or 'alloc'.
|
||||
*/
|
||||
#define alloc_nr(x) (((x)+16)*3/2)
|
||||
#define ALLOC_GROW(x, nr, alloc) \
|
||||
do { \
|
||||
if ((nr) > alloc) { \
|
||||
if (alloc_nr(alloc) < (nr)) \
|
||||
alloc = (nr); \
|
||||
else \
|
||||
alloc = alloc_nr(alloc); \
|
||||
x = xrealloc((x), alloc * sizeof(*(x))); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#endif /* INCLUDE_util_h__ */
|
Loading…
Reference in New Issue
Block a user