dynarr man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

DYNARR(3)		     C Programmer's Manual		     DYNARR(3)

NAME
       dynarr, dynarr_init, dynarr_resize, dynarr_free - simple dynamic arrays

SYNOPSIS
       #include <publib.h>

       void dynarr_init(struct dynarr *da, size_t elsize);
       int dynarr_resize(struct dynarr *da, size_t newsize);
       void dynarr_free(struct dynarr *da);

DESCRIPTION
       These functions make it easier to use dynamic arrays, i.e., arrays that
       are allocated with malloc(3) and resized with realloc(3).  Below	 is  a
       typical	code fragment for implementing a dynamic array that is resized
       as more input is read.

	    char *p, *line;
	    size_t alloc, len;

	    len = 0;
	    alloc = 1024;
	    if ((line = malloc(alloc)) == NULL) abort();

	    while (fgets(line + len, alloc-len, stdin) != NULL) {
		 len = strlen(line);
		 alloc += 1024;
		 if ((p = realloc(alloc)) == NULL) abort();
		 alloc = p;
	    }

       (The error handling is intentionally simplified.)  Below is  the	 above
       fragment with the dynarr(3).

	    struct dynarr da;

	    dynarr_init(&da);
	    while (fgets((char *)da.data + da.used, da.alloc-da.len, stdin) != NULL) {
		 da.used = strlen(da.data);
		 if (dynarr_resize(&da, da.alloc + 1024) == -1) abort();
	    }

       The  code  is  a bit simpler, and all the memory allocation details and
       most of the error checking code is hidden away.

       The dynamic array is represented by a struct dynarr:

	    struct dynarr {
		void *data;
		size_t alloc, used;
	    };

       The interface to the dynamic allocation	has  intentionally  been  made
       unopaque.

       dynarr_init   initializes  a  struct  dynarr  to	 be  an	 empty	array,
       dynarr_resize sets its size to be newsize, and  dynarr_free  frees  the
       array (it will become an empty array again).

RETURNS
       dynarr_resize  returns -1 if it failed, 0 if it succeeded.  It does not
       change the array in any way if it failed.

SEE ALSO
       publib(3), malloc(3), realloc(3), strdup(3)

AUTHOR
       Lars Wirzenius (lars.wirzenius@helsinki.fi)

Publib			     C Programmer's Manual		     DYNARR(3)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net