Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
/// 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);
        }
    }
}
Ejemplo n.º 3
0
/**
   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);
		}

	}
}
Ejemplo n.º 4
0
/* 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));
        }
    }
}