-
Notifications
You must be signed in to change notification settings - Fork 1
/
adtdarray.pas.mcp
69 lines (53 loc) · 2.28 KB
/
adtdarray.pas.mcp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
(* This file is a part of the PascalAdt library, which provides
commonly used algorithms and data structures for the FPC and Delphi
compilers.
Copyright (C) 2004, 2005 by Lukasz Czajka
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public License
as published by the Free Software Foundation; either version 2.1 of
the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA *)
unit adtdarray;
{ This unit handles low-level memory management via TDynamicArray. For
all but the most performance-critical parts of code @<TArray> or
@<TCircularDeque> are more appropriate. }
{
}
{ Note: the distinction between normal, const and var parameters is
important semantically. Normal parameters mean that the pointer to
the array cannot be changed, but the contents of the array can (and
probably will) change. Const parameters mean that both the array
pointer and the contents will not change, and var parameters imply
that both may, and probably will, change. }
interface
uses
adtfunct, adtmem;
&# we need the following specializations even if not chosen by the user
&define MCP_POINTER
&undefine MCP_NO_INTEGER
&include adtdefs.inc
const
{ The factor by which the Size of the array is grown when calling
ArrayExpand }
daGrowRate = 2;
{ when the capacity of TDynamicArray reaches this value it is no
longer increased by the factor of daGrowRate, but each time by
this amount }
daMaxMemChunk = 256 * 1024;
{ The same as daGrowRate, but applies to TDynamicBuffer. }
bufGrowRate = daGrowRate;
{ The same as daMaxMemChunk, but applies to TDynamicBuffer. }
bufMaxMemChunk = daMaxMemChunk;
&_mcp_generic_include(adtdarray.i)
implementation
uses
adtutils, adtmsg, SysUtils;
&_mcp_generic_include(adtdarray_impl.i)
end.