Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
AG_TBL(3)	       FreeBSD Library Functions Manual		     AG_TBL(3)

NAME
     AG_Tbl -- agar variable hash table	structure

SYNOPSIS
     #include <agar/core/tbl.h>

DESCRIPTION
     The AG_Tbl	structure describes a hash table consisting of AG_Variable(3)
     elements.	It is defined as follows:

     typedef struct ag_tbl_bucket {
	     AG_Variable  *ents;
	     Uint	  nEnts;
     } AG_TblBucket;

     typedef struct ag_tbl {
	     AG_TblBucket *buckets;
	     Uint	  nBuckets;
     } AG_Tbl;

GENERAL	INTERFACE
     AG_Tbl * AG_TblNew(Uint nBuckets, Uint flags)

     void AG_TblInit(AG_Tbl *tbl, Uint nBuckets, Uint flags)

     void AG_TblDestroy(AG_Tbl *tbl)

     AG_Variable * AG_TblLookup(AG_Tbl *tbl, const char	*key)

     int AG_TblLookupPointer(AG_Tbl *tbl, const	char *key, void	**p)

     int AG_TblExists(AG_Tbl *tbl, const char *key)

     int AG_TblInsert(AG_Tbl *tbl, const char *key, const AG_Variable *V)

     int AG_TblInsertPointer(AG_Tbl *tbl, const	char *key, void	*p)

     int AG_TblDelete(AG_Tbl *tbl, const char *key)

     AG_TBL_FOREACH(AG_Variable	*V, int	i, int j, AG_Tbl *tbl)

     The AG_TblNew() function allocates	and initializes	a new, empty AG_Tbl.
     AG_TblInit() initializes an existing table	structure.  The	following
     flags options are accepted:

     AG_TBL_DUPLICATES	 Allow duplicate keys in the database.	Insert calls
			 for duplicate keys will if this option	is not set.

     AG_TblDestroy() frees the resources allocated by a	table (the table
     structure itself is not freed).

     AG_TblLookup() searches the table for an entry of the given name and re-
     turns a pointer to	it.  On	failure, it returns NULL.

     AG_TblExists() returns 1 if there is a table entry	matching the giving
     key.

     AG_TblInsert() inserts an entry in	the table, using the specified key.
     The contents of the variable are duplicated.  On failure, the function
     returns -1	and sets an error message.

     AG_TblDelete() removes the	specified table	entry by name.	If there is no
     match, it returns -1 and sets an error message.

     The AG_TBL_FOREACH() macro	iterates V over	every entry of table tbl, us-
     ing variables i and j as iterators.  Example usage:

     AG_Tbl *tbl;
     AG_Variable *V;
     int i, j;
     AG_TBL_FOREACH(V, i,j, tbl) {
	     printf("Item: %s\n", V->name);
     }

PRECOMPUTED HASHES
     The following access functions accept a hash argument.  They are useful
     in	cases where it is inefficient to reevaluate the	hash function repeat-
     edly (e.g., a lookup followed by an insert).

     Uint AG_TblHash(AG_Tbl *tbl, const	char *key)

     AG_Variable * AG_TblLookupHash(AG_Tbl *tbl, Uint hash, const char *key)

     int AG_TblExistsHash(AG_Tbl *tbl, Uint hash, const	char *key)

     int AG_TblInsertHash(AG_Tbl *tbl, Uint hash, const	char *key, const
     AG_Variable *V)

     int AG_TblDeleteHash(AG_Tbl *tbl, Uint hash, const	char *key)

     AG_TblHash() computes and returns the hash	for the	specified key.

     AG_TblLookupHash(), AG_TblExistsHash(), AG_TblInsertHash()	and
     AG_TblDeleteHash()	are variants of	AG_TblLookup(),	AG_TblExists(),
     AG_TblInsert(), and AG_TblDelete()	with an	additional hash	argument.

SEE ALSO
     AG_Intro(3), AG_List(3), AG_Tree(3), AG_Variable(3)

HISTORY
     The AG_Tbl	interface first	appeared in Agar 1.4

FreeBSD	13.0		       September 9, 2009		  FreeBSD 13.0

NAME | SYNOPSIS | DESCRIPTION | GENERAL INTERFACE | PRECOMPUTED HASHES | SEE ALSO | HISTORY

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=AG_Tbl&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help