ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

bufpool.cc
Go to the documentation of this file.
00001 /*
00002 ** License Applicability. Except to the extent portions of this file are
00003 ** made subject to an alternative license as permitted in the SGI Free
00004 ** Software License B, Version 1.1 (the "License"), the contents of this
00005 ** file are subject only to the provisions of the License. You may not use
00006 ** this file except in compliance with the License. You may obtain a copy
00007 ** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
00008 ** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
00009 **
00010 ** http://oss.sgi.com/projects/FreeB
00011 **
00012 ** Note that, as provided in the License, the Software is distributed on an
00013 ** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
00014 ** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
00015 ** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
00016 ** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
00017 **
00018 ** Original Code. The Original Code is: OpenGL Sample Implementation,
00019 ** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
00020 ** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
00021 ** Copyright in any portions created by third parties is as indicated
00022 ** elsewhere herein. All Rights Reserved.
00023 **
00024 ** Additional Notice Provisions: The application programming interfaces
00025 ** established by SGI in conjunction with the Original Code are The
00026 ** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
00027 ** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
00028 ** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
00029 ** Window System(R) (Version 1.3), released October 19, 1998. This software
00030 ** was created using the OpenGL(R) version 1.2.1 Sample Implementation
00031 ** published by SGI, but has not been independently verified as being
00032 ** compliant with the OpenGL(R) version 1.2.1 Specification.
00033 */
00034 
00035 /*
00036  *  bufpool.c++
00037  *
00038  * $Date: 2009-08-30 15:53:16 +0000 (Sun, 30 Aug 2009) $ $Revision: 1.1 $
00039  * $Header: /cygdrive/c/RCVS/CVS/ReactOS/reactos/lib/glu32/libnurbs/internals/bufpool.cc,v 1.1 2004/02/02 16:39:11 navaraf Exp $
00040  */
00041 
00042 #include "glimports.h"
00043 #include "myassert.h"
00044 #include "bufpool.h"
00045 
00046 
00047 /*-----------------------------------------------------------------------------
00048  * Pool - allocate a new pool of buffers
00049  *-----------------------------------------------------------------------------
00050  */
00051 Pool::Pool( int _buffersize, int initpoolsize, const char *n )
00052 {
00053     buffersize= (_buffersize < (int)sizeof(Buffer)) ? sizeof(Buffer) : _buffersize;
00054     initsize    = initpoolsize * buffersize;
00055     nextsize    = initsize;
00056     name    = n;
00057     magic   = is_allocated;
00058     nextblock   = 0;
00059     curblock    = 0;
00060     freelist    = 0;
00061     nextfree    = 0;
00062 }
00063 
00064 /*-----------------------------------------------------------------------------
00065  * ~Pool - free a pool of buffers and the pool itself
00066  *-----------------------------------------------------------------------------
00067  */
00068 
00069 Pool::~Pool( void )
00070 {
00071     assert( (this != 0) && (magic == is_allocated) );
00072 
00073     while( nextblock ) {
00074     delete [] blocklist[--nextblock];
00075         blocklist[nextblock] = 0;
00076     }
00077     magic = is_free;
00078 }
00079 
00080 
00081 void Pool::grow( void )
00082 {
00083     assert( (this != 0) && (magic == is_allocated) );
00084     curblock = new char[nextsize];
00085     blocklist[nextblock++] = curblock;
00086     nextfree = nextsize;
00087     nextsize *= 2;
00088 }
00089 
00090 /*-----------------------------------------------------------------------------
00091  * Pool::clear - free buffers associated with pool but keep pool 
00092  *-----------------------------------------------------------------------------
00093  */
00094 
00095 void 
00096 Pool::clear( void )
00097 {
00098     assert( (this != 0) && (magic == is_allocated) );
00099 
00100     while( nextblock ) {
00101     delete [] blocklist[--nextblock];
00102     blocklist[nextblock] = 0;
00103     }
00104     curblock    = 0;
00105     freelist    = 0;
00106     nextfree    = 0;
00107     if( nextsize > initsize )
00108         nextsize /= 2;
00109 }

Generated on Sun May 27 2012 04:23:39 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.