-/****************************************************************************/
-/****************************************************************************/
-/****************************************************************************/
-/****************************************************************************/
-
-typedef struct buffer_out_s
-{
- int i_buffer_size;
- block_t *p_block;
-} buffer_out_t;
-
-static void bo_Init( buffer_out_t *p_bo, int i_size )
-{
- p_bo->p_block = block_Alloc( i_size );
- p_bo->p_block->i_buffer = 0;
- p_bo->i_buffer_size = i_size;
-}
-
-static void bo_SetByte( buffer_out_t *p_bo, int i_offset, uint8_t i )
-{
- if( i_offset >= p_bo->i_buffer_size )
- {
- int i_growth = HDR_BASE_SIZE;
- while( i_offset >= p_bo->i_buffer_size + i_growth )
- {
- i_growth += HDR_BASE_SIZE;
- }
- int i = p_bo->p_block->i_buffer; /* Realloc would set payload size == buffer size */
- p_bo->p_block = block_Realloc( p_bo->p_block, 0, p_bo->i_buffer_size + i_growth );
- p_bo->p_block->i_buffer = i;
- p_bo->i_buffer_size += i_growth;
- }
- p_bo->p_block->p_buffer[i_offset] = i;
-}
-static void bo_AddByte( buffer_out_t *p_bo, uint8_t i )
-{
- bo_SetByte( p_bo, p_bo->p_block->i_buffer, i );
- p_bo->p_block->i_buffer++;
-}
-static void bo_SetWordLE( buffer_out_t *p_bo, int i_offset, uint16_t i )
-{
- bo_SetByte( p_bo, i_offset, i &0xff );
- bo_SetByte( p_bo, i_offset + 1, ( ( i >> 8) &0xff ) );
-}
-static void bo_AddWordLE( buffer_out_t *p_bo, uint16_t i )
-{
- bo_AddByte( p_bo, i &0xff );
- bo_AddByte( p_bo, ( ( i >> 8) &0xff ) );
-}
-static void bo_AddWordBE( buffer_out_t *p_bo, uint16_t i )
-{
- bo_AddByte( p_bo, ( ( i >> 8) &0xff ) );
- bo_AddByte( p_bo, i &0xff );
-}
-static void bo_SetDWordLE( buffer_out_t *p_bo, int i_offset, uint32_t i )
-{
- bo_SetWordLE( p_bo, i_offset, i &0xffff );
- bo_SetWordLE( p_bo, i_offset + 2, ( ( i >> 16) &0xffff ) );
-}
-static void bo_AddDWordLE( buffer_out_t *p_bo, uint32_t i )
-{
- bo_AddWordLE( p_bo, i &0xffff );
- bo_AddWordLE( p_bo, ( ( i >> 16) &0xffff ) );
-}
-static void bo_AddDWordBE( buffer_out_t *p_bo, uint32_t i )
-{
- bo_AddWordBE( p_bo, ( ( i >> 16) &0xffff ) );
- bo_AddWordBE( p_bo, i &0xffff );
-}
-#if 0
-static void bo_AddLWordLE( buffer_out_t *p_bo, uint64_t i )
-{
- bo_AddDWordLE( p_bo, i &0xffffffff );
- bo_AddDWordLE( p_bo, ( ( i >> 32) &0xffffffff ) );
-}
-static void bo_AddLWordBE( buffer_out_t *p_bo, uint64_t i )
-{
- bo_AddDWordBE( p_bo, ( ( i >> 32) &0xffffffff ) );
- bo_AddDWordBE( p_bo, i &0xffffffff );
-}
-#endif
-
-static void bo_AddFCC( buffer_out_t *p_bo, const char *fcc )
-{
- bo_AddByte( p_bo, fcc[0] );
- bo_AddByte( p_bo, fcc[1] );
- bo_AddByte( p_bo, fcc[2] );
- bo_AddByte( p_bo, fcc[3] );
-}
-
-static void bo_AddMem( buffer_out_t *p_bo, int i_size, uint8_t *p_mem )
-{
- int i;
-
- for( i = 0; i < i_size; i++ )
- {
- bo_AddByte( p_bo, p_mem[i] );
- }
-}
-