diff options
author | dan miller | 2007-10-19 05:20:48 +0000 |
---|---|---|
committer | dan miller | 2007-10-19 05:20:48 +0000 |
commit | d48ea5bb797037069d641da41da0f195f0124491 (patch) | |
tree | 40ff433d94859d629aac933d5ec73b382f62ba1a /libraries/ode-0.9/ode/src/obstack.h | |
parent | dont ask (diff) | |
download | opensim-SC-d48ea5bb797037069d641da41da0f195f0124491.zip opensim-SC-d48ea5bb797037069d641da41da0f195f0124491.tar.gz opensim-SC-d48ea5bb797037069d641da41da0f195f0124491.tar.bz2 opensim-SC-d48ea5bb797037069d641da41da0f195f0124491.tar.xz |
one more for the gipper
Diffstat (limited to 'libraries/ode-0.9/ode/src/obstack.h')
-rw-r--r-- | libraries/ode-0.9/ode/src/obstack.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/libraries/ode-0.9/ode/src/obstack.h b/libraries/ode-0.9/ode/src/obstack.h new file mode 100644 index 0000000..b5f715b --- /dev/null +++ b/libraries/ode-0.9/ode/src/obstack.h | |||
@@ -0,0 +1,68 @@ | |||
1 | /************************************************************************* | ||
2 | * * | ||
3 | * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. * | ||
4 | * All rights reserved. Email: russ@q12.org Web: www.q12.org * | ||
5 | * * | ||
6 | * This library is free software; you can redistribute it and/or * | ||
7 | * modify it under the terms of EITHER: * | ||
8 | * (1) The GNU Lesser General Public License as published by the Free * | ||
9 | * Software Foundation; either version 2.1 of the License, or (at * | ||
10 | * your option) any later version. The text of the GNU Lesser * | ||
11 | * General Public License is included with this library in the * | ||
12 | * file LICENSE.TXT. * | ||
13 | * (2) The BSD-style license that is included with this library in * | ||
14 | * the file LICENSE-BSD.TXT. * | ||
15 | * * | ||
16 | * This library is distributed in the hope that it will be useful, * | ||
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * | ||
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files * | ||
19 | * LICENSE.TXT and LICENSE-BSD.TXT for more details. * | ||
20 | * * | ||
21 | *************************************************************************/ | ||
22 | |||
23 | #ifndef _ODE_OBSTACK_H_ | ||
24 | #define _ODE_OBSTACK_H_ | ||
25 | |||
26 | #include "objects.h" | ||
27 | |||
28 | // each obstack Arena pointer points to a block of this many bytes | ||
29 | #define dOBSTACK_ARENA_SIZE 16384 | ||
30 | |||
31 | |||
32 | struct dObStack : public dBase { | ||
33 | struct Arena { | ||
34 | Arena *next; // next arena in linked list | ||
35 | size_t used; // total number of bytes used in this arena, counting | ||
36 | }; // this header | ||
37 | |||
38 | Arena *first; // head of the arena linked list. 0 if no arenas yet | ||
39 | Arena *last; // arena where blocks are currently being allocated | ||
40 | |||
41 | // used for iterator | ||
42 | Arena *current_arena; | ||
43 | size_t current_ofs; | ||
44 | |||
45 | dObStack(); | ||
46 | ~dObStack(); | ||
47 | |||
48 | void *alloc (int num_bytes); | ||
49 | // allocate a block in the last arena, allocating a new arena if necessary. | ||
50 | // it is a runtime error if num_bytes is larger than the arena size. | ||
51 | |||
52 | void freeAll(); | ||
53 | // free all blocks in all arenas. this does not deallocate the arenas | ||
54 | // themselves, so future alloc()s will reuse them. | ||
55 | |||
56 | void *rewind(); | ||
57 | // rewind the obstack iterator, and return the address of the first | ||
58 | // allocated block. return 0 if there are no allocated blocks. | ||
59 | |||
60 | void *next (int num_bytes); | ||
61 | // return the address of the next allocated block. 'num_bytes' is the size | ||
62 | // of the previous block. this returns null if there are no more arenas. | ||
63 | // the sequence of 'num_bytes' parameters passed to next() during a | ||
64 | // traversal of the list must exactly match the parameters passed to alloc(). | ||
65 | }; | ||
66 | |||
67 | |||
68 | #endif | ||