summaryrefslogtreecommitdiff
path: root/manuals/chickadee/Array-Lists.html
blob: ca30f169e7d507b7ae48682ac0937d8599ea17c8 (plain)
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!--  Copyright (C) 2017-2023  David Thompson dthompson2@worcester.edu

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
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".

A copy of the license is also available from the Free Software
Foundation Web site at http://www.gnu.org/licenses/fdl.html.


* Chickadee: (chickadee).     Game programming toolkit for Guile.

The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
  -->
<!--  Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/  -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Array Lists (The Chickadee Game Toolkit)</title>

<meta name="description" content="Array Lists (The Chickadee Game Toolkit)" />
<meta name="keywords" content="Array Lists (The Chickadee Game Toolkit)" />
<meta name="resource-type" content="document" />
<meta name="distribution" content="global" />
<meta name="Generator" content="makeinfo" />
<link href="index.html" rel="start" title="Top" />
<link href="Index.html" rel="index" title="Index" />
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" />
<link href="Data-Structures.html" rel="up" title="Data Structures" />
<link href="Queues.html" rel="next" title="Queues" />
<link href="Data-Structures.html" rel="prev" title="Data Structures" />
<style type="text/css">
&lt;!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
@media (min-width: 1140px) {
    body {
        margin-left: 14rem;
        margin-right: 4rem;
        max-width: 52rem;
    }
}

@media (min-width: 800px) and (max-width: 1140px) {
    body {
        margin-left: 6rem;
        margin-right: 4rem;
        max-width: 52rem;
    }
}

@media (max-width: 800px) {
    body {
        margin: 1rem;
    }
}

--&gt;
</style>
<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" />


</head>

<body lang="en">
<span id="Array-Lists"></span><div class="header">
<p>
Next: <a href="Queues.html" accesskey="n" rel="next">Queues</a>, Up: <a href="Data-Structures.html" accesskey="u" rel="up">Data Structures</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr />
<span id="Array-Lists-1"></span><h4 class="subsection">5.6.1 Array Lists</h4>

<p>The <code>(chickadee data array-list)</code> module provides an array/vector
that dynamically expands to hold all of the data that is added to it.
It is named after the <code>ArrayList</code> class in Java.
</p>
<p>In addition to being used as a dynamic vector, it can also be used as
a stack via the <code>array-list-push!</code> and <var>array-list-pop!</var>
procedures.
</p>
<dl>
<dt id="index-make_002darray_002dlist">Procedure: <strong>make-array-list</strong> <em>[initial-capacity]</em></dt>
<dd><p>Return a new empty array list with an initial capacity of
<var>initial-capacity</var>, or 32 by default.
</p></dd></dl>

<dl>
<dt id="index-array_002dlist">Procedure: <strong>array-list</strong> <em>items ...</em></dt>
<dd><p>Return a new array list with <var>items</var> in it.
</p></dd></dl>

<dl>
<dt id="index-array_002dlist_003f">Procedure: <strong>array-list?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is an array list.
</p></dd></dl>

<dl>
<dt id="index-array_002dlist_002dempty_003f">Procedure: <strong>array-list-empty?</strong> <em>array-list</em></dt>
<dd><p>Return <code>#t</code> if <var>array-list</var> is empty.
</p></dd></dl>

<dl>
<dt id="index-array_002dlist_002dsize">Procedure: <strong>array-list-size</strong> <em>array-list</em></dt>
<dd><p>Return the current size of <var>array-list</var>.
</p></dd></dl>

<dl>
<dt id="index-array_002dlist_002dref">Procedure: <strong>array-list-ref</strong> <em>array-list i</em></dt>
<dd><p>Return the item in <var>array-list</var> at index <var>i</var>.
</p></dd></dl>

<dl>
<dt id="index-array_002dlist_002dset_0021">Procedure: <strong>array-list-set!</strong> <em>array-list i value</em></dt>
<dd><p>Set the value in <var>array-list</var> at index <var>i</var> to <var>value</var>.
</p></dd></dl>

<dl>
<dt id="index-array_002dlist_002dpush_0021">Procedure: <strong>array-list-push!</strong> <em>array-list item</em></dt>
<dd><p>Append <var>item</var> to <var>array-list</var>.
</p></dd></dl>

<dl>
<dt id="index-array_002dlist_002dpop_0021">Procedure: <strong>array-list-pop!</strong> <em>array-list</em></dt>
<dd><p>Remove and return the last object in <var>array-list</var>.
</p></dd></dl>

<dl>
<dt id="index-array_002dlist_002ddelete_0021">Procedure: <strong>array-list-delete!</strong> <em>array-list item [#:equal? equal?] [#:fast? #f]</em></dt>
<dd><p>Delete <var>item</var> from <var>array-list</var>.  Use <var>equal?</var> as the
equivalence predicate, which defaults to Guile&rsquo;s <code>equal?</code>
procedure.  By default, deletion preserves the order of the array, but
takes linear time in the worst case.  If <var>fast?</var> is <code>#t</code> then
<var>item</var> will deleted in constant time, but order is not preserved.
</p></dd></dl>

<dl>
<dt id="index-array_002dlist_002dclear_0021">Procedure: <strong>array-list-clear!</strong> <em>array-list</em></dt>
<dd><p>Remove all items from <var>array-list</var>.
</p></dd></dl>

<dl>
<dt id="index-array_002dlist_002dfor_002deach">Procedure: <strong>array-list-for-each</strong> <em>proc array-list</em></dt>
<dd><p>Apply <var>proc</var> with each item in <var>array-list</var>.
</p></dd></dl>

<dl>
<dt id="index-array_002dlist_002dfold">Procedure: <strong>array-list-fold</strong> <em>proc init array-list</em></dt>
<dd><p>Apply <var>proc</var> to all items in <var>array-list</var> to build a result and
return that result.  <var>init</var> is the initial result.  If there are
no objects in the vicinity of <var>rect</var>, just <var>init</var> is returned.
</p></dd></dl>

<hr />
<div class="header">
<p>
Next: <a href="Queues.html" accesskey="n" rel="next">Queues</a>, Up: <a href="Data-Structures.html" accesskey="u" rel="up">Data Structures</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>