int main(void) { mcfly_err_t err; /* Initalize Mcfly using the default-named config file in this directory */ err = mcfly_init(NULL, &mcfly); if (err != MCFLY_SUCCESS) { fprintf(stderr, "Error initializing Mcfly: %s\n", MCFLY_ERR_STR(err)); mcfly_shutdown(mcfly); return MCFLY_ERR_VAL(err); } /* Catch signals */ signal(SIGINT, sighandler); signal(SIGSEGV, sighandler); /* Use ctrl+c to kill this */ for ( ;; ) { query_all(mcfly); sleep(1); } /* Shutdown Mcfly (signal handler should catch, so this probably won't * execute below here...) */ mcfly_shutdown(mcfly); return 0; }
vector<int> query_all(int id){ vector<int> ret; auto multimap_qry = flat_tree.equal_range(id); for(auto it = multimap_qry.first; it != multimap_qry.second; ++it){ ret.push_back(it->second); } if(has_children.count(id)){ auto res1 = query_all(child(id,1)); auto res2 = query_all(child(id,2)); auto res3 = query_all(child(id,3)); auto res4 = query_all(child(id,4)); ret.insert(ret.end(),res1.begin(),res1.end()); ret.insert(ret.end(),res2.begin(),res2.end()); ret.insert(ret.end(),res3.begin(),res3.end()); ret.insert(ret.end(),res4.begin(),res4.end()); } return ret; }