## dict

dict - string dictionnary

dictionary of reusable strings, just used to avoid allocation and freeing operations.

Author(s): Daniel Veillard

## Synopsis

    typedef struct _xmlDict xmlDict;
    typedef xmlDict * xmlDictPtr;
    size_t	xmlDictGetUsage			(xmlDictPtr dict);
    int	xmlDictReference		(xmlDictPtr dict);
    void	xmlDictCleanup			(void);
    int	xmlDictSize			(xmlDictPtr dict);
    const xmlChar *	xmlDictExists		(xmlDictPtr dict,
    					 const xmlChar * name,
    					 int len);
    size_t	xmlDictSetLimit			(xmlDictPtr dict,
    					 size_t limit);
    int	xmlDictOwns			(xmlDictPtr dict,
    					 const xmlChar * str);
    const xmlChar *	xmlDictQLookup		(xmlDictPtr dict,
    					 const xmlChar * prefix,
    					 const xmlChar * name);
    int	xmlInitializeDict		(void);
    xmlDictPtr	xmlDictCreateSub	(xmlDictPtr sub);
    void	xmlDictFree			(xmlDictPtr dict);
    const xmlChar *	xmlDictLookup		(xmlDictPtr dict,
    					 const xmlChar * name,
    					 int len);
    xmlDictPtr	xmlDictCreate		(void);

## Description

## Details

### Structure xmlDict

    struct _xmlDict {
    The content of this structure is not made public by the API.
    } xmlDict;

### Typedef xmlDictPtr

    xmlDict * xmlDictPtr;

### xmlDictCleanup ()

    void	xmlDictCleanup			(void)

Free the dictionary mutex. Do not call unless sure the library is not in use anymore !

### xmlDictCreate ()

    xmlDictPtr	xmlDictCreate		(void)

Create a new dictionary

`Returns`: | the newly created dictionnary, or NULL if an error occured.

### xmlDictCreateSub ()

    xmlDictPtr	xmlDictCreateSub	(xmlDictPtr sub)

Create a new dictionary, inheriting strings from the read-only dictionnary @sub. On lookup, strings are first searched in the new dictionnary, then in @sub, and if not found are created in the new dictionnary.

`sub`: | an existing dictionnary
`Returns`: | the newly created dictionnary, or NULL if an error occured.

### xmlDictExists ()

    const xmlChar *	xmlDictExists		(xmlDictPtr dict,
    					 const xmlChar * name,
    					 int len)

Check if the @name exists in the dictionnary @dict.

`dict`: | the dictionnary
`name`: | the name of the userdata
`len`: | the length of the name, if -1 it is recomputed
`Returns`: | the internal copy of the name or NULL if not found.

### xmlDictFree ()

    void	xmlDictFree			(xmlDictPtr dict)

Free the hash @dict and its contents. The userdata is deallocated with @f if provided.

`dict`: | the dictionnary

### xmlDictGetUsage ()

    size_t	xmlDictGetUsage			(xmlDictPtr dict)

Get how much memory is used by a dictionary for strings Added in 2.9.0

`dict`: | the dictionnary
`Returns`: | the amount of strings allocated

### xmlDictLookup ()

    const xmlChar *	xmlDictLookup		(xmlDictPtr dict,
    					 const xmlChar * name,
    					 int len)

Add the @name to the dictionnary @dict if not present.

`dict`: | the dictionnary
`name`: | the name of the userdata
`len`: | the length of the name, if -1 it is recomputed
`Returns`: | the internal copy of the name or NULL in case of internal error

### xmlDictOwns ()

    int	xmlDictOwns			(xmlDictPtr dict,
    					 const xmlChar * str)

check if a string is owned by the disctionary

`dict`: | the dictionnary
`str`: | the string
`Returns`: | 1 if true, 0 if false and -1 in case of error -1 in case of error

### xmlDictQLookup ()

    const xmlChar *	xmlDictQLookup		(xmlDictPtr dict,
    					 const xmlChar * prefix,
    					 const xmlChar * name)

Add the QName @prefix:@name to the hash @dict if not present.

`dict`: | the dictionnary
`prefix`: | the prefix
`name`: | the name
`Returns`: | the internal copy of the QName or NULL in case of internal error

### xmlDictReference ()

    int	xmlDictReference		(xmlDictPtr dict)

Increment the reference counter of a dictionary

`dict`: | the dictionnary
`Returns`: | 0 in case of success and -1 in case of error

### xmlDictSetLimit ()

    size_t	xmlDictSetLimit			(xmlDictPtr dict,
    					 size_t limit)

Set a size limit for the dictionary Added in 2.9.0

`dict`: | the dictionnary
`limit`: | the limit in bytes
`Returns`: | the previous limit of the dictionary or 0

### xmlDictSize ()

    int	xmlDictSize			(xmlDictPtr dict)

Query the number of elements installed in the hash @dict.

`dict`: | the dictionnary
`Returns`: | the number of elements in the dictionnary or -1 in case of error

### xmlInitializeDict ()

    int	xmlInitializeDict		(void)

Do the dictionary mutex initialization. this function is not thread safe, initialization should preferably be done once at startup

`Returns`: | 0 if initialization was already done, and 1 if that call led to the initialization