virtual void init_node(db::node *node) { db::simple_tuple *stpl(db::simple_tuple::create_new(new vm::tuple(vm::All->PROGRAM->get_init_predicate()), 0)); new_work_self(node, stpl); node->init(); node->set_owner(this); }
message* message::unpack(byte *buf, const size_t buf_size, int *pos, MPI_Comm comm) { node::node_id id; MPI_Unpack(buf, buf_size, pos, &id, 1, MPI_UNSIGNED, comm); simple_tuple *stpl(simple_tuple::unpack(buf, buf_size, pos, comm)); return new message(id, stpl); }
inline void get_tuples_until_timestamp(db::simple_tuple_list& ls, const size_t until) { while(!tuple_pqueue.empty()) { heap_priority pr = tuple_pqueue.min_value(); if((size_t)pr.int_priority > until) { break; } db::simple_tuple *stpl(tuple_pqueue.pop()); ls.push_back(stpl); } while(!rtuple_pqueue.empty()) { heap_priority pr = rtuple_pqueue.min_value(); if((size_t)pr.int_priority > until) break; db::simple_tuple *stpl(rtuple_pqueue.pop()); ls.push_back(stpl); } }
vm::tuple* agg_configuration::generate_sum_list_float(const field_num field) const { assert(!vals.empty()); const_iterator end(vals.end()); const_iterator it(vals.begin()); vm::tuple *first_tpl((*it)->get_tuple()); float_list *first(first_tpl->get_float_list(field)); const size_t len(float_list::length(first)); const size_t num_lists(vals.size()); float_list *lists[num_lists]; vm::tuple *ret(first_tpl->copy_except(field)); for(size_t i(0); it != end; ++it) { simple_tuple *stpl(*it); size_t count(size_t (stpl->get_count())); for(size_t j(0); j < count; ++j) { lists[i++] = stpl->get_tuple()->get_float_list(field); assert(float_list::length(lists[i-1]) == len); } assert(i <= num_lists); } stack_float_list vals; for(size_t i(0); i < len; ++i) { float_val sum(0.0); for(size_t j(0); j < num_lists; ++j) { float_list *ls(lists[j]); assert(ls != NULL); sum += ls->get_head(); lists[j] = ls->get_tail(); } vals.push(sum); } for(size_t j(0); j < num_lists; ++j) assert(float_list::is_null(lists[j])); float_list *ptr(from_stack_to_list<stack_float_list, float_list>(vals)); ret->set_float_list(field, ptr); return ret; }
inline void init_node(db::node *node) { db::simple_tuple *stpl(db::simple_tuple::create_new(new vm::tuple(vm::state::PROGRAM->get_init_predicate()))); new_work_self(node, stpl); node->init(); }