Exemple #1
0
eightchan_proc::eightchan_proc(std::string &&b_url) : 
    chan_proc(kon("127.0.0.1:9050", true), chan_db("eightchan"), 
        new fourchan_parser_json()), base_url(b_url) {}
Exemple #2
0
bool forward_chaining(data_t *data, rule_t *rules, char *s, int d, int r) {
	int i, j, k;
	bool b;
	char solution, first, second;
	for(i = 0 ; i < d ; i++) {
                if(strcmp(data[i].name, s) == 0 && data[i].value == '0')
                        return false;
                else if(strcmp(data[i].name, s) == 0 && data[i].value == '1')
                        return true;
        }
	for(i = 0 ; i < r ; i++) {
		rule_t rule;
		j = 0;
		strcpy(rule.res.name, rules[i].res.name);
		do {
			rule.com[j].neg = rules[i].com[j].neg;
			strcpy(rule.com[j].name, rules[i].com[j].name);
			strcpy(rule.com[j].ope, rules[i].com[j].ope);
			for(k = 0 ; k < d ; k++) {
				if(strcmp(rule.com[j].name, data[k].name) == 0)
					rule.com[j].value = data[k].value;
				if(strcmp(rule.res.name, data[k].name) == 0)
					rule.res.value = data[k].value;
			}
			j++;
		} while(strcmp(rule.com[j-1].ope, "=>") != 0);
		if(rule.res.value == '?') {
			j = 0;
			b = false;
			do {
				if(rule.com[j].value == '?') {
					b = true;
					break;
				}
				j++;
			} while(strcmp(rule.com[j-1].ope, "=>") != 0);
			if(!b) {
				if(rule.com[0].neg)
					solution = neg(rule.com[0].value);
				else
					solution = rule.com[0].value;
				j = 0;
				do {
					if(strcmp(rule.com[j].ope, "&&") == 0) {
						first = solution;
						if(rule.com[j+1].neg)
							second = neg(rule.com[j+1].value);
						else
							second = rule.com[j+1].value;
						solution = kon(first, second);
					}
					else if(strcmp(rule.com[j].ope, "||") == 0) {
                                                first = solution;
                                                if(rule.com[j+1].neg)
                                                        second = neg(rule.com[j+1].value);
                                                else
                                                        second = rule.com[j+1].value;
                                                solution = alt(first, second);
                                        }
					j++;
				} while(strcmp(rule.com[j-1].ope, "=>") != 0);
				rule.res.value = solution;
				if(strcmp(rule.res.name, s) == 0 && rule.res.value == '1')
						return true;
				for(j = 0 ; j < d ; j++) {
					if(strcmp(rule.res.name, data[j].name) == 0) {
						data[j].value = rule.res.value;
						break;
					}
				}
			}
		}
	}
	if(solution == '0')
		return false;
	else
		return true;
}