Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/**************************************************************************
* * * Copyright (C) 1992, Silicon Graphics, Inc. * * * * These coded instructions, statements, and computer programs contain * * unpublished proprietary information of Silicon Graphics, Inc., and * * are protected by Federal copyright law. They may not be disclosed * * to third parties or copied or duplicated in any form, in whole or * * in part, without the prior written consent of Silicon Graphics, Inc. * * * **************************************************************************/
/*
* bufpool.c++ - $Revision: 1.4 $ * Derrick Burns - 1991 */
#include "glimport.h"
#include "myassert.h"
#include "bufpool.h"
/*-----------------------------------------------------------------------------
* Pool - allocate a new pool of buffers *----------------------------------------------------------------------------- */ Pool::Pool( int _buffersize, int initpoolsize, char *n ) { buffersize= (_buffersize < sizeof(Buffer)) ? sizeof(Buffer) : _buffersize; initsize = initpoolsize * buffersize; nextsize = initsize; name = n; magic = is_allocated; nextblock = 0; curblock = 0; freelist = 0; nextfree = 0; }
/*-----------------------------------------------------------------------------
* ~Pool - free a pool of buffers and the pool itself *----------------------------------------------------------------------------- */
Pool::~Pool( void ) { assert( (this != 0) && (magic == is_allocated) );
while( nextblock ) { delete blocklist[--nextblock]; blocklist[nextblock] = 0; } magic = is_free; }
void Pool::grow( void ) { assert( (this != 0) && (magic == is_allocated) ); curblock = new char[nextsize]; blocklist[nextblock++] = curblock; nextfree = nextsize; nextsize *= 2; }
/*-----------------------------------------------------------------------------
* Pool::clear - free buffers associated with pool but keep pool *----------------------------------------------------------------------------- */
void Pool::clear( void ) { assert( (this != 0) && (magic == is_allocated) );
while( nextblock ) { delete blocklist[--nextblock]; blocklist[nextblock] = 0; } curblock = 0; freelist = 0; nextfree = 0; if( nextsize > initsize ) nextsize /= 2; }
|