summaryrefslogtreecommitdiff
path: root/libnautilus-extensions/nautilus-directory-private.h
diff options
context:
space:
mode:
authorDarin Adler <darin@src.gnome.org>2000-10-11 23:03:44 +0000
committerDarin Adler <darin@src.gnome.org>2000-10-11 23:03:44 +0000
commit86af18b8aafde35b53c07d66638f025323eec316 (patch)
tree4878b41b971b016d8aa7383a85066f029ae4e9cb /libnautilus-extensions/nautilus-directory-private.h
parenta7f4e3431133a38f965f32c8e955b4c23e0f0566 (diff)
downloadnautilus-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.h18
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);