コード例 #1
0
ファイル: rel_exp.c プロジェクト: lajus/monetinr
sql_exp *
exps_bind_column2( list *exps, char *rname, char *cname ) 
{
	if (exps) {
		node *en;

		if (exps && !exps->ht && list_length(exps) > HASH_MIN_SIZE) {
			exps->ht = hash_new(exps->sa, list_length(exps), (fkeyvalue)&exp_key);

			for (en = exps->h; en; en = en->next ) {
				sql_exp *e = en->data;
				if (e->name) {
					int key = exp_key(e);

					hash_add(exps->ht, key, e);
				}
			}
		}
		if (exps && exps->ht) {
			int key = hash_key(cname);
			sql_hash_e *he = exps->ht->buckets[key&(exps->ht->size-1)]; 

			for (; he; he = he->chain) {
				sql_exp *e = he->value;

				if (e && is_column(e->type) && e->name && e->rname && strcmp(e->name, cname) == 0 && strcmp(e->rname, rname) == 0)
					return e;
				if (e && e->type == e_column && e->name && !e->rname && e->l && strcmp(e->name, cname) == 0 && strcmp(e->l, rname) == 0)
					return e;
			}
			return NULL;
		}
		for (en = exps->h; en; en = en->next ) {
			sql_exp *e = en->data;
		
			if (e && is_column(e->type) && e->name && e->rname && strcmp(e->name, cname) == 0 && strcmp(e->rname, rname) == 0)
				return e;
			if (e && e->type == e_column && e->name && !e->rname && e->l && strcmp(e->name, cname) == 0 && strcmp(e->l, rname) == 0)
				return e;
			if (e && e->type == e_column && !e->name && !e->rname && e->l && e->r && strcmp(e->r, cname) == 0 && strcmp(e->l, rname) == 0) {
				assert(0);
				return e;
			}
		}
	}
	return NULL;
}
コード例 #2
0
ファイル: get_list.c プロジェクト: veyssib/sudoki-bi_veyssi_b
int		add_to_list(t_list **list, int i, int j, char **tab)
{
  t_list	*elem;
  int		nbr;
  int		pos;

  if ((elem = malloc(sizeof(t_list))) == NULL)
    return (-1);
  elem->i = i;
  elem->j = j;
  nbr = 0;
  pos = 0;
  while (++nbr < 10)
    if (is_line(tab, i, (nbr + '0')) == 0 &&
	is_column(tab, j, (nbr + '0')) == 0 &&
	is_block(tab, i, j, (nbr + '0')) == 0)
      ++pos;
  elem->possibilities = pos;
  elem->next = *list;
  *list = elem;
  return (0);
}
コード例 #3
0
 bool is_column(const std::string& column_name) const
 {
     return is_column(column_name, typeid(T));
 }