+ call_id_t publish_id(thread_id_t tid) {
+ elem *e = get_elem_by_tid(tid);
+ if (NULL == e)
+ return DEFAULT_CALL_ID;
+ return e->id;
+ }
+ @DefineFunc:
+ bool publish_check(thread_id_t tid) {
+ elem *e = get_elem_by_tid(tid);
+ if (NULL == e)
+ return false;
+ return e->written;
+ }
+ @DefineFunc:
+ void publish(thread_id_t tid) {
+ elem *e = get_elem_by_tid(tid);
+ e->written = true;
+ }
+ @DefineFunc:
+ call_id_t fetch_id(t_element *pos) {
+ elem *e = get_elem_by_pos(pos);
+ if (NULL == e)
+ return DEFAULT_CALL_ID;
+ return e->id;
+ }
+ @DefineFunc:
+ bool fetch_check(t_element *pos) {
+ int idx = elem_idx_by_pos(pos);
+ if (idx == -1)
+ return false;
+ else
+ return true;
+ }
+ @DefineFunc:
+ void fetch(t_element *pos) {
+ int idx = elem_idx_by_pos(pos);