void powers_queue_copy (PowersQueue_t *dst, PowersQueue_t *src) { if (is_empty_powers_queue (src) == true) { dst->Start = 0u ; dst->End = 0u ; dst->Size = 0u ; return ; } if (dst->Capacity < src->Capacity || dst->Memory == NULL) { powers_queue_destroy (dst) ; powers_queue_init (dst) ; powers_queue_build (dst, src->Capacity) ; } else { dst->Start = 0u ; dst->End = 0u ; dst->Size = 0u ; } Quantity_t tocopy = src->Size ; Quantity_t index = src->Start ; while (tocopy-- > 0) { put_into_powers_queue (dst, src->Memory [index]) ; index = (index + 1) % src->Capacity ; } }
void powers_queue_print ( PowersQueue_t *pqueue, FILE *stream, String_t prefix ) { fprintf (stream, "%s ", prefix) ; if (is_empty_powers_queue (pqueue)) return ; Quantity_t toprint = pqueue->Size ; Quantity_t index = pqueue->Start ; while (toprint-- > 1) { fprintf (stream, "%.3f, ", pqueue->Memory [index]) ; index = (index + 1) % pqueue->Capacity ; } fprintf (stream, "%.3f ", pqueue->Memory [index]) ; }
Error_t insert_power_values_floorplan_element ( FloorplanElement_t *flpel, PowersQueue_t *pvalues ) { if (is_empty_powers_queue(pvalues) == true) return TDICE_FAILURE ; put_into_powers_queue (flpel->PowerValues, get_from_powers_queue (pvalues)); return TDICE_SUCCESS ; }
Power_t get_from_powers_queue (PowersQueue_t *pqueue) { if (pqueue->Memory == NULL) { fprintf (stderr, "ERROR: get from not-built powers queue\n") ; return 0.0 ; } if ( is_empty_powers_queue(pqueue) ) { fprintf (stderr, "ERROR: get from empty power queue\n") ; return 0.0 ; } Power_t power = pqueue->Memory [pqueue->Start] ; pqueue->Start = (pqueue->Start + 1) % pqueue->Capacity ; pqueue->Size-- ; return power ; }