/*
* This file is part of DisOrder.
- * Copyright (C) 2004, 2005 Richard Kettlewell
+ * Copyright (C) 2004, 2005, 2007, 2008 Richard Kettlewell
*
* 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
#ifndef VECTOR_H
#define VECTOR_H
+#include "mem.h"
+
/** @brief Dynamic array template
* @param NAME type name
* @param ETYPE element type
#define VECTOR_TYPE(NAME,ETYPE,REALLOC) \
\
struct NAME { \
+ /** @brief Pointer to elements */ \
ETYPE *vec; \
- int nvec, nslots; \
+ /** @brief Number of elements */ \
+ int nvec; \
+ /** @brief Number of slots */ \
+ int nslots; \
}; \
\
static inline void NAME##_init(struct NAME *v) { \
VECTOR_TYPE(dynstr, char, xrealloc_noptr);
/** @brief A dynamic unicode string */
VECTOR_TYPE(dynstr_ucs4, uint32_t, xrealloc_noptr);
+/** @brief A dynamic array of pointers to unicode string */
+VECTOR_TYPE(vector32, uint32_t *, xrealloc);
/** @brief Append many strings to a @ref vector */
void vector_append_many(struct vector *v, char **vec, int nvec);