diff options
Diffstat (limited to 'src/autoload.h')
-rw-r--r-- | src/autoload.h | 84 |
1 files changed, 41 insertions, 43 deletions
diff --git a/src/autoload.h b/src/autoload.h index 1d6d4a61..efa8c16d 100644 --- a/src/autoload.h +++ b/src/autoload.h @@ -11,15 +11,19 @@ #include "common.h" #include "lru.h" -// A struct responsible for recording an attempt to access a file. +/// Record of an attempt to access a file. struct file_access_attempt_t { - time_t mod_time; // modification time of the file - time_t last_checked; // when we last checked the file - bool accessible; // whether we believe we could access this file - bool stale; // whether the access attempt is stale - int error; // if we could not access the file, the error code + /// Modification time of the file + time_t mod_time; + /// When we last checked the file + time_t last_checked; + /// Whether or not we believe we can access this file + bool accessible; + /// The access attempt is stale + bool stale; + /// If we cannot access the file, the error code encountered. + int error; }; - file_access_attempt_t access_file(const wcstring &path, int mode); struct autoload_function_t : public lru_node_t { @@ -29,12 +33,15 @@ struct autoload_function_t : public lru_node_t { is_loaded(false), is_placeholder(false), is_internalized(false) {} - file_access_attempt_t access; // the last access attempt - bool is_loaded; // whether we have actually loaded this function - // Whether we are a placeholder that stands in for "no such function". If this is true, then - // is_loaded must be false. + + /// The last access attempt recorded + file_access_attempt_t access; + /// Have we actually loaded this function? + bool is_loaded; + /// Whether we are a placeholder that stands in for "no such function". If this is true, then + /// is_loaded must be false. bool is_placeholder; - // Whether this function came from a builtin "internalized" script. + /// Whether this function came from a builtin "internalized" script. bool is_internalized; }; @@ -45,24 +52,23 @@ struct builtin_script_t { class env_vars_snapshot_t; -// A class that represents a path from which we can autoload, and the autoloaded contents. +/// Class representing a path from which we can autoload and the autoloaded contents. class autoload_t : private lru_cache_t<autoload_function_t> { private: - // Lock for thread safety. + /// Lock for thread safety. pthread_mutex_t lock; - // The environment variable name. + /// The environment variable name. const wcstring env_var_name; - // Builtin script array. + /// Builtin script array. const struct builtin_script_t *const builtin_scripts; - // Builtin script count. + /// Builtin script count. const size_t builtin_script_count; - // The path from which we most recently autoloaded. + /// The path from which we most recently autoloaded. wcstring last_path; - // That path, tokenized (split on separators). + /// the most reecently autoloaded path, tokenized (split on separators). wcstring_list_t last_path_tokenized; - - // A table containing all the files that are currently being loaded. This is here to help - // prevent recursion. + /// A table containing all the files that are currently being loaded. + /// This is here to help prevent recursion. std::set<wcstring> is_loading_set; void remove_all_functions(void) { this->evict_all_nodes(); } @@ -76,39 +82,31 @@ class autoload_t : private lru_cache_t<autoload_function_t> { bool allow_eviction); protected: - // Overridable callback for when a command is removed. + /// Overridable callback for when a command is removed. virtual void command_removed(const wcstring &cmd) {} public: - // Create an autoload_t for the given environment variable name. + /// Create an autoload_t for the given environment variable name. autoload_t(const wcstring &env_var_name_var, const builtin_script_t *scripts, size_t script_count); - virtual ~autoload_t(); // destructor - - // Autoload the specified file, if it exists in the specified path. Do not load it multiple - // times unless its timestamp changes or parse_util_unload is called. - // - // Autoloading one file may unload another. - // - // \param cmd the filename to search for. The suffix '.fish' is always added to this name - // \param on_unload a callback function to run if a suitable file is found, which has not - // already been run. unload will also be called for old files which are unloaded. - // \param reload wheter to recheck file timestamps on already loaded files + virtual ~autoload_t(); + + /// Autoload the specified file, if it exists in the specified path. Do not load it multiple + /// times unless its timestamp changes or parse_util_unload is called. + /// Autoloading one file may unload another. + /// @param cmd the filename to search for. The suffix '.fish' is always added to this name + /// @param reload wheter to recheck file timestamps on already loaded files int load(const wcstring &cmd, bool reload); - // Check whether we have tried loading the given command. Does not do any I/O. + /// Check whether we have tried loading the given command. Does not do any I/O. bool has_tried_loading(const wcstring &cmd); - // Tell the autoloader that the specified file, in the specified path, is no longer loaded. - // - // \param cmd the filename to search for. The suffix '.fish' is always added to this name - // \param on_unload a callback function which will be called before (re)loading a file, may be - // used to unload the previous file. - // \return non-zero if the file was removed, zero if the file had not yet been loaded + /// Tell the autoloader that the specified file, in the specified path, is no longer loaded. + /// Returns non-zero if the file was removed, zero if the file had not yet been loaded int unload(const wcstring &cmd); - // Check whether the given command could be loaded, but do not load it. + /// Check whether the given command could be loaded, but do not load it. bool can_load(const wcstring &cmd, const env_vars_snapshot_t &vars); }; #endif |