HashP.h 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. /*
  2. * CDE - Common Desktop Environment
  3. *
  4. * Copyright (c) 1993-2012, The Open Group. All rights reserved.
  5. *
  6. * These libraries and programs are free software; you can
  7. * redistribute them and/or modify them under the terms of the GNU
  8. * Lesser General Public License as published by the Free Software
  9. * Foundation; either version 2 of the License, or (at your option)
  10. * any later version.
  11. *
  12. * These libraries and programs are distributed in the hope that
  13. * they will be useful, but WITHOUT ANY WARRANTY; without even the
  14. * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  15. * PURPOSE. See the GNU Lesser General Public License for more
  16. * details.
  17. *
  18. * You should have received a copy of the GNU Lesser General Public
  19. * License along with these libraries and programs; if not, write
  20. * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
  21. * Floor, Boston, MA 02110-1301 USA
  22. */
  23. /* $XConsortium: HashP.h /main/4 1995/10/26 15:22:50 rswiston $ */
  24. /*
  25. * (c) Copyright 1993, 1994 Hewlett-Packard Company *
  26. * (c) Copyright 1993, 1994 International Business Machines Corp. *
  27. * (c) Copyright 1993, 1994 Sun Microsystems, Inc. *
  28. * (c) Copyright 1993, 1994 Novell, Inc. *
  29. */
  30. #ifdef REV_INFO
  31. #ifndef lint
  32. static char SCCSID[] = "OSF/Motif: @(#)_HashP.h 4.16 91/09/12";
  33. #endif /* lint */
  34. #endif /* REV_INFO */
  35. /******************************************************************************
  36. *******************************************************************************
  37. *
  38. * (c) Copyright 1989, 1990, 1991 OPEN SOFTWARE FOUNDATION, INC.
  39. * (c) Copyright 1989, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
  40. * (c) Copyright 1987, 1988, 1989, 1990, 1991 HEWLETT-PACKARD COMPANY
  41. * ALL RIGHTS RESERVED
  42. *
  43. * THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED
  44. * AND COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND
  45. * WITH THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR
  46. * ANY OTHER COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE
  47. * AVAILABLE TO ANY OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE
  48. * SOFTWARE IS HEREBY TRANSFERRED.
  49. *
  50. * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
  51. * NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY OPEN SOFTWARE
  52. * FOUNDATION, INC. OR ITS THIRD PARTY SUPPLIERS
  53. *
  54. * OPEN SOFTWARE FOUNDATION, INC. AND ITS THIRD PARTY SUPPLIERS,
  55. * ASSUME NO RESPONSIBILITY FOR THE USE OR INABILITY TO USE ANY OF ITS
  56. * SOFTWARE . OSF SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  57. * KIND, AND OSF EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES, INCLUDING
  58. * BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  59. * FITNESS FOR A PARTICULAR PURPOSE.
  60. *
  61. * Notice: Notwithstanding any other lease or license that may pertain to,
  62. * or accompany the delivery of, this computer software, the rights of the
  63. * Government regarding its use, reproduction and disclosure are as set
  64. * forth in Section 52.227-19 of the FARS Computer Software-Restricted
  65. * Rights clause.
  66. *
  67. * (c) Copyright 1989, 1990, 1991 Open Software Foundation, Inc. Unpublished - all
  68. * rights reserved under the Copyright laws of the United States.
  69. *
  70. * RESTRICTED RIGHTS NOTICE: Use, duplication, or disclosure by the
  71. * Government is subject to the restrictions as set forth in subparagraph
  72. * (c)(1)(ii) of the Rights in Technical Data and Computer Software clause
  73. * at DFARS 52.227-7013.
  74. *
  75. * Open Software Foundation, Inc.
  76. * 11 Cambridge Center
  77. * Cambridge, MA 02142
  78. * (617)621-8700
  79. *
  80. * RESTRICTED RIGHTS LEGEND: This computer software is submitted with
  81. * "restricted rights." Use, duplication or disclosure is subject to the
  82. * restrictions as set forth in NASA FAR SUP 18-52.227-79 (April 1985)
  83. * "Commercial Computer Software- Restricted Rights (April 1985)." Open
  84. * Software Foundation, Inc., 11 Cambridge Center, Cambridge, MA 02142. If
  85. * the contract contains the Clause at 18-52.227-74 "Rights in Data General"
  86. * then the "Alternate III" clause applies.
  87. *
  88. * (c) Copyright 1989, 1990, 1991 Open Software Foundation, Inc.
  89. * ALL RIGHTS RESERVED
  90. *
  91. *
  92. * Open Software Foundation is a trademark of The Open Software Foundation, Inc.
  93. * OSF is a trademark of Open Software Foundation, Inc.
  94. * OSF/Motif is a trademark of Open Software Foundation, Inc.
  95. * Motif is a trademark of Open Software Foundation, Inc.
  96. * DEC is a registered trademark of Digital Equipment Corporation
  97. * DIGITAL is a registered trademark of Digital Equipment Corporation
  98. * X Window System is a trademark of the Massachusetts Institute of Technology
  99. *
  100. *******************************************************************************
  101. ******************************************************************************/
  102. #ifndef __HashP_h
  103. #define __HashP_h
  104. #include <X11/Intrinsic.h>
  105. #ifdef __cplusplus
  106. extern "C" {
  107. #endif
  108. /*
  109. * the structure is used as a common header part for different
  110. * users of the hash functions in order to locate the key
  111. */
  112. typedef XtPointer DtHashKey;
  113. typedef DtHashKey (*DtGetHashKeyFunc)();
  114. typedef Boolean (*DtHashEnumerateFunc)();
  115. typedef void (*DtReleaseKeyProc)();
  116. typedef struct _DtHashEntryPartRec {
  117. unsigned int type:16;
  118. unsigned int flags:16;
  119. }DtHashEntryPartRec, *DtHashEntryPart;
  120. typedef struct _DtHashEntryRec {
  121. DtHashEntryPartRec hash;
  122. }DtHashEntryRec, *DtHashEntry;
  123. typedef struct _DtHashEntryTypePartRec {
  124. unsigned int entrySize;
  125. DtGetHashKeyFunc getKeyFunc;
  126. XtPointer getKeyClientData;
  127. DtReleaseKeyProc releaseKeyProc;
  128. }DtHashEntryTypePartRec, *DtHashEntryTypePart;
  129. typedef struct _DtHashEntryTypeRec {
  130. DtHashEntryTypePartRec hash;
  131. }DtHashEntryTypeRec, *DtHashEntryType;
  132. typedef struct _DtHashTableRec *DtHashTable;
  133. /******** Private Function Declarations for Hash.c ********/
  134. extern void _DtRegisterHashEntry(
  135. DtHashTable tab,
  136. DtHashKey key,
  137. DtHashEntry entry) ;
  138. extern void _DtUnregisterHashEntry(
  139. DtHashTable tab,
  140. DtHashEntry entry) ;
  141. extern DtHashEntry _DtEnumerateHashTable(
  142. DtHashTable tab,
  143. DtHashEnumerateFunc enumFunc,
  144. XtPointer clientData) ;
  145. extern DtHashEntry _DtKeyToHashEntry(
  146. DtHashTable tab,
  147. DtHashKey key) ;
  148. extern DtHashTable _DtAllocHashTable(
  149. DtHashEntryType *hashEntryTypes,
  150. Cardinal numHashEntryTypes,
  151. #if NeedWidePrototypes
  152. int keyIsString) ;
  153. #else
  154. Boolean keyIsString) ;
  155. #endif /* NeedWidePrototypes */
  156. extern void _DtFreeHashTable(
  157. DtHashTable hashTable) ;
  158. /******** End Private Function Declarations ********/
  159. #ifdef __cplusplus
  160. } /* Close scope of 'extern "C"' declaration which encloses file. */
  161. #endif
  162. #endif /* HashP_h */
  163. /* DON'T ADD ANYTHING AFTER THIS #endif */