summaryrefslogtreecommitdiffstats
path: root/tcl8.6/doc/Hash.3
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2017-10-17 19:50:58 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2017-10-17 19:50:58 (GMT)
commit9b7a6c3507ea3383c60aaecb29f873c9b590ccca (patch)
tree82ce31ebd8f46803d969034f5aa3db8d7974493c /tcl8.6/doc/Hash.3
parent87fca7325b97005eb44dcf3e198277640af66115 (diff)
downloadblt-9b7a6c3507ea3383c60aaecb29f873c9b590ccca.zip
blt-9b7a6c3507ea3383c60aaecb29f873c9b590ccca.tar.gz
blt-9b7a6c3507ea3383c60aaecb29f873c9b590ccca.tar.bz2
rm tcl/tk 8.6.7
Diffstat (limited to 'tcl8.6/doc/Hash.3')
-rw-r--r--tcl8.6/doc/Hash.3334
1 files changed, 0 insertions, 334 deletions
diff --git a/tcl8.6/doc/Hash.3 b/tcl8.6/doc/Hash.3
deleted file mode 100644
index 4dc3623..0000000
--- a/tcl8.6/doc/Hash.3
+++ /dev/null
@@ -1,334 +0,0 @@
-'\"
-'\" Copyright (c) 1989-1993 The Regents of the University of California.
-'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
-'\"
-'\" See the file "license.terms" for information on usage and redistribution
-'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-'\"
-.TH Tcl_Hash 3 "" Tcl "Tcl Library Procedures"
-.so man.macros
-.BS
-.SH NAME
-Tcl_InitHashTable, Tcl_InitCustomHashTable, Tcl_InitObjHashTable, Tcl_DeleteHashTable, Tcl_CreateHashEntry, Tcl_DeleteHashEntry, Tcl_FindHashEntry, Tcl_GetHashValue, Tcl_SetHashValue, Tcl_GetHashKey, Tcl_FirstHashEntry, Tcl_NextHashEntry, Tcl_HashStats \- procedures to manage hash tables
-.SH SYNOPSIS
-.nf
-\fB#include <tcl.h>\fR
-.sp
-\fBTcl_InitHashTable\fR(\fItablePtr, keyType\fR)
-.sp
-\fBTcl_InitCustomHashTable\fR(\fItablePtr, keyType, typePtr\fR)
-.sp
-\fBTcl_InitObjHashTable\fR(\fItablePtr\fR)
-.sp
-\fBTcl_DeleteHashTable\fR(\fItablePtr\fR)
-.sp
-Tcl_HashEntry *
-\fBTcl_CreateHashEntry\fR(\fItablePtr, key, newPtr\fR)
-.sp
-\fBTcl_DeleteHashEntry\fR(\fIentryPtr\fR)
-.sp
-Tcl_HashEntry *
-\fBTcl_FindHashEntry\fR(\fItablePtr, key\fR)
-.sp
-ClientData
-\fBTcl_GetHashValue\fR(\fIentryPtr\fR)
-.sp
-\fBTcl_SetHashValue\fR(\fIentryPtr, value\fR)
-.sp
-void *
-\fBTcl_GetHashKey\fR(\fItablePtr, entryPtr\fR)
-.sp
-Tcl_HashEntry *
-\fBTcl_FirstHashEntry\fR(\fItablePtr, searchPtr\fR)
-.sp
-Tcl_HashEntry *
-\fBTcl_NextHashEntry\fR(\fIsearchPtr\fR)
-.sp
-char *
-\fBTcl_HashStats\fR(\fItablePtr\fR)
-.SH ARGUMENTS
-.AS "const Tcl_HashKeyType" *searchPtr out
-.AP Tcl_HashTable *tablePtr in
-Address of hash table structure (for all procedures but
-\fBTcl_InitHashTable\fR, this must have been initialized by
-previous call to \fBTcl_InitHashTable\fR).
-.AP int keyType in
-Kind of keys to use for new hash table. Must be either
-\fBTCL_STRING_KEYS\fR, \fBTCL_ONE_WORD_KEYS\fR, \fBTCL_CUSTOM_TYPE_KEYS\fR,
-\fBTCL_CUSTOM_PTR_KEYS\fR, or an integer value greater than 1.
-.AP Tcl_HashKeyType *typePtr in
-Address of structure which defines the behavior of the hash table.
-.AP "const void" *key in
-Key to use for probe into table. Exact form depends on
-\fIkeyType\fR used to create table.
-.AP int *newPtr out
-The word at \fI*newPtr\fR is set to 1 if a new entry was created
-and 0 if there was already an entry for \fIkey\fR.
-.AP Tcl_HashEntry *entryPtr in
-Pointer to hash table entry.
-.AP ClientData value in
-New value to assign to hash table entry. Need not have type
-ClientData, but must fit in same space as ClientData.
-.AP Tcl_HashSearch *searchPtr in
-Pointer to record to use to keep track of progress in enumerating
-all the entries in a hash table.
-.BE
-.SH DESCRIPTION
-.PP
-A hash table consists of zero or more entries, each consisting of a
-key and a value. Given the key for an entry, the hashing routines can
-very quickly locate the entry, and hence its value. There may be at
-most one entry in a hash table with a particular key, but many entries
-may have the same value. Keys can take one of four forms: strings,
-one-word values, integer arrays, or custom keys defined by a
-Tcl_HashKeyType structure (See section \fBTHE TCL_HASHKEYTYPE STRUCTURE\fR
-below). All of the keys in a given table have the same
-form, which is specified when the table is initialized.
-.PP
-The value of a hash table entry can be anything that fits in the same
-space as a
-.QW "char *"
-pointer. Values for hash table entries are
-managed entirely by clients, not by the hash module itself. Typically
-each entry's value is a pointer to a data structure managed by client
-code.
-.PP
-Hash tables grow gracefully as the number of entries increases, so
-that there are always less than three entries per hash bucket, on
-average. This allows for fast lookups regardless of the number of
-entries in a table.
-.PP
-The core provides three functions for the initialization of hash
-tables, Tcl_InitHashTable, Tcl_InitObjHashTable and
-Tcl_InitCustomHashTable.
-.PP
-\fBTcl_InitHashTable\fR initializes a structure that describes a new
-hash table. The space for the structure is provided by the caller,
-not by the hash module. The value of \fIkeyType\fR indicates what
-kinds of keys will be used for all entries in the table. All of the
-key types described later are allowed, with the exception of
-\fBTCL_CUSTOM_TYPE_KEYS\fR and \fBTCL_CUSTOM_PTR_KEYS\fR.
-.PP
-\fBTcl_InitObjHashTable\fR is a wrapper around
-\fBTcl_InitCustomHashTable\fR and initializes a hash table whose keys
-are Tcl_Obj *.
-.PP
-\fBTcl_InitCustomHashTable\fR initializes a structure that describes a
-new hash table. The space for the structure is provided by the
-caller, not by the hash module. The value of \fIkeyType\fR indicates
-what kinds of keys will be used for all entries in the table.
-\fIKeyType\fR must have one of the following values:
-.IP \fBTCL_STRING_KEYS\fR 25
-Keys are null-terminated strings.
-They are passed to hashing routines using the address of the
-first character of the string.
-.IP \fBTCL_ONE_WORD_KEYS\fR 25
-Keys are single-word values; they are passed to hashing routines
-and stored in hash table entries as
-.QW "char *"
-values.
-The pointer value is the key; it need not (and usually does not)
-actually point to a string.
-.IP \fBTCL_CUSTOM_TYPE_KEYS\fR 25
-Keys are of arbitrary type, and are stored in the entry. Hashing
-and comparison is determined by \fItypePtr\fR. The Tcl_HashKeyType
-structure is described in the section
-\fBTHE TCL_HASHKEYTYPE STRUCTURE\fR below.
-.IP \fBTCL_CUSTOM_PTR_KEYS\fR 25
-Keys are pointers to an arbitrary type, and are stored in the entry. Hashing
-and comparison is determined by \fItypePtr\fR. The Tcl_HashKeyType
-structure is described in the section
-\fBTHE TCL_HASHKEYTYPE STRUCTURE\fR below.
-.IP \fIother\fR 25
-If \fIkeyType\fR is not one of the above,
-then it must be an integer value greater than 1.
-In this case the keys will be arrays of
-.QW int
-values, where
-\fIkeyType\fR gives the number of ints in each key.
-This allows structures to be used as keys.
-All keys must have the same size.
-Array keys are passed into hashing functions using the address
-of the first int in the array.
-.PP
-\fBTcl_DeleteHashTable\fR deletes all of the entries in a hash
-table and frees up the memory associated with the table's
-bucket array and entries.
-It does not free the actual table structure (pointed to
-by \fItablePtr\fR), since that memory is assumed to be managed
-by the client.
-\fBTcl_DeleteHashTable\fR also does not free or otherwise
-manipulate the values of the hash table entries.
-If the entry values point to dynamically-allocated memory, then
-it is the client's responsibility to free these structures
-before deleting the table.
-.PP
-\fBTcl_CreateHashEntry\fR locates the entry corresponding to a
-particular key, creating a new entry in the table if there
-was not already one with the given key.
-If an entry already existed with the given key then \fI*newPtr\fR
-is set to zero.
-If a new entry was created, then \fI*newPtr\fR is set to a non-zero
-value and the value of the new entry will be set to zero.
-The return value from \fBTcl_CreateHashEntry\fR is a pointer to
-the entry, which may be used to retrieve and modify the entry's
-value or to delete the entry from the table.
-.PP
-\fBTcl_DeleteHashEntry\fR will remove an existing entry from a
-table.
-The memory associated with the entry itself will be freed, but
-the client is responsible for any cleanup associated with the
-entry's value, such as freeing a structure that it points to.
-.PP
-\fBTcl_FindHashEntry\fR is similar to \fBTcl_CreateHashEntry\fR
-except that it does not create a new entry if the key doesn't exist;
-instead, it returns NULL as result.
-.PP
-\fBTcl_GetHashValue\fR and \fBTcl_SetHashValue\fR are used to
-read and write an entry's value, respectively.
-Values are stored and retrieved as type
-.QW ClientData ,
-which is
-large enough to hold a pointer value. On almost all machines this is
-large enough to hold an integer value too.
-.PP
-\fBTcl_GetHashKey\fR returns the key for a given hash table entry,
-either as a pointer to a string, a one-word
-.PQ "char *"
-key, or
-as a pointer to the first word of an array of integers, depending
-on the \fIkeyType\fR used to create a hash table.
-In all cases \fBTcl_GetHashKey\fR returns a result with type
-.QW "char *" .
-When the key is a string or array, the result of \fBTcl_GetHashKey\fR
-points to information in the table entry; this information will
-remain valid until the entry is deleted or its table is deleted.
-.PP
-\fBTcl_FirstHashEntry\fR and \fBTcl_NextHashEntry\fR may be used
-to scan all of the entries in a hash table.
-A structure of type
-.QW Tcl_HashSearch ,
-provided by the client,
-is used to keep track of progress through the table.
-\fBTcl_FirstHashEntry\fR initializes the search record and
-returns the first entry in the table (or NULL if the table is
-empty).
-Each subsequent call to \fBTcl_NextHashEntry\fR returns the
-next entry in the table or
-NULL if the end of the table has been reached.
-A call to \fBTcl_FirstHashEntry\fR followed by calls to
-\fBTcl_NextHashEntry\fR will return each of the entries in
-the table exactly once, in an arbitrary order.
-It is inadvisable to modify the structure of the table, e.g.
-by creating or deleting entries, while the search is in progress,
-with the exception of deleting the entry returned by
-\fBTcl_FirstHashEntry\fR or \fBTcl_NextHashEntry\fR.
-.PP
-\fBTcl_HashStats\fR returns a dynamically-allocated string with
-overall information about a hash table, such as the number of
-entries it contains, the number of buckets in its hash array,
-and the utilization of the buckets.
-It is the caller's responsibility to free the result string
-by passing it to \fBckfree\fR.
-.PP
-The header file \fBtcl.h\fR defines the actual data structures
-used to implement hash tables.
-This is necessary so that clients can allocate Tcl_HashTable
-structures and so that macros can be used to read and write
-the values of entries.
-However, users of the hashing routines should never refer directly
-to any of the fields of any of the hash-related data structures;
-use the procedures and macros defined here.
-.SH "THE TCL_HASHKEYTYPE STRUCTURE"
-.PP
-Extension writers can define new hash key types by defining four procedures,
-initializing a \fBTcl_HashKeyType\fR structure to describe the type, and
-calling \fBTcl_InitCustomHashTable\fR. The \fBTcl_HashKeyType\fR structure is
-defined as follows:
-.PP
-.CS
-typedef struct Tcl_HashKeyType {
- int \fIversion\fR;
- int \fIflags\fR;
- Tcl_HashKeyProc *\fIhashKeyProc\fR;
- Tcl_CompareHashKeysProc *\fIcompareKeysProc\fR;
- Tcl_AllocHashEntryProc *\fIallocEntryProc\fR;
- Tcl_FreeHashEntryProc *\fIfreeEntryProc\fR;
-} \fBTcl_HashKeyType\fR;
-.CE
-.PP
-The \fIversion\fR member is the version of the table. If this structure is
-extended in future then the version can be used to distinguish between
-different structures. It should be set to \fBTCL_HASH_KEY_TYPE_VERSION\fR.
-.PP
-The \fIflags\fR member is 0 or one or more of the following values OR'ed
-together:
-.IP \fBTCL_HASH_KEY_RANDOMIZE_HASH\fR 25
-There are some things, pointers for example which do not hash well because
-they do not use the lower bits. If this flag is set then the hash table will
-attempt to rectify this by randomizing the bits and then using the upper N
-bits as the index into the table.
-.IP \fBTCL_HASH_KEY_SYSTEM_HASH\fR 25
-This flag forces Tcl to use the memory allocation procedures provided by the
-operating system when allocating and freeing memory used to store the hash
-table data structures, and not any of Tcl's own customized memory allocation
-routines. This is important if the hash table is to be used in the
-implementation of a custom set of allocation routines, or something that a
-custom set of allocation routines might depend on, in order to avoid any
-circular dependency.
-.PP
-The \fIhashKeyProc\fR member contains the address of a function called to
-calculate a hash value for the key.
-.PP
-.CS
-typedef unsigned int \fBTcl_HashKeyProc\fR(
- Tcl_HashTable *\fItablePtr\fR,
- void *\fIkeyPtr\fR);
-.CE
-.PP
-If this is NULL then \fIkeyPtr\fR is used and
-\fBTCL_HASH_KEY_RANDOMIZE_HASH\fR is assumed.
-.PP
-The \fIcompareKeysProc\fR member contains the address of a function called to
-compare two keys.
-.PP
-.CS
-typedef int \fBTcl_CompareHashKeysProc\fR(
- void *\fIkeyPtr\fR,
- Tcl_HashEntry *\fIhPtr\fR);
-.CE
-.PP
-If this is NULL then the \fIkeyPtr\fR pointers are compared. If the keys do
-not match then the function returns 0, otherwise it returns 1.
-.PP
-The \fIallocEntryProc\fR member contains the address of a function called to
-allocate space for an entry and initialize the key and clientData.
-.PP
-.CS
-typedef Tcl_HashEntry *\fBTcl_AllocHashEntryProc\fR(
- Tcl_HashTable *\fItablePtr\fR,
- void *\fIkeyPtr\fR);
-.CE
-.PP
-If this is NULL then \fBTcl_Alloc\fR is used to allocate enough space for a
-Tcl_HashEntry, the key pointer is assigned to key.oneWordValue and the
-clientData is set to NULL. String keys and array keys use this function to
-allocate enough space for the entry and the key in one block, rather than
-doing it in two blocks. This saves space for a pointer to the key from the
-entry and another memory allocation. Tcl_Obj* keys use this function to
-allocate enough space for an entry and increment the reference count on the
-value.
-.PP
-The \fIfreeEntryProc\fR member contains the address of a function called to
-free space for an entry.
-.PP
-.CS
-typedef void \fBTcl_FreeHashEntryProc\fR(
- Tcl_HashEntry *\fIhPtr\fR);
-.CE
-.PP
-If this is NULL then \fBTcl_Free\fR is used to free the space for the entry.
-Tcl_Obj* keys use this function to decrement the reference count on the
-value.
-.SH KEYWORDS
-hash table, key, lookup, search, value