示例#1
0
int hash_table_remove(struct hash_table* ht, hash_key_t k)
{
    size_t index = lookup_index(ht, k);
    if ((ssize_t)index == -1)
        return 0;
    else {
        ht->hashes[index] |= 0x80000000; /* Mark as deleted */
        --(ht->size);
        return 1;
    }
}
示例#2
0
Exec_stat MCVariableValue::lookup_index(MCExecPoint& ep, uint32_t index, MCVariableValue*& r_value)
{
	return lookup_index(ep, index, true, r_value);
}
示例#3
0
void* SrHashTableBase::lookup ( const char* st ) const
 {
   int id = lookup_index ( st );
   return id<0? 0: _table[id].data;
 }
示例#4
0
hash_val_t* hash_table_search(struct hash_table* ht, hash_key_t k)
{
    size_t index = lookup_index(ht, k);
    return (ssize_t)index == -1 ? 0 : &ht->table[index].val;
}
示例#5
0
文件: api.c 项目: anatol/libsigrok
static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sdi,
		      const struct sr_channel_group *cg)
{
	uint64_t value;
	struct dev_context *devc;
	int idx;

	(void)cg;

	devc = sdi->priv;
	if (!devc)
		return SR_ERR_DEV_CLOSED;

	switch (key) {
	case SR_CONF_SAMPLERATE:
		value = g_variant_get_uint64(data);
		if (value < samplerates[ARRAY_SIZE(samplerates) - 1]
				|| value > samplerates[0])
			return SR_ERR_SAMPLERATE;
		devc->samplerate = value;
		break;
	case SR_CONF_LIMIT_MSEC:
		value = g_variant_get_uint64(data);
		if (value > MAX_LIMIT_MSEC)
			return SR_ERR_ARG;
		devc->limit_msec = value;
		break;
	case SR_CONF_LIMIT_SAMPLES:
		value = g_variant_get_uint64(data);
		if (value > MAX_LIMIT_SAMPLES)
			return SR_ERR_ARG;
		devc->limit_samples = value;
		break;
	case SR_CONF_EXTERNAL_CLOCK:
		devc->cfg_clock_source = (g_variant_get_boolean(data))
			? CLOCK_EXT_CLK : CLOCK_INTERNAL;
		break;
	case SR_CONF_CLOCK_EDGE:
		idx = lookup_index(data, signal_edge_names,
				   ARRAY_SIZE(signal_edge_names));
		if (idx < 0)
			return SR_ERR_ARG;
		devc->cfg_clock_edge = idx;
		break;
	case SR_CONF_TRIGGER_SOURCE:
		idx = lookup_index(data, trigger_source_names,
				   ARRAY_SIZE(trigger_source_names));
		if (idx < 0)
			return SR_ERR_ARG;
		devc->cfg_trigger_source = idx;
		break;
	case SR_CONF_TRIGGER_SLOPE:
		idx = lookup_index(data, signal_edge_names,
				   ARRAY_SIZE(signal_edge_names));
		if (idx < 0)
			return SR_ERR_ARG;
		devc->cfg_trigger_slope = idx;
		break;
	default:
		return SR_ERR_NA;
	}

	return SR_OK;
}