adjusts field of sequence. It determines how much the sequence grows if there are no free space inside the sequence buffers */
| 400 | /* adjusts <delta_elems> field of sequence. It determines how much the sequence |
| 401 | grows if there are no free space inside the sequence buffers */ |
| 402 | CV_IMPL void |
| 403 | cvSetSeqBlockSize( CvSeq *seq, int delta_elements ) |
| 404 | { |
| 405 | int elem_size; |
| 406 | int useful_block_size; |
| 407 | |
| 408 | if( !seq || !seq->storage ) |
| 409 | CV_Error( CV_StsNullPtr, "" ); |
| 410 | if( delta_elements < 0 ) |
| 411 | CV_Error( CV_StsOutOfRange, "" ); |
| 412 | |
| 413 | useful_block_size = cvAlignLeft(seq->storage->block_size - sizeof(CvMemBlock) - |
| 414 | sizeof(CvSeqBlock), CV_STRUCT_ALIGN); |
| 415 | elem_size = seq->elem_size; |
| 416 | |
| 417 | if( delta_elements == 0 ) |
| 418 | { |
| 419 | delta_elements = (1 << 10) / elem_size; |
| 420 | delta_elements = MAX( delta_elements, 1 ); |
| 421 | } |
| 422 | if( delta_elements * elem_size > useful_block_size ) |
| 423 | { |
| 424 | delta_elements = useful_block_size / elem_size; |
| 425 | if( delta_elements == 0 ) |
| 426 | CV_Error( CV_StsOutOfRange, "Storage block size is too small " |
| 427 | "to fit the sequence elements" ); |
| 428 | } |
| 429 | |
| 430 | seq->delta_elems = delta_elements; |
| 431 | } |
| 432 | |
| 433 | |
| 434 | /* Find a sequence element by its index: */ |
no test coverage detected