diff options
author | Nickolay V. Shmyrev <nshmyrev@yandex.ru> | 2007-01-08 12:25:31 (GMT) |
---|---|---|
committer | Nickolay V. Shmyrev <nshmyrev@src.gnome.org> | 2007-01-08 12:25:31 (GMT) |
commit | 13a06349251874bd35d2f03c3fc93217cee749a2 (patch) | |
tree | a681279b008acb19f686ee265aaed2be0da8d9e8 /dvi/mdvi-lib/hash.c | |
parent | afb550ab779e00918d8fe24742abee3a81ebfe93 (diff) |
Reorganize source tree.
2007-01-08 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
* Makefile.am:
* backend/Makefile.am:
* backend/comics/Makefile.am:
* backend/djvu/Makefile.am:
* backend/dvi/Makefile.am:
* backend/ev-async-renderer.c:
* backend/ev-async-renderer.h:
* backend/ev-attachment.c:
* backend/ev-attachment.h:
* backend/ev-backend-marshal.c:
* backend/ev-document-factory.c:
* backend/ev-document-factory.h:
* backend/ev-document-find.c:
* backend/ev-document-find.h:
* backend/ev-document-fonts.c:
* backend/ev-document-fonts.h:
* backend/ev-document-images.c:
* backend/ev-document-images.h:
* backend/ev-document-info.h:
* backend/ev-document-links.c:
* backend/ev-document-links.h:
* backend/ev-document-misc.c:
* backend/ev-document-misc.h:
* backend/ev-document-security.c:
* backend/ev-document-security.h:
* backend/ev-document-thumbnails.c:
* backend/ev-document-thumbnails.h:
* backend/ev-document-transition.c:
* backend/ev-document-transition.h:
* backend/ev-document.c:
* backend/ev-document.h:
* backend/ev-file-exporter.c:
* backend/ev-file-exporter.h:
* backend/ev-image.c:
* backend/ev-image.h:
* backend/ev-link-action.c:
* backend/ev-link-action.h:
* backend/ev-link-dest.c:
* backend/ev-link-dest.h:
* backend/ev-link.c:
* backend/ev-link.h:
* backend/ev-render-context.c:
* backend/ev-render-context.h:
* backend/ev-selection.c:
* backend/ev-selection.h:
* backend/impress/Makefile.am:
* backend/pdf/Makefile.am:
* backend/pixbuf/Makefile.am:
* backend/ps/Makefile.am:
* backend/ps/ps-document.c: (push_pixbuf), (interpreter_failed),
(ps_document_widget_event), (setup_pixmap), (setup_page), (input),
(start_interpreter), (stop_interpreter), (document_load),
(ps_document_next_page), (render_page):
* backend/tiff/Makefile.am:
* comics/Makefile.am:
* comics/comics-document.c:
* comics/comics-document.h:
* configure.ac:
* cut-n-paste/zoom-control/ephy-zoom-control.c:
* djvu/Makefile.am:
* djvu/djvu-document-private.h:
* djvu/djvu-document.c:
* djvu/djvu-document.h:
* djvu/djvu-links.c:
* djvu/djvu-links.h:
* djvu/djvu-text-page.c:
* djvu/djvu-text-page.h:
* djvu/djvu-text.c:
* djvu/djvu-text.h:
* dvi/Makefile.am:
* dvi/dvi-document.c:
* dvi/dvi-document.h:
* dvi/fonts.c:
* dvi/fonts.h:
* dvi/mdvi-lib/Makefile.am:
* dvi/mdvi-lib/afmparse.c:
* dvi/mdvi-lib/afmparse.h:
* dvi/mdvi-lib/bitmap.c:
* dvi/mdvi-lib/bitmap.h:
* dvi/mdvi-lib/color.c:
* dvi/mdvi-lib/color.h:
* dvi/mdvi-lib/common.c:
* dvi/mdvi-lib/common.h:
* dvi/mdvi-lib/defaults.h:
* dvi/mdvi-lib/dvimisc.c:
* dvi/mdvi-lib/dviopcodes.h:
* dvi/mdvi-lib/dviread.c:
* dvi/mdvi-lib/files.c:
* dvi/mdvi-lib/font.c:
* dvi/mdvi-lib/fontmap.c:
* dvi/mdvi-lib/fontmap.h:
* dvi/mdvi-lib/fontsrch.c:
* dvi/mdvi-lib/gf.c:
* dvi/mdvi-lib/hash.c:
* dvi/mdvi-lib/hash.h:
* dvi/mdvi-lib/list.c:
* dvi/mdvi-lib/mdvi.h:
* dvi/mdvi-lib/pagesel.c:
* dvi/mdvi-lib/paper.c:
* dvi/mdvi-lib/paper.h:
* dvi/mdvi-lib/pk.c:
* dvi/mdvi-lib/private.h:
* dvi/mdvi-lib/setup.c:
* dvi/mdvi-lib/sp-epsf.c:
* dvi/mdvi-lib/special.c:
* dvi/mdvi-lib/sysdeps.h:
* dvi/mdvi-lib/t1.c:
* dvi/mdvi-lib/tfm.c:
* dvi/mdvi-lib/tfmfile.c:
* dvi/mdvi-lib/tt.c:
* dvi/mdvi-lib/util.c:
* dvi/mdvi-lib/vf.c:
* dvi/pixbuf-device.c:
* dvi/pixbuf-device.h:
* impress/Makefile.am:
* impress/common.h:
* impress/document.c:
* impress/f_oasis.c:
* impress/f_oo13.c:
* impress/iksemel.c:
* impress/iksemel.h:
* impress/imposter.h:
* impress/impress-document.c:
* impress/impress-document.h:
* impress/internal.h:
* impress/r_back.c:
* impress/r_draw.c:
* impress/r_geometry.c:
* impress/r_gradient.c:
* impress/r_style.c:
* impress/r_text.c:
* impress/render.c:
* impress/render.h:
* impress/zip.c:
* impress/zip.h:
* lib/Makefile.am:
* lib/ev-debug.c:
* lib/ev-debug.h:
* lib/ev-file-helpers.c:
* lib/ev-file-helpers.h:
* lib/ev-gui.c:
* lib/ev-gui.h:
* lib/ev-tooltip.c:
* lib/ev-tooltip.h:
* libdocument/Makefile.am:
* libdocument/ev-file-helpers.c:
* pdf/Makefile.am:
* pdf/ev-poppler.cc:
* pdf/ev-poppler.h:
* pixbuf/Makefile.am:
* pixbuf/pixbuf-document.c:
* pixbuf/pixbuf-document.h:
* properties/Makefile.am:
* ps/Makefile.am:
* ps/gsdefaults.c:
* ps/gsdefaults.h:
* ps/gsio.c:
* ps/gsio.h:
* ps/gstypes.h:
* ps/ps-document.c:
* ps/ps-document.h:
* ps/ps.c:
* ps/ps.h:
* shell/Makefile.am:
* shell/ev-application.h:
* shell/ev-sidebar-links.c:
* shell/ev-sidebar-links.h:
* shell/ev-utils.c: (ev_gui_sanitise_popup_position),
(ev_gui_menu_position_tree_selection):
* shell/ev-utils.h:
* shell/ev-view.c: (ev_view_finalize):
* shell/ev-window.c:
* shell/main.c: (main):
* thumbnailer/Makefile.am:
* tiff/Makefile.am:
* tiff/tiff-document.c:
* tiff/tiff-document.h:
* tiff/tiff2ps.c:
* tiff/tiff2ps.h:
Reorganize source tree.
svn path=/trunk/; revision=2197
Diffstat (limited to 'dvi/mdvi-lib/hash.c')
-rw-r--r-- | dvi/mdvi-lib/hash.c | 223 |
1 files changed, 0 insertions, 223 deletions
diff --git a/dvi/mdvi-lib/hash.c b/dvi/mdvi-lib/hash.c deleted file mode 100644 index d030650..0000000 --- a/dvi/mdvi-lib/hash.c +++ /dev/null @@ -1,223 +0,0 @@ -/* - * Copyright (C) 2000, Matias Atria - * - * This program 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 of the License, or - * (at your option) any later version. - * - * This program 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 this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "mdvi.h" - -/* simple hash tables for MDVI */ - - -struct _DviHashBucket { - DviHashBucket *next; - DviHashKey key; - Ulong hvalue; - void *data; -}; - -static Ulong hash_string(DviHashKey key) -{ - Uchar *p; - Ulong h, g; - - for(h = 0, p = (Uchar *)key; *p; p++) { - h = (h << 4UL) + *p; - if((g = h & 0xf0000000L) != 0) { - h ^= (g >> 24UL); - h ^= g; - } - } - - return h; -} - -static int hash_compare(DviHashKey k1, DviHashKey k2) -{ - return strcmp((char *)k1, (char *)k2); -} - -void mdvi_hash_init(DviHashTable *hash) -{ - hash->buckets = NULL; - hash->nbucks = 0; - hash->nkeys = 0; - hash->hash_func = NULL; - hash->hash_comp = NULL; - hash->hash_free = NULL; -} - -void mdvi_hash_create(DviHashTable *hash, int size) -{ - int i; - - hash->nbucks = size; - hash->buckets = xnalloc(DviHashBucket *, size); - for(i = 0; i < size; i++) - hash->buckets[i] = NULL; - hash->hash_func = hash_string; - hash->hash_comp = hash_compare; - hash->hash_free = NULL; - hash->nkeys = 0; -} - -static DviHashBucket *hash_find(DviHashTable *hash, DviHashKey key) -{ - Ulong hval; - DviHashBucket *buck; - - hval = (hash->hash_func(key) % hash->nbucks); - - for(buck = hash->buckets[hval]; buck; buck = buck->next) - if(hash->hash_comp(buck->key, key) == 0) - break; - return buck; -} - -/* Neither keys nor data are duplicated */ -int mdvi_hash_add(DviHashTable *hash, DviHashKey key, void *data, int rep) -{ - DviHashBucket *buck = NULL; - Ulong hval; - - if(rep != MDVI_HASH_UNCHECKED) { - buck = hash_find(hash, key); - if(buck != NULL) { - if(buck->data == data) - return 0; - if(rep == MDVI_HASH_UNIQUE) - return -1; - if(hash->hash_free != NULL) - hash->hash_free(buck->key, buck->data); - } - } - if(buck == NULL) { - buck = xalloc(DviHashBucket); - buck->hvalue = hash->hash_func(key); - hval = (buck->hvalue % hash->nbucks); - buck->next = hash->buckets[hval]; - hash->buckets[hval] = buck; - hash->nkeys++; - } - - /* save key and data */ - buck->key = key; - buck->data = data; - - return 0; -} - -void *mdvi_hash_lookup(DviHashTable *hash, DviHashKey key) -{ - DviHashBucket *buck = hash_find(hash, key); - - return buck ? buck->data : NULL; -} - -static DviHashBucket *hash_remove(DviHashTable *hash, DviHashKey key) -{ - DviHashBucket *buck, *last; - Ulong hval; - - hval = hash->hash_func(key); - hval %= hash->nbucks; - - for(last = NULL, buck = hash->buckets[hval]; buck; buck = buck->next) { - if(hash->hash_comp(buck->key, key) == 0) - break; - last = buck; - } - if(buck == NULL) - return NULL; - if(last) - last->next = buck->next; - else - hash->buckets[hval] = buck->next; - hash->nkeys--; - return buck; -} - -void *mdvi_hash_remove(DviHashTable *hash, DviHashKey key) -{ - DviHashBucket *buck = hash_remove(hash, key); - void *data = NULL; - - if(buck) { - data = buck->data; - mdvi_free(buck); - } - return data; -} - -void *mdvi_hash_remove_ptr(DviHashTable *hash, DviHashKey key) -{ - DviHashBucket *buck, *last; - Ulong hval; - void *ptr; - - hval = hash->hash_func(key); - hval %= hash->nbucks; - - for(last = NULL, buck = hash->buckets[hval]; buck; buck = buck->next) { - if(buck->key == key) - break; - last = buck; - } - if(buck == NULL) - return NULL; - if(last) - last->next = buck->next; - else - hash->buckets[hval] = buck->next; - hash->nkeys--; - /* destroy the bucket */ - ptr = buck->data; - mdvi_free(buck); - return ptr; -} - -int mdvi_hash_destroy_key(DviHashTable *hash, DviHashKey key) -{ - DviHashBucket *buck = hash_remove(hash, key); - - if(buck == NULL) - return -1; - if(hash->hash_free) - hash->hash_free(buck->key, buck->data); - mdvi_free(buck); - return 0; -} - -void mdvi_hash_reset(DviHashTable *hash, int reuse) -{ - int i; - DviHashBucket *buck; - - /* remove all keys in the hash table */ - for(i = 0; i < hash->nbucks; i++) { - for(; (buck = hash->buckets[i]); ) { - hash->buckets[i] = buck->next; - if(hash->hash_free) - hash->hash_free(buck->key, buck->data); - mdvi_free(buck); - } - } - hash->nkeys = 0; - if(!reuse && hash->buckets) { - mdvi_free(hash->buckets); - hash->buckets = NULL; - hash->nbucks = 0; - } /* otherwise, it is left empty, ready to be reused */ -} |