pool_isfull

Abstract

Returns 1 if the pool is full

Description

A pool is actually a stack of numbers, based on an array.

The pool_ opcodes implement a stack of numbers. This is useful when assigning ids to resources, like assigning fractional numbers to instrument instances to access them individually, assigning bus indexes, etc. To get a value, call pool_pop and when finished using it the value is returned to the pool with pool_push.

pool_isfull returns 1 if the pool is full (its size == its capacity) and the pool can't be grown.

Note

Use pool_size(ipool) == 0 to query if the pool is empty

Note

To differenciate between the opcode being called at init- or at performance time, use the functional style pool_isfull:i(ipool) or pool_isfull:k(ipool)

Syntax

i_isfull pool_isfull ipool
k_isfull pool_isfull ipool

Arguments

  • ipool: the pool to push the value to

Output

  • i_isfull / k_isfull: 1 if the pool is full, 0 otherwise

Execution Time

  • Init
  • Performance

Examples

<CsoundSynthesizer>
<CsOptions>
--nosound
</CsOptions>

<CsInstruments>

/*
   Example file for pool_isfull

   pool_isfull returns 1 if the pool is full, 0 otherwise

   If the pool was created
   The size of a pool is the number of items actually inside
   the pool (see also pool_capacity)

*/

instr 1
  ; create a pull of fixed size, filled with the integers 0 to 9
  ipool pool_gen 10
  i1 pool_pop ipool
  prints "pool is full? %d\n", pool_isfull:i(ipool)
  pool_push ipool, i1

  if pool_isfull:i(ipool) == 1 then
    prints "pool is full!!\n"
  endif
  ; this should fail
  pool_push ipool, 10
  turnoff
endin

</CsInstruments>

<CsScore>

i1 0 1

</CsScore>
</CsoundSynthesizer>

See also

Credits

Eduardo Moguillansky, 2019