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) {}
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; }