예제 #1
0
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 ;
    }
}
예제 #2
0
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]) ;
}
예제 #3
0
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 ;
}
예제 #4
0
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 ;
}