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

FreeBSD Manual Pages


home | help
JudySL_funcs(3)		   Library Functions Manual	       JudySL_funcs(3)

       JudySL  functions  - C library for creating and accessing a dynamic ar-
       ray, using a null-terminated string as an index (associative array)

       PPvoid_t	JudySLIns(	PPvoid_t PPJSLArray, const uint8_t * Index, PJError_t PJError);
       int	JudySLDel(	PPvoid_t PPJSLArray, const uint8_t * Index, PJError_t PJError);
       PPvoid_t	JudySLGet(	Pcvoid_t  PJSLArray, const uint8_t * Index, PJError_t PJError);
       Word_t	JudySLFreeArray(PPvoid_t PPJSLArray, PJError_t PJError);
       PPvoid_t	JudySLFirst(	Pcvoid_t  PJSLArray,	   uint8_t * Index, PJError_t PJError);
       PPvoid_t	JudySLNext(	Pcvoid_t  PJSLArray,	   uint8_t * Index, PJError_t PJError);
       PPvoid_t	JudySLLast(	Pcvoid_t  PJSLArray,	   uint8_t * Index, PJError_t PJError);
       PPvoid_t	JudySLPrev(	Pcvoid_t  PJSLArray,	   uint8_t * Index, PJError_t PJError);

       A macro equivalent exists for each function call.   Because  the	 macro
       forms  are sometimes faster and have a simpler error handling interface
       than the	equivalent functions, they are the preferred  way  of  calling
       the  JudySL  functions.	See JudySL(3) for more information.  The func-
       tion call definitions are included here for completeness.

       One of the difficulties in using	the JudySL function calls lies in  de-
       termining whether to pass a pointer or the address of a pointer.	 Since
       the functions that modify the JudySL array must also modify the pointer
       to  the	JudySL	array, you must	pass the address of the	pointer	rather
       than the	pointer	itself.	 This often leads  to  hard-to-debug  program-
       matic errors.  In practice, the macros allow the	compiler to catch pro-
       gramming	errors when pointers instead  of  addresses  of	 pointers  are

       The  JudySL  function  calls  have an additional	parameter beyond those
       specified in the	macro calls.  This parameter is	either a pointer to an
       error  structure, or NULL (in which case	the detailed error information
       is not returned).

       In the following	descriptions, the functions are	described in terms  of
       how  the	 macros	use them (only in the case of #define JUDYERROR_NOTEST
       1).  This is the	suggested use of the macros  after  your  program  has
       been fully debugged.  When the JUDYERROR_NOTEST macro is	not specified,
       an error	structure is declared to store error information returned from
       the JudySL functions when an error occurs.

       Notice the placement of the & in	the different functions.

	JudySLIns(&PJSLArray, Index, &JError)

		      #define JSLI(PValue, PJSLArray, Index) \
			 PValue	= JudyLIns(&PJSLArray, Index, PJE0)

	JudySLDel(&PJSLArray, Index, &JError)

		      #define JSLD(Rc_int, PJSLArray, Index) \
			 Rc_int	= JudySLDel(&PJSLArray,	Index, PJE0)

	JudySLGet(PJSLArray, Index, &JError)

		      #define JSLG(PValue, PJSLArray, Index) \
			 PValue	= JudySLIns(PJSLArray, Index, PJE0)

	JudySLFreeArray(&PJSLArray, &JError)

		      #define JSLFA(Rc_word, PJSLArray)	\
			 Rc_word = JudySLFreeArray(&PJSLArray, PJE0)

	JudySLFirst(PJSLArray, Index, &JError)

		      #define JSLF(PValue, PJSLArray, Index) \
			 PValue	= JudySLFirst(PJSLArray, Index,	PJE0)

	JudySLNext(PJSLArray, Index, &JError)

		      #define JSLN(PValue, PJSLArray, Index) \
			 PValue	= JudySLNext(PJSLArray,	Index, PJE0)

	JudySLLast(PJSLArray, Index, &JError)

		      #define JSLL(PValue, PJSLArray, Index) \
			 PValue	= JudySLLast(PJSLArray,	Index, PJE0)

	JudySLPrev(PJSLArray, Index, &JError)

		      #define JSLP(PValue, PJSLArray, Index) \
			 PValue	= JudySLPrev(PJSLArray,	Index, PJE0)

       Definitions  for	 all  the Judy functions, the types Pvoid_t, Pcvoid_t,
       PPvoid_t, Word_t	, JError_t, and	PJError_t, the constants NULL,	JU_ER-
       RNO_*,  JERR,  PPJERR,  and PJE0	are provided in	the Judy.h header file
       (/usr/include/Judy.h).  Note:  Callers should define JudySL  arrays  as
       type  Pvoid_t,  which  can  be  passed  by value	to functions that take
       Pcvoid_t	(constant Pvoid_t), and	also by	address	to functions that take

       The return type from most JudySL	functions is PPvoid_t so that the val-
       ues stored in the array can be pointers to other	objects,  which	 is  a
       typical	usage, or cast to a Word_t  * when a pointer to	a value	is re-
       quired instead of a pointer to a	pointer.

       Judy was	invented by Doug Baskins and implemented by Hewlett-Packard.

       Judy(3),	Judy1(3), JudyL(3), JudySL(3), JudyHS(3),
       the Judy	website,, for more information and
       Application Notes.



Want to link to this manual page? Use this URL:

home | help