aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/autoload.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/autoload.h')
-rw-r--r--src/autoload.h84
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