const var_entry_t *env_node_t::find_entry(const wcstring &key) { const var_entry_t *result = NULL; var_table_t::const_iterator where = env.find(key); if (where != env.end()) { result = &where->second; } return result; }
/// Function used with to insert keys of one table into a set::set<wcstring>. static void add_key_to_string_set(const var_table_t &envs, std::set<wcstring> *str_set, bool show_exported, bool show_unexported) { var_table_t::const_iterator iter; for (iter = envs.begin(); iter != envs.end(); ++iter) { const var_entry_t &e = iter->second; if ((e.exportv && show_exported) || (!e.exportv && show_unexported)) { // Insert this key. str_set->insert(iter->first); } } }
/** Function used with to insert keys of one table into a set::set<wcstring> */ static void add_key_to_string_set(const var_table_t &envs, std::set<wcstring> &strSet) { var_table_t::const_iterator iter; for (iter = envs.begin(); iter != envs.end(); ++iter) { var_entry_t *e = iter->second; if( ( e->exportv && get_names_show_exported) || ( !e->exportv && get_names_show_unexported) ) { /*Insert Key*/ strSet.insert(iter->first); } } }
/* Given a variable table, generate callbacks representing the difference between our vars and the new vars */ void env_universal_t::generate_callbacks(const var_table_t &new_vars, callback_data_list_t *callbacks) const { assert(callbacks != NULL); /* Construct callbacks for erased values */ for (var_table_t::const_iterator iter = this->vars.begin(); iter != this->vars.end(); ++iter) { const wcstring &key = iter->first; /* Skip modified values */ if (this->modified.find(key) != this->modified.end()) { continue; } /* If the value is not present in new_vars, it has been erased */ if (new_vars.find(key) == new_vars.end()) { callbacks->push_back(callback_data_t(ERASE, key, L"")); } } /* Construct callbacks for newly inserted or changed values */ for (var_table_t::const_iterator iter = new_vars.begin(); iter != new_vars.end(); ++iter) { const wcstring &key = iter->first; /* Skip modified values */ if (this->modified.find(key) != this->modified.end()) { continue; } /* See if the value has changed */ const var_entry_t &new_entry = iter->second; var_table_t::const_iterator existing = this->vars.find(key); if (existing == this->vars.end() || existing->second.exportv != new_entry.exportv || existing->second.val != new_entry.val) { /* Value has changed */ callbacks->push_back(callback_data_t(new_entry.exportv ? SET_EXPORT : SET, key, new_entry.val)); } } }