void CyclingAgenda::pop(Derivation& d) { assert(!this->empty()); while (current_agenda().empty()) advance_index(); Debug::log(5) << "Popped from agenda #" << _current_index << "\n"; current_agenda().pop(d); advance_index(); }
/************************************************************************** Log player tech messages. **************************************************************************/ void real_tech_log(const char *file, const char *function, int line, enum log_level level, bool notify, const struct player *pplayer, struct advance *padvance, const char *msg, ...) { char buffer[500]; char buffer2[500]; va_list ap; if (!valid_advance(padvance) || advance_by_number(A_NONE) == padvance) { return; } fc_snprintf(buffer, sizeof(buffer), "%s::%s (want %d, dist %d) ", player_name(pplayer), advance_name_by_player(pplayer, advance_number(padvance)), pplayer->ai_common.tech_want[advance_index(padvance)], num_unknown_techs_for_goal(pplayer, advance_number(padvance))); va_start(ap, msg); fc_vsnprintf(buffer2, sizeof(buffer2), msg, ap); va_end(ap); cat_snprintf(buffer, sizeof(buffer), "%s", buffer2); if (notify) { notify_conn(NULL, NULL, E_AI_DEBUG, ftc_log, "%s", buffer); } do_log(file, function, line, FALSE, level, "%s", buffer); }
/************************************************************************** Log player tech messages. **************************************************************************/ void TECH_LOG(int level, const struct player *pplayer, struct advance *padvance, const char *msg, ...) { char buffer[500]; char buffer2[500]; va_list ap; int minlevel = MIN(LOGLEVEL_TECH, level); if (!valid_advance(padvance) || advance_by_number(A_NONE) == padvance) { return; } if (BV_ISSET(pplayer->debug, PLAYER_DEBUG_TECH)) { minlevel = LOG_TEST; } else if (minlevel > fc_log_level) { return; } my_snprintf(buffer, sizeof(buffer), "%s::%s (want %d, dist %d) ", player_name(pplayer), advance_name_by_player(pplayer, advance_number(padvance)), pplayer->ai_data.tech_want[advance_index(padvance)], num_unknown_techs_for_goal(pplayer, advance_number(padvance))); va_start(ap, msg); my_vsnprintf(buffer2, sizeof(buffer2), msg, ap); va_end(ap); cat_snprintf(buffer, sizeof(buffer), "%s", buffer2); if (BV_ISSET(pplayer->debug, PLAYER_DEBUG_TECH)) { notify_conn(NULL, NULL, E_AI_DEBUG, ftc_log, "%s", buffer); } freelog(minlevel, "%s", buffer); }
void *rbuf_pop_front(struct ringbuffer *rb, void *pop_value, os_size_t len) { haddock_assert(rb && rb->buf && pop_value && len == rb->hdr.blk_size); if (rb->hdr.len == 0) return NULL; haddock_memcpy(pop_value, (char *)rb->buf + len * rb->hdr.start, len); advance_index(rb->hdr.start, rb->hdr.capacity); rb->hdr.len -= 1; return pop_value; }
os_int8 rbuf_push_back(struct ringbuffer *rb, void *data, os_size_t len) { haddock_assert(rb && rb->buf && data && len == rb->hdr.blk_size); if (rb->hdr.len == rb->hdr.capacity) return -1; haddock_memcpy((char *)rb->buf + len * rb->hdr.end, data, len); advance_index(rb->hdr.end, rb->hdr.capacity); rb->hdr.len += 1; return 0; }