diff options
author | Darin Adler <darin@src.gnome.org> | 2000-10-11 23:03:44 +0000 |
---|---|---|
committer | Darin Adler <darin@src.gnome.org> | 2000-10-11 23:03:44 +0000 |
commit | 86af18b8aafde35b53c07d66638f025323eec316 (patch) | |
tree | 4878b41b971b016d8aa7383a85066f029ae4e9cb /libnautilus-extensions/nautilus-directory-private.h | |
parent | a7f4e3431133a38f965f32c8e955b4c23e0f0566 (diff) | |
download | nautilus-86af18b8aafde35b53c07d66638f025323eec316.tar.gz |
Added a hash table to make access of files by name fast.
* libnautilus-extensions/nautilus-directory-async.c:
(dequeue_pending_idle_callback): Call the new
nautilus_directory_remove_file function to do the removing instead
of doing it here. Call the new nautilus_directory_add_file
function to do the adding instead of doing it here.
* libnautilus-extensions/nautilus-directory-private.h: Added hash
table.
* libnautilus-extensions/nautilus-directory.c:
(nautilus_directory_initialize): Create hash table.
(nautilus_directory_destroy): Destroy hash table.
(add_to_hash_table), (extract_from_hash_table),
(nautilus_directory_add_file), (nautilus_directory_remove_file):
New functions to add and remove files that put things into hash
table as well.
(nautilus_directory_begin_file_name_change),
(nautilus_directory_end_file_name_change): Functions to deal with
cases where the name changes so the hash table entry can be moved.
(nautilus_directory_find_file): Use the hash table instead of
searching the list.
(nautilus_directory_notify_files_moved): Use
nautilus_directory_remove_file and nautilus_directory_add_file
instead of modifying the file list directly.
* libnautilus-extensions/nautilus-file.c:
(nautilus_file_get_internal): Use nautilus_directory_add_file
instead of adding to the file list directly.
(destroy): Use nautilus_directory_remove_file instead of removing
from the file list directly.
(rename_update_info_and_metafile), (nautilus_file_update_info),
(nautilus_file_update_name): Use the new file name change calls to
let the directory know it needs to move the hash table entry.
(nautilus_file_mark_gone): Use nautilus_directory_remove_file
instead of removing from the file list directly.
* libnautilus-extensions/nautilus-vfs-directory.c: Update for name
change of file list field.
* src/nautilus-window.c: (nautilus_window_clear_status): Take
advantage of Bonobo fix. We now use NULL to tell the status bar to
erase our status message.
Diffstat (limited to 'libnautilus-extensions/nautilus-directory-private.h')
-rw-r--r-- | libnautilus-extensions/nautilus-directory-private.h | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/libnautilus-extensions/nautilus-directory-private.h b/libnautilus-extensions/nautilus-directory-private.h index bb3df7f05..693ccd1c0 100644 --- a/libnautilus-extensions/nautilus-directory-private.h +++ b/libnautilus-extensions/nautilus-directory-private.h @@ -48,7 +48,8 @@ struct NautilusDirectoryDetails /* The file objects. */ NautilusFile *as_file; - GList *files; + GList *file_list; + GHashTable *file_hash; /* The metadata. */ gboolean metafile_read; @@ -139,8 +140,6 @@ void nautilus_async_destroying_file (NautilusFi void nautilus_directory_force_reload (NautilusDirectory *directory); /* Calls shared between directory, file, and async. code. */ -NautilusFile * nautilus_directory_find_file (NautilusDirectory *directory, - const char *file_name); void nautilus_directory_emit_metadata_changed (NautilusDirectory *directory); void nautilus_directory_emit_files_added (NautilusDirectory *directory, GList *added_files); @@ -153,6 +152,19 @@ NautilusDirectory *nautilus_directory_get_internal (const char gboolean create); char *nautilus_directory_get_name_for_self_as_new_file (NautilusDirectory *directory); +/* Interface to the file list. */ +NautilusFile * nautilus_directory_find_file (NautilusDirectory *directory, + const char *file_name); +void nautilus_directory_add_file (NautilusDirectory *directory, + NautilusFile *file); +void nautilus_directory_remove_file (NautilusDirectory *directory, + NautilusFile *file); +GList * nautilus_directory_begin_file_name_change (NautilusDirectory *directory, + NautilusFile *file); +void nautilus_directory_end_file_name_change (NautilusDirectory *directory, + NautilusFile *file, + GList *node); + /* debugging functions */ int nautilus_directory_number_outstanding (void); |