Siena Fast Forwarding documentation (v. 1.0.0)

Main Page   Class Hierarchy   Compound List   File List   Compound Members   Examples  

ft_allocator.h

00001 // -*- C++ -*-
00002 //
00003 //  This file is part of Siena, a wide-area event notification system.
00004 //  See http://www.cs.colorado.edu/serl/siena/
00005 //
00006 //  Authors: Antonio Carzaniga <[email protected]>
00007 //  See the file AUTHORS for full details. 
00008 //
00009 //  Copyright (C) 2001-2002 University of Colorado
00010 //
00011 //  This program is free software; you can redistribute it and/or
00012 //  modify it under the terms of the GNU General Public License
00013 //  as published by the Free Software Foundation; either version 2
00014 //  of the License, or (at your option) any later version.
00015 //
00016 //  This program is distributed in the hope that it will be useful,
00017 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00018 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019 //  GNU General Public License for more details.
00020 //
00021 //  You should have received a copy of the GNU General Public License
00022 //  along with this program; if not, write to the Free Software
00023 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307,
00024 //  USA, or send email to [email protected].
00025 //
00026 //
00027 // $Id: ft_allocator.h,v 1.2 2002/09/30 04:51:48 carzanig Exp $
00028 //
00029 #ifndef FT_ALLOCATOR_H
00030 #define FT_ALLOCATOR_H
00031 
00032 #include <cstddef>
00033 
00034 class FTAllocator;
00035 
00037 extern void *           operator new (size_t s, FTAllocator &);
00043 extern void             operator delete (void *, size_t s, FTAllocator &);
00045 extern void *           operator new[] (size_t, FTAllocator &);
00051 extern void             operator delete[] (void *, size_t s, FTAllocator &);
00052 
00062 class FTAllocator {
00063 public:
00064     
00066     void *              allocate(size_t s);
00068     void                clear();
00070     size_t              size() const;
00071 
00072                         FTAllocator(size_t bs);
00073 
00074 private:
00076     struct block {
00077         block * next;
00078         char    bytes[0];
00079     };
00080 
00082     const size_t        BSize;
00083 
00085     block *             blist;
00086 
00088     size_t              free_pos;
00089 
00091     size_t              bcount;
00092 };
00093 
00094 #ifdef HAVE_INLINE
00095 #include "ft_allocator.icc"
00096 #endif
00097 
00098 #endif

Copyright © 2001-2002 University of Colorado.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". This documentation is authored and maintained by Antonio Carzaniga