diff --git a/Source/objects/collhash.h b/Source/objects/collhash.h deleted file mode 100644 index 29245740e..000000000 --- a/Source/objects/collhash.h +++ /dev/null @@ -1,170 +0,0 @@ -/* Hash tables for Objective C method dispatch, modified for libcoll. - Copyright (C) 1993,1994 Free Software Foundation, Inc. - -This file is part of GNU CC. - -GNU CC is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU CC is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU CC; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* As a special exception, if you link this library with files - compiled with GCC to produce an executable, this does not cause - the resulting executable to be covered by the GNU General Public License. - This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License. */ - - -#ifndef __collhash_INCLUDE_GNU -#define __collhash_INCLUDE_GNU - -#ifdef IN_GCC -#include "gstddef.h" -#else -#include "stddef.h" -#endif - -#include - -/* This returns an unsigned int that is the closest power of two greater - than the argument. */ -/* If we can rely on having ffs() we could do this better */ -#define POWER_OF_TWO(n) \ -({ \ - unsigned _MASK = 1; \ - while (n > _MASK) \ - _MASK <<= 1; \ - _MASK; \ -}) - - -/* - * This data structure is used to hold items - * stored in a hash table. Each node holds - * a key/value pair. - * - * Items in the cache are really of type void *. - */ -typedef struct coll_cache_node -{ - struct coll_cache_node *next; /* Pointer to next entry on the list. - NULL indicates end of list. */ - elt key; /* Key used to locate the value. Used - to locate value when more than one - key computes the same hash - value. */ - elt value; /* Value stored for the key. */ -} *coll_node_ptr; - - -/* - * This data type is the function that computes a hash code given a key. - * Therefore, the key can be a pointer to anything and the function specific - * to the key type. - * - * Unfortunately there is a mutual data structure reference problem with this - * typedef. Therefore, to remove compiler warnings the functions passed to - * hash_new will have to be casted to this type. - */ -typedef unsigned int (*coll_hash_func_type)(elt); - -/* - * This data type is the function that compares two hash keys and returns an - * integer greater than, equal to, or less than 0, according as the first - * parameter is lexico-graphically greater than, equal to, or less than the - * second. - */ - -typedef int (*coll_compare_func_type)(elt, elt); - - -/* - * This data structure is the cache. - * - * It must be passed to all of the hashing routines - * (except for new). - */ -typedef struct coll_cache -{ - /* Variables used to implement the hash itself. */ - coll_node_ptr *node_table; /* Pointer to an array of hash nodes. */ - /* Variables used to track the size of the hash table so to determine - when to resize it. */ - unsigned int size; /* Number of buckets allocated for the hash table - (number of array entries allocated for - "node_table"). Must be a power of two. */ - unsigned int used; /* Current number of entries in the hash table. */ - unsigned int mask; /* Precomputed mask. */ - - /* Variables used to implement indexing through the hash table. */ - - /* commented out by mccallum */ - /* unsigned int last_bucket; Tracks which entry in the array where - the last value was returned. */ - /* Function used to compute a hash code given a key. - This function is specified when the hash table is created. */ - coll_hash_func_type hash_func; - /* Function used to compare two hash keys to see if they are equal. */ - coll_compare_func_type compare_func; -} *coll_cache_ptr; - - -/* Two important hash tables. */ -/* This should be removed -extern coll_cache_ptr module_hash_table, class_hash_table; -*/ - -/* Allocate and initialize a hash table. */ - -coll_cache_ptr coll_hash_new (unsigned int size, - coll_hash_func_type hash_func, - coll_compare_func_type compare_func); - -/* Deallocate all of the hash nodes and the cache itself. */ - -void coll_hash_delete (coll_cache_ptr cache); - -/* Deallocate all of the hash nodes. */ - -void coll_hash_empty (coll_cache_ptr cache); - -/* Add the key/value pair to the hash table. If the - hash table reaches a level of fullnes then it will be resized. - - assert if the key is already in the hash. */ - -void coll_hash_add (coll_cache_ptr *cachep, elt key, elt value); - -/* Remove the key/value pair from the hash table. - assert if the key isn't in the table. */ - -void coll_hash_remove (coll_cache_ptr cache, elt key); - -/* Used to index through the hash table. Start with NULL - to get the first entry. - - Successive calls pass the value returned previously. - ** Don't modify the hash during this operation *** - - Cache nodes are returned such that key or value can - be extracted. */ - -coll_node_ptr coll_hash_next (coll_cache_ptr cache, void** state); - -/* Used to return a value from a hash table using a given key. */ - -elt coll_hash_value_for_key (coll_cache_ptr cache, elt key); - - -extern coll_node_ptr coll_hash_node_for_key (coll_cache_ptr cache, elt key); - -#endif /* not __hash_INCLUDE_GNU */ diff --git a/Source/objects/elt.h b/Source/objects/elt.h deleted file mode 100644 index cd2c8765b..000000000 --- a/Source/objects/elt.h +++ /dev/null @@ -1,56 +0,0 @@ -/* Definition of elt union, a union of various primitive C types - Copyright (C) 1993,1994 Free Software Foundation, Inc. - - Written by: R. Andrew McCallum - Date: May 1993 - - This file is part of the GNU Objective C Class Library. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#ifndef __elt_h_INCLUDE_GNU -#define __elt_h_INCLUDE_GNU - -#include - -/* Uncomment this #define to include double's if you really need them, - but on most architectures you'll be increasing sizeof(elt) by a - factor of two! */ - -/* #define ELT_INCLUDES_DOUBLE 1 */ -/* NOTE: This doesn't work yet. */ - -typedef union _elt -{ - id id_u; - SEL SEL_u; - int int_u; - unsigned int unsigned_int_u; - char char_u; - unsigned char unsigned_char_u; - short int short_int_u; - unsigned short int unsigned_short_int_u; - long int long_int_u; - unsigned long int unsigned_long_int_u; - float float_u; -#if (ELT_INCLUDES_DOUBLE) - double double_u; -#endif - const void *void_ptr_u; - char *char_ptr_u; /* change this to const char * */ -} elt; - -#endif /* __elt_h_INCLUDE_GNU */ diff --git a/Source/objects/eltfuncs.h b/Source/objects/eltfuncs.h deleted file mode 100644 index d6d48d714..000000000 --- a/Source/objects/eltfuncs.h +++ /dev/null @@ -1,85 +0,0 @@ -/* Declarations of functions for dealing with elt unions - Copyright (C) 1993,1994 Free Software Foundation, Inc. - - Written by: R. Andrew McCallum - Date: May 1993 - - This file is part of the GNU Objective C Class Library. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#ifndef __eltfuncs_h_INCLUDE_GNU -#define __eltfuncs_h_INCLUDE_GNU - -#include -#include -#include - -extern unsigned int elt_hash_int (elt key); -extern int elt_compare_ints (elt k1, elt k2); - -extern unsigned int elt_hash_unsigned_int (elt key); -extern int elt_compare_unsigned_ints (elt k1, elt k2); - -extern unsigned int elt_hash_long_int (elt key); -extern int elt_compare_long_ints (elt k1, elt k2); - -extern unsigned int elt_hash_unsigned_long_int (elt key); -extern int elt_compare_unsigned_long_ints (elt k1, elt k2); - -extern unsigned int elt_hash_char (elt key); -extern int elt_compare_chars (elt k1, elt k2); - -extern unsigned int elt_hash_unsigned_char (elt key); -extern int elt_compare_unsigned_chars (elt k1, elt k2); - -extern unsigned int elt_hash_short (elt key); -extern int elt_compare_shorts (elt k1, elt k2); - -extern unsigned int elt_hash_unsigned_short (elt key); -extern int elt_compare_unsigned_shorts (elt k1, elt k2); - -extern unsigned int elt_hash_float (elt key); -extern int elt_compare_floats (elt k1, elt k2); - -#if (ELT_INCLUDES_DOUBLE) -extern unsigned int elt_hash_double (elt key); -extern int elt_compare_doubles (elt k1, elt k2); -#endif - -extern int elt_compare_strings (elt k1, elt k2); -extern unsigned int elt_hash_string (elt key); - -extern int elt_compare_void_ptrs (elt k1, elt k2); -extern unsigned int elt_hash_void_ptr (elt key); - -extern unsigned int elt_hash_object (elt key); -extern int elt_compare_objects (elt k1, elt k2); - - -/* This returns a (int(*)(elt,elt)) */ -extern int (*(elt_get_comparison_function(const char *encoding)))(elt,elt); - -/* This returns a (unsigned int (*)(elt)) */ -extern unsigned int (*(elt_get_hash_function(const char *encoding)))(elt); - -extern const char *elt_get_encoding(int(*comparison_function)(elt,elt)); - -extern void *elt_get_ptr_to_member(const char *encoding, elt *anElement); - -extern void elt_fprintf_elt(FILE *fp, const char *encoding, elt anElement); - -#endif /* __eltfuncs_h_INCLUDE_GNU */