aboutsummaryrefslogtreecommitdiffhomepage
path: root/env_universal_common.h
diff options
context:
space:
mode:
authorGravatar ridiculousfish <corydoras@ridiculousfish.com>2014-06-16 12:25:33 -0700
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2014-06-16 12:27:28 -0700
commit3513ce3ac0de4a4cf9ebb5d273a19c8aaaa9b942 (patch)
treefcda144b265c061c0b784578de34c806a5bbdaea /env_universal_common.h
parent6277a2e4a4a9557290018d885c0b34d244a84dbc (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.h15
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);