Home | History | Annotate | Download | only in libxmlrpg
      1       * Summary: Chained hash tables
      2       * Description: This module implements the hash table support used in
      3       *              various places in the library.
      4       *
      5       * Copy: See Copyright for the status of this software.
      6       *
      7       * Author: Patrick Monnerat <pm (a] datasphere.ch>, DATASPHERE S.A.
      8 
      9       /if not defined(XML_HASH_H__)
     10       /define XML_HASH_H__
     11 
     12       /include "libxmlrpg/xmlTypesC"
     13 
     14       * The hash table.
     15 
     16      d xmlHashTablePtr...
     17      d                 s               *   based(######typedef######)
     18 
     19       /include "libxmlrpg/xmlversion"
     20       /include "libxmlrpg/parser"
     21       /include "libxmlrpg/dict"
     22 
     23       * function types:
     24 
     25       * xmlHashDeallocator:
     26       * @payload:  the data in the hash
     27       * @name:  the name associated
     28       *
     29       * Callback to free data from a hash.
     30 
     31      d xmlHashDeallocator...
     32      d                 s               *   based(######typedef######)
     33      d                                     procptr
     34 
     35       * xmlHashCopier:
     36       * @payload:  the data in the hash
     37       * @name:  the name associated
     38       *
     39       * Callback to copy data from a hash.
     40       *
     41       * Returns a copy of the data or NULL in case of error.
     42 
     43      d xmlHashCopier   s               *   based(######typedef######)
     44      d                                     procptr
     45 
     46       * xmlHashScanner:
     47       * @payload:  the data in the hash
     48       * @data:  extra scannner data
     49       * @name:  the name associated
     50       *
     51       * Callback when scanning data in a hash with the simple scanner.
     52 
     53      d xmlHashScanner  s               *   based(######typedef######)
     54      d                                     procptr
     55 
     56       * xmlHashScannerFull:
     57       * @payload:  the data in the hash
     58       * @data:  extra scannner data
     59       * @name:  the name associated
     60       * @name2:  the second name associated
     61       * @name3:  the third name associated
     62       *
     63       * Callback when scanning data in a hash with the full scanner.
     64 
     65      d xmlHashScannerFull...
     66      d                 s               *   based(######typedef######)
     67      d                                     procptr
     68 
     69       * Constructor and destructor.
     70 
     71      d xmlHashCreate   pr                  extproc('xmlHashCreate')
     72      d                                     like(xmlHashTablePtr)
     73      d  size                               value like(xmlCint)
     74 
     75      d xmlHashCreateDict...
     76      d                 pr                  extproc('xmlHashCreateDict')
     77      d                                     like(xmlHashTablePtr)
     78      d  size                               value like(xmlCint)
     79      d  dict                               value like(xmlDictPtr)
     80 
     81      d xmlHashFree     pr                  extproc('xmlHashFree')
     82      d  table                              value like(xmlHashTablePtr)
     83      d  f                                  value like(xmlHashDeallocator)
     84 
     85       * Add a new entry to the hash table.
     86 
     87      d xmlHashAddEntry...
     88      d                 pr                  extproc('xmlHashAddEntry')
     89      d                                     like(xmlCint)
     90      d  table                              value like(xmlHashTablePtr)
     91      d  name                           *   value options(*string)               const xmlChar *
     92      d  userdata                       *   value options(*string)               void *
     93 
     94      d xmlHashUpdateEntry...
     95      d                 pr                  extproc('xmlHashUpdateEntry')
     96      d                                     like(xmlCint)
     97      d  table                              value like(xmlHashTablePtr)
     98      d  name                           *   value options(*string)               const xmlChar *
     99      d  userdata                       *   value options(*string)               void *
    100      d  f                                  value like(xmlHashDeallocator)
    101 
    102      d xmlHashAddEntry2...
    103      d                 pr                  extproc('xmlHashAddEntry2')
    104      d                                     like(xmlCint)
    105      d  table                              value like(xmlHashTablePtr)
    106      d  name                           *   value options(*string)               const xmlChar *
    107      d  name2                          *   value options(*string)               const xmlChar *
    108      d  userdata                       *   value options(*string)               void *
    109 
    110      d xmlHashUpdateEntry2...
    111      d                 pr                  extproc('xmlHashUpdateEntry2')
    112      d                                     like(xmlCint)
    113      d  table                              value like(xmlHashTablePtr)
    114      d  name                           *   value options(*string)               const xmlChar *
    115      d  name2                          *   value options(*string)               const xmlChar *
    116      d  userdata                       *   value options(*string)               void *
    117      d  f                                  value like(xmlHashDeallocator)
    118 
    119      d xmlHashAddEntry3...
    120      d                 pr                  extproc('xmlHashAddEntry3')
    121      d                                     like(xmlCint)
    122      d  table                              value like(xmlHashTablePtr)
    123      d  name                           *   value options(*string)               const xmlChar *
    124      d  name2                          *   value options(*string)               const xmlChar *
    125      d  name3                          *   value options(*string)               const xmlChar *
    126      d  userdata                       *   value options(*string)               void *
    127 
    128      d xmlHashUpdateEntry3...
    129      d                 pr                  extproc('xmlHashUpdateEntry3')
    130      d                                     like(xmlCint)
    131      d  table                              value like(xmlHashTablePtr)
    132      d  name                           *   value options(*string)               const xmlChar *
    133      d  name2                          *   value options(*string)               const xmlChar *
    134      d  name3                          *   value options(*string)               const xmlChar *
    135      d  userdata                       *   value options(*string)               void *
    136      d  f                                  value like(xmlHashDeallocator)
    137 
    138       * Remove an entry from the hash table.
    139 
    140      d xmlHashRemoveEntry...
    141      d                 pr                  extproc('xmlHashRemoveEntry')
    142      d                                     like(xmlCint)
    143      d  table                              value like(xmlHashTablePtr)
    144      d  name                           *   value options(*string)               const xmlChar *
    145      d  f                                  value like(xmlHashDeallocator)
    146 
    147      d xmlHashRemoveEntry2...
    148      d                 pr                  extproc('xmlHashRemoveEntry2')
    149      d                                     like(xmlCint)
    150      d  table                              value like(xmlHashTablePtr)
    151      d  name                           *   value options(*string)               const xmlChar *
    152      d  name2                          *   value options(*string)               const xmlChar *
    153      d  f                                  value like(xmlHashDeallocator)
    154 
    155      d xmlHashRemoveEntry3...
    156      d                 pr                  extproc('xmlHashRemoveEntry3')
    157      d                                     like(xmlCint)
    158      d  table                              value like(xmlHashTablePtr)
    159      d  name                           *   value options(*string)               const xmlChar *
    160      d  name2                          *   value options(*string)               const xmlChar *
    161      d  name3                          *   value options(*string)               const xmlChar *
    162      d  f                                  value like(xmlHashDeallocator)
    163 
    164       * Retrieve the userdata.
    165 
    166      d xmlHashLookup   pr              *   extproc('xmlHashLookup')             void *
    167      d  table                              value like(xmlHashTablePtr)
    168      d  name                           *   value options(*string)               const xmlChar *
    169 
    170      d xmlHashLookup2  pr              *   extproc('xmlHashLookup2')            void *
    171      d  table                              value like(xmlHashTablePtr)
    172      d  name                           *   value options(*string)               const xmlChar *
    173      d  name2                          *   value options(*string)               const xmlChar *
    174 
    175      d xmlHashLookup3  pr              *   extproc('xmlHashLookup3')            void *
    176      d  table                              value like(xmlHashTablePtr)
    177      d  name                           *   value options(*string)               const xmlChar *
    178      d  name2                          *   value options(*string)               const xmlChar *
    179      d  name3                          *   value options(*string)               const xmlChar *
    180 
    181      d xmlHashQLookup  pr              *   extproc('xmlHashQLookup')            void *
    182      d  table                              value like(xmlHashTablePtr)
    183      d  name                           *   value options(*string)               const xmlChar *
    184      d  prefix                         *   value options(*string)               const xmlChar *
    185 
    186      d xmlHashQLookup2...
    187      d                 pr              *   extproc('xmlHashQLookup2')           void *
    188      d  table                              value like(xmlHashTablePtr)
    189      d  name                           *   value options(*string)               const xmlChar *
    190      d  prefix                         *   value options(*string)               const xmlChar *
    191      d  name2                          *   value options(*string)               const xmlChar *
    192      d  prefix2                        *   value options(*string)               const xmlChar *
    193 
    194      d xmlHashQLookup3...
    195      d                 pr              *   extproc('xmlHashQLookup3')           void *
    196      d  table                              value like(xmlHashTablePtr)
    197      d  name                           *   value options(*string)               const xmlChar *
    198      d  prefix                         *   value options(*string)               const xmlChar *
    199      d  name2                          *   value options(*string)               const xmlChar *
    200      d  prefix2                        *   value options(*string)               const xmlChar *
    201      d  name3                          *   value options(*string)               const xmlChar *
    202      d  prefix3                        *   value options(*string)               const xmlChar *
    203 
    204       * Helpers.
    205 
    206      d xmlHashCopy     pr                  extproc('xmlHashCopy')
    207      d                                     like(xmlHashTablePtr)
    208      d  table                              value like(xmlHashTablePtr)
    209      d  f                                  value like(xmlHashCopier)
    210 
    211      d xmlHashSize     pr                  extproc('xmlHashSize')
    212      d                                     like(xmlCint)
    213      d  table                              value like(xmlHashTablePtr)
    214 
    215      d xmlHashScan     pr                  extproc('xmlHashScan')
    216      d  table                              value like(xmlHashTablePtr)
    217      d  f                                  value like(xmlHashScanner)
    218      d  data                           *   value options(*string)               void *
    219 
    220      d xmlHashScan3    pr                  extproc('xmlHashScan3')
    221      d  table                              value like(xmlHashTablePtr)
    222      d  name                           *   value options(*string)               const xmlChar *
    223      d  name2                          *   value options(*string)               const xmlChar *
    224      d  name3                          *   value options(*string)               const xmlChar *
    225      d  f                                  value like(xmlHashScanner)
    226      d  data                           *   value options(*string)               void *
    227 
    228      d xmlHashScanFull...
    229      d                 pr                  extproc('xmlHashScanFull')
    230      d  table                              value like(xmlHashTablePtr)
    231      d  f                                  value like(xmlHashScannerFull)
    232      d  data                           *   value options(*string)               void *
    233 
    234      d xmlHashScanFull3...
    235      d                 pr                  extproc('xmlHashScanFull3')
    236      d  table                              value like(xmlHashTablePtr)
    237      d  name                           *   value options(*string)               const xmlChar *
    238      d  name2                          *   value options(*string)               const xmlChar *
    239      d  name3                          *   value options(*string)               const xmlChar *
    240      d  f                                  value like(xmlHashScannerFull)
    241      d  data                           *   value options(*string)               void *
    242 
    243       /endif                                                                    XML_HASH_H__
    244