KHtml

render_arena.h
1 /*
2  * Copyright (C) 2002 Apple Computer, Inc.
3  * Copyright (C) 2003 Dirk Mueller ([email protected])
4  *
5  * Portions are Copyright (C) 1998 Netscape Communications Corporation.
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  *
21  * Alternatively, the contents of this file may be used under the terms
22  * of either the Mozilla Public License Version 1.1, found at
23  * http://www.mozilla.org/MPL/ (the "MPL") or the GNU General Public
24  * License Version 2.0, found at http://www.fsf.org/copyleft/gpl.html
25  * (the "GPL"), in which case the provisions of the MPL or the GPL are
26  * applicable instead of those above. If you wish to allow use of your
27  * version of this file only under the terms of one of those two
28  * licenses (the MPL or the GPL) and not to allow others to use your
29  * version of this file under the LGPL, indicate your decision by
30  * deletingthe provisions above and replace them with the notice and
31  * other provisions required by the MPL or the GPL, as the case may be.
32  * If you do not delete the provisions above, a recipient may use your
33  * version of this file under any of the LGPL, the MPL or the GPL.
34  */
35 
36 #ifndef RENDERARENA_H
37 #define RENDERARENA_H
38 
39 #define KHTML_USE_ARENA_ALLOCATOR
40 
41 #include "misc/arena.h"
42 #include "misc/shared.h"
43 
44 #include <stdlib.h>
45 
46 namespace khtml
47 {
48 
49 #define KHTML_MAX_RECYCLED_SIZE 400
50 #define KHTML_ROUNDUP(x,y) ((((x)+((y)-1))/(y))*(y))
51 
52 class RenderArena: public Shared<RenderArena>
53 {
54 public:
55  RenderArena(unsigned int arenaSize = 4096);
56  ~RenderArena();
57 
58  // Memory management functions
59  void *allocate(size_t size);
60  void free(size_t size, void *ptr);
61 
62 private:
63  // Underlying arena pool
64  ArenaPool m_pool;
65 
66  // The recycler array is sparse with the indices being multiples of 4,
67  // i.e., 0, 4, 8, 12, 16, 20, ...
68  void *m_recyclers[KHTML_MAX_RECYCLED_SIZE >> 2];
69 };
70 
71 } // namespace
72 
73 #endif
74 
This file is part of the HTML rendering engine for KDE.
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Tue Oct 26 2021 22:48:06 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.