X *AddUninit() { for( uiw frame = 0; frame < _o_frames.Size(); ++frame ) { if( _o_frames[ frame ].used < t_frameSize ) { for( uiw index = 0; ; ++index ) { ASSUME( index < t_frameSize ); if( _IsFree( _o_frames[ frame ].p_mem + index ) ) { ++_o_frames[ frame ].used; return &_o_frames[ frame ].p_mem[ index ]; } } } } _o_frames.Resize( _o_frames.Size() + 1 ); ++_o_frames.Back().used; return &_o_frames.Back().p_mem[ 0 ]; }
CFramedStore() : _o_frames( t_initialFrames ) { _o_frames.Resize( t_initialFrames ); }
void ClearToInitial() { Clear(); _o_frames.Resize( t_initialFrames ); }