static void m_deepin_lunar_dealloc(DeepinLunarObject *self) { PyObject_GC_UnTrack(self); Py_TRASHCAN_SAFE_BEGIN(self) ZAP(self->dict); m_delete(self); PyObject_GC_Del(self); Py_TRASHCAN_SAFE_END(self) }
void read_call_back(int sock,string s,string peer) { int req, port; string msg, full_data, id, who, ip, data; object player; #ifdef DEBUG tell_room(environment(),"Identd got: "+s+" from "+peer+".\n"); #endif if(peer != IDENTSERVER) return; if(sscanf(s,"%d %d%*s:%s:%*s:%s", req, port, msg, full_data) == 6) { if(sscanf(lower_case(msg),"%*serror%*s")) return; sscanf(full_data,"%s\r",full_data); sscanf(full_data,"%s\n",full_data); sscanf(full_data," %s",full_data); sscanf(data=full_data,"%s,",data); sscanf(data,"%s ",data); if(data[0]=='[' && data[-1]==']') { data="[]"; } id=requests[req]; if(!id) return; sscanf(id,"%s@%s",who,ip); player=find_player(who); if(!player) return; if(query_ip_number(player) != ip) return; if(query_ip_port(player) != port+"") return; ident_info[id]=data; requests=m_delete(requests,id); requests=m_delete(requests,req); player->set_ident(full_data); tell_room(environment(),"The identdaemon finds out that "+capitalize(who)+" is called "+full_data+".\n"); } }
// returns true if the queue was empty enqueue_result enqueue(pointer new_element) { pointer e = m_stack.load(); for (;;) { if (!e) { // if tail is nullptr, the queue has been closed m_delete(new_element); return enqueue_result::queue_closed; } new_element->next = is_dummy(e) ? nullptr : e; if (m_stack.compare_exchange_weak(e, new_element)) { return (e == reader_blocked_dummy()) ? enqueue_result::unblocked_reader : enqueue_result::success; } } }
void remove_if(UnaryPredicate f) { pointer head = m_head; pointer last = nullptr; pointer p = m_head; auto loop = [&]() -> bool { while (p) { if (f(*p)) { if (last == nullptr) m_head = p->next; else last = p->next; m_delete(p); return true; } else { last = p; p = p->next; } } return false; }; if (!loop()) { // last points to the tail now auto old_tail = last; m_head = nullptr; // fetch_new_data assumes cached list to be empty if (fetch_new_data()) { last = nullptr; p = m_head; // let p point to the first newly fetched element loop(); // restore cached list if (head) { old_tail->next = m_head; m_head = head; } } else m_head = head; } }
iterator erase(iterator pos) { auto next = pos->next; m_delete(take(pos)); return next; }
void remove_landmark( string name ) { if( !mappingp(landmarks) ) landmarks = ([ ]); m_delete( landmarks, name ); }