diff options
author | 2014-06-16 12:25:33 -0700 | |
---|---|---|
committer | 2014-06-16 12:27:28 -0700 | |
commit | 3513ce3ac0de4a4cf9ebb5d273a19c8aaaa9b942 (patch) | |
tree | fcda144b265c061c0b784578de34c806a5bbdaea /env_universal_common.h | |
parent | 6277a2e4a4a9557290018d885c0b34d244a84dbc (diff) |
Universal variable callbacks should only be announced for changed
values, not every value. Also support erase notifications.
Diffstat (limited to 'env_universal_common.h')
-rw-r--r-- | env_universal_common.h | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/env_universal_common.h b/env_universal_common.h index c827716e..207e4dba 100644 --- a/env_universal_common.h +++ b/env_universal_common.h @@ -15,7 +15,8 @@ typedef enum { SET, - SET_EXPORT + SET_EXPORT, + ERASE } fish_message_type_t; /** @@ -55,9 +56,6 @@ class env_universal_t bool tried_renaming; bool load_from_path(const wcstring &path, callback_data_list_t *callbacks); void load_from_fd(int fd, callback_data_list_t *callbacks); - void erase_unmodified_values(); - - void parse_message_internal(const wcstring &msg, callback_data_list_t *callbacks); void set_internal(const wcstring &key, const wcstring &val, bool exportv, bool overwrite); bool remove_internal(const wcstring &name); @@ -71,7 +69,14 @@ class env_universal_t /* File id from which we last read */ file_id_t last_read_file; - void read_message_internal(int fd, callback_data_list_t *callbacks); + /* Given a variable table, generate callbacks representing the difference between our vars and the new vars */ + void generate_callbacks(const var_table_t &new_vars, callback_data_list_t *callbacks) const; + + /* Given a variable table, copy unmodified values into self. May destructively modified vars_to_acquire. */ + void acquire_variables(var_table_t *vars_to_acquire); + + static void parse_message_internal(const wcstring &msg, var_table_t *vars, wcstring *storage); + static var_table_t read_message_internal(int fd); public: env_universal_t(const wcstring &path); |