PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 131
hash: Chained hash tables

hash

hash - Chained hash tables

This module implements the hash table support used in various places in the library.

Author(s): Bjorn Reese <bjorn.reese@systematic.dk>

Synopsis

#define XML_CAST_FPTR(fptr);
typedef struct _xmlHashTable xmlHashTable;
typedef xmlHashTable * xmlHashTablePtr;
int	xmlHashAddEntry			(xmlHashTablePtr table, 
const xmlChar * name,
void * userdata); int xmlHashAddEntry2 (xmlHashTablePtr table,
const xmlChar * name,
const xmlChar * name2,
void * userdata); int xmlHashAddEntry3 (xmlHashTablePtr table,
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3,
void * userdata); typedef void * xmlHashCopier (void * payload,
const xmlChar * name); xmlHashTablePtr xmlHashCopy (xmlHashTablePtr table,
xmlHashCopier f); xmlHashTablePtr xmlHashCreate (int size); xmlHashTablePtr xmlHashCreateDict (int size,
xmlDictPtr dict); typedef void xmlHashDeallocator (void * payload,
const xmlChar * name); void xmlHashDefaultDeallocator (void * entry,
const xmlChar * name); void xmlHashFree (xmlHashTablePtr table,
xmlHashDeallocator f); void * xmlHashLookup (xmlHashTablePtr table,
const xmlChar * name); void * xmlHashLookup2 (xmlHashTablePtr table,
const xmlChar * name,
const xmlChar * name2); void * xmlHashLookup3 (xmlHashTablePtr table,
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3); void * xmlHashQLookup (xmlHashTablePtr table,
const xmlChar * prefix,
const xmlChar * name); void * xmlHashQLookup2 (xmlHashTablePtr table,
const xmlChar * prefix,
const xmlChar * name,
const xmlChar * prefix2,
const xmlChar * name2); void * xmlHashQLookup3 (xmlHashTablePtr table,
const xmlChar * prefix,
const xmlChar * name,
const xmlChar * prefix2,
const xmlChar * name2,
const xmlChar * prefix3,
const xmlChar * name3); int xmlHashRemoveEntry (xmlHashTablePtr table,
const xmlChar * name,
xmlHashDeallocator f); int xmlHashRemoveEntry2 (xmlHashTablePtr table,
const xmlChar * name,
const xmlChar * name2,
xmlHashDeallocator f); int xmlHashRemoveEntry3 (xmlHashTablePtr table,
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3,
xmlHashDeallocator f); void xmlHashScan (xmlHashTablePtr table,
xmlHashScanner f,
void * data); void xmlHashScan3 (xmlHashTablePtr table,
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3,
xmlHashScanner f,
void * data); void xmlHashScanFull (xmlHashTablePtr table,
xmlHashScannerFull f,
void * data); void xmlHashScanFull3 (xmlHashTablePtr table,
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3,
xmlHashScannerFull f,
void * data); typedef void xmlHashScanner (void * payload,
void * data,
const xmlChar * name); typedef void xmlHashScannerFull (void * payload,
void * data,
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3); int xmlHashSize (xmlHashTablePtr table); int xmlHashUpdateEntry (xmlHashTablePtr table,
const xmlChar * name,
void * userdata,
xmlHashDeallocator f); int xmlHashUpdateEntry2 (xmlHashTablePtr table,
const xmlChar * name,
const xmlChar * name2,
void * userdata,
xmlHashDeallocator f); int xmlHashUpdateEntry3 (xmlHashTablePtr table,
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3,
void * userdata,
xmlHashDeallocator f);

Description

Details

Macro XML_CAST_FPTR

#define XML_CAST_FPTR(fptr);

Macro to do a casting from an object pointer to a function pointer without encountering a warning from gcc #define XML_CAST_FPTR(fptr) (*(void **)(&fptr)) This macro violated ISO C aliasing rules (gcc4 on s390 broke) so it is disabled now

fptr: pointer to a function

Structure xmlHashTable

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


Typedef xmlHashTablePtr

xmlHashTable * xmlHashTablePtr;


Function type xmlHashCopier

void *	xmlHashCopier			(void * payload, 
const xmlChar * name)

Callback to copy data from a hash.

payload: the data in the hash
name: the name associated
Returns: a copy of the data or NULL in case of error.

Function type xmlHashDeallocator

void	xmlHashDeallocator		(void * payload, 
const xmlChar * name)

Callback to free data from a hash.

payload: the data in the hash
name: the name associated

Function type xmlHashScanner

void	xmlHashScanner			(void * payload, 
void * data,
const xmlChar * name)

Callback when scanning data in a hash with the simple scanner.

payload: the data in the hash
data: extra scanner data
name: the name associated

Function type xmlHashScannerFull

void	xmlHashScannerFull		(void * payload, 
void * data,
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3)

Callback when scanning data in a hash with the full scanner.

payload: the data in the hash
data: extra scanner data
name: the name associated
name2: the second name associated
name3: the third name associated

xmlHashAddEntry ()

int	xmlHashAddEntry			(xmlHashTablePtr table, 
const xmlChar * name,
void * userdata)

Add the @userdata to the hash @table. This can later be retrieved by using the @name. Duplicate names generate errors.

table: the hash table
name: the name of the userdata
userdata: a pointer to the userdata
Returns: 0 the addition succeeded and -1 in case of error.

xmlHashAddEntry2 ()

int	xmlHashAddEntry2		(xmlHashTablePtr table, 
const xmlChar * name,
const xmlChar * name2,
void * userdata)

Add the @userdata to the hash @table. This can later be retrieved by using the (@name, @name2) tuple. Duplicate tuples generate errors.

table: the hash table
name: the name of the userdata
name2: a second name of the userdata
userdata: a pointer to the userdata
Returns: 0 the addition succeeded and -1 in case of error.

xmlHashAddEntry3 ()

int	xmlHashAddEntry3		(xmlHashTablePtr table, 
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3,
void * userdata)

Add the @userdata to the hash @table. This can later be retrieved by using the tuple (@name, @name2, @name3). Duplicate entries generate errors.

table: the hash table
name: the name of the userdata
name2: a second name of the userdata
name3: a third name of the userdata
userdata: a pointer to the userdata
Returns: 0 the addition succeeded and -1 in case of error.

xmlHashCopy ()

xmlHashTablePtr	xmlHashCopy		(xmlHashTablePtr table, 
xmlHashCopier f)

Scan the hash @table and applied @f to each value.

table: the hash table
f: the copier function for items in the hash
Returns: the new table or NULL in case of error.

xmlHashCreate ()

xmlHashTablePtr	xmlHashCreate		(int size)

Create a new xmlHashTablePtr.

size: the size of the hash table
Returns: the newly created object, or NULL if an error occurred.

xmlHashCreateDict ()

xmlHashTablePtr	xmlHashCreateDict	(int size, 
xmlDictPtr dict)

Create a new xmlHashTablePtr which will use @dict as the internal dictionary

size: the size of the hash table
dict: a dictionary to use for the hash
Returns: the newly created object, or NULL if an error occurred.

xmlHashDefaultDeallocator ()

void	xmlHashDefaultDeallocator	(void * entry, 
const xmlChar * name)

Free a hash table entry with xmlFree.

entry: the hash table entry
name: the entry's name

xmlHashFree ()

void	xmlHashFree			(xmlHashTablePtr table, 
xmlHashDeallocator f)

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

table: the hash table
f: the deallocator function for items in the hash

xmlHashLookup ()

void *	xmlHashLookup			(xmlHashTablePtr table, 
const xmlChar * name)

Find the userdata specified by the @name.

table: the hash table
name: the name of the userdata
Returns: the pointer to the userdata

xmlHashLookup2 ()

void *	xmlHashLookup2			(xmlHashTablePtr table, 
const xmlChar * name,
const xmlChar * name2)

Find the userdata specified by the (@name, @name2) tuple.

table: the hash table
name: the name of the userdata
name2: a second name of the userdata
Returns: the pointer to the userdata

xmlHashLookup3 ()

void *	xmlHashLookup3			(xmlHashTablePtr table, 
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3)

Find the userdata specified by the (@name, @name2, @name3) tuple.

table: the hash table
name: the name of the userdata
name2: a second name of the userdata
name3: a third name of the userdata
Returns: the a pointer to the userdata

xmlHashQLookup ()

void *	xmlHashQLookup			(xmlHashTablePtr table, 
const xmlChar * prefix,
const xmlChar * name)

Find the userdata specified by the QName @prefix:@name/@name.

table: the hash table
prefix: the prefix of the userdata
name: the name of the userdata
Returns: the pointer to the userdata

xmlHashQLookup2 ()

void *	xmlHashQLookup2			(xmlHashTablePtr table, 
const xmlChar * prefix,
const xmlChar * name,
const xmlChar * prefix2,
const xmlChar * name2)

Find the userdata specified by the QNames tuple

table: the hash table
prefix: the prefix of the userdata
name: the name of the userdata
prefix2: the second prefix of the userdata
name2: a second name of the userdata
Returns: the pointer to the userdata

xmlHashQLookup3 ()

void *	xmlHashQLookup3			(xmlHashTablePtr table, 
const xmlChar * prefix,
const xmlChar * name,
const xmlChar * prefix2,
const xmlChar * name2,
const xmlChar * prefix3,
const xmlChar * name3)

Find the userdata specified by the (@name, @name2, @name3) tuple.

table: the hash table
prefix: the prefix of the userdata
name: the name of the userdata
prefix2: the second prefix of the userdata
name2: a second name of the userdata
prefix3: the third prefix of the userdata
name3: a third name of the userdata
Returns: the a pointer to the userdata

xmlHashRemoveEntry ()

int	xmlHashRemoveEntry		(xmlHashTablePtr table, 
const xmlChar * name,
xmlHashDeallocator f)

Find the userdata specified by the @name and remove it from the hash @table. Existing userdata for this tuple will be removed and freed with @f.

table: the hash table
name: the name of the userdata
f: the deallocator function for removed item (if any)
Returns: 0 if the removal succeeded and -1 in case of error or not found.

xmlHashRemoveEntry2 ()

int	xmlHashRemoveEntry2		(xmlHashTablePtr table, 
const xmlChar * name,
const xmlChar * name2,
xmlHashDeallocator f)

Find the userdata specified by the (@name, @name2) tuple and remove it from the hash @table. Existing userdata for this tuple will be removed and freed with @f.

table: the hash table
name: the name of the userdata
name2: a second name of the userdata
f: the deallocator function for removed item (if any)
Returns: 0 if the removal succeeded and -1 in case of error or not found.

xmlHashRemoveEntry3 ()

int	xmlHashRemoveEntry3		(xmlHashTablePtr table, 
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3,
xmlHashDeallocator f)

Find the userdata specified by the (@name, @name2, @name3) tuple and remove it from the hash @table. Existing userdata for this tuple will be removed and freed with @f.

table: the hash table
name: the name of the userdata
name2: a second name of the userdata
name3: a third name of the userdata
f: the deallocator function for removed item (if any)
Returns: 0 if the removal succeeded and -1 in case of error or not found.

xmlHashScan ()

void	xmlHashScan			(xmlHashTablePtr table, 
xmlHashScanner f,
void * data)

Scan the hash @table and applied @f to each value.

table: the hash table
f: the scanner function for items in the hash
data: extra data passed to f

xmlHashScan3 ()

void	xmlHashScan3			(xmlHashTablePtr table, 
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3,
xmlHashScanner f,
void * data)

Scan the hash @table and applied @f to each value matching (@name, @name2, @name3) tuple. If one of the names is null, the comparison is considered to match.

table: the hash table
name: the name of the userdata or NULL
name2: a second name of the userdata or NULL
name3: a third name of the userdata or NULL
f: the scanner function for items in the hash
data: extra data passed to f

xmlHashScanFull ()

void	xmlHashScanFull			(xmlHashTablePtr table, 
xmlHashScannerFull f,
void * data)

Scan the hash @table and applied @f to each value.

table: the hash table
f: the scanner function for items in the hash
data: extra data passed to f

xmlHashScanFull3 ()

void	xmlHashScanFull3		(xmlHashTablePtr table, 
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3,
xmlHashScannerFull f,
void * data)

Scan the hash @table and applied @f to each value matching (@name, @name2, @name3) tuple. If one of the names is null, the comparison is considered to match.

table: the hash table
name: the name of the userdata or NULL
name2: a second name of the userdata or NULL
name3: a third name of the userdata or NULL
f: the scanner function for items in the hash
data: extra data passed to f

xmlHashSize ()

int	xmlHashSize			(xmlHashTablePtr table)

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

table: the hash table
Returns: the number of elements in the hash table or -1 in case of error

xmlHashUpdateEntry ()

int	xmlHashUpdateEntry		(xmlHashTablePtr table, 
const xmlChar * name,
void * userdata,
xmlHashDeallocator f)

Add the @userdata to the hash @table. This can later be retrieved by using the @name. Existing entry for this @name will be removed and freed with @f if found.

table: the hash table
name: the name of the userdata
userdata: a pointer to the userdata
f: the deallocator function for replaced item (if any)
Returns: 0 the addition succeeded and -1 in case of error.

xmlHashUpdateEntry2 ()

int	xmlHashUpdateEntry2		(xmlHashTablePtr table, 
const xmlChar * name,
const xmlChar * name2,
void * userdata,
xmlHashDeallocator f)

Add the @userdata to the hash @table. This can later be retrieved by using the (@name, @name2) tuple. Existing entry for this tuple will be removed and freed with @f if found.

table: the hash table
name: the name of the userdata
name2: a second name of the userdata
userdata: a pointer to the userdata
f: the deallocator function for replaced item (if any)
Returns: 0 the addition succeeded and -1 in case of error.

xmlHashUpdateEntry3 ()

int	xmlHashUpdateEntry3		(xmlHashTablePtr table, 
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3,
void * userdata,
xmlHashDeallocator f)

Add the @userdata to the hash @table. This can later be retrieved by using the tuple (@name, @name2, @name3). Existing entry for this tuple will be removed and freed with @f if found.

table: the hash table
name: the name of the userdata
name2: a second name of the userdata
name3: a third name of the userdata
userdata: a pointer to the userdata
f: the deallocator function for replaced item (if any)
Returns: 0 the addition succeeded and -1 in case of error.