|
13 | 13 | %%% |
14 | 14 | %%% BSD LICENSE |
15 | 15 | %%% |
16 | | -%%% Copyright (c) 2011-2014, Michael Truog <mjtruog at gmail dot com> |
| 16 | +%%% Copyright (c) 2011-2015, Michael Truog <mjtruog at gmail dot com> |
17 | 17 | %%% All rights reserved. |
18 | 18 | %%% |
19 | 19 | %%% Redistribution and use in source and binary forms, with or without |
|
63 | 63 | %%% under the License. |
64 | 64 | %%% |
65 | 65 | %%% @author Michael Truog <mjtruog [at] gmail (dot) com> |
66 | | -%%% @copyright 2011-2014 Michael Truog |
67 | | -%%% @version 1.3.3 {@date} {@time} |
| 66 | +%%% @copyright 2011-2015 Michael Truog |
| 67 | +%%% @version 1.5.1 {@date} {@time} |
68 | 68 | %%%------------------------------------------------------------------------ |
69 | 69 |
|
70 | 70 | -module(pqueue4). |
|
92 | 92 | %%% External interface functions |
93 | 93 | %%%------------------------------------------------------------------------ |
94 | 94 |
|
| 95 | +-typepriority()::-128..128. |
95 | 96 | -ifdef(ERLANG_OTP_VERSION_16). |
96 | | --typepqueue4():: |
97 | | - {integer() |'empty',% current priority |
98 | | -integer(),% total size |
| 97 | +-typepqueue4(_):: |
| 98 | + {priority() |'empty',% current priority |
| 99 | +non_neg_integer(),% total size |
99 | 100 | {queue(),queue(),queue(),queue(),queue(),queue(),queue(),queue(), |
100 | 101 | queue(),queue(),queue(),queue(),queue(),queue(),queue(),queue()}, |
101 | 102 | {queue(),queue(),queue(),queue(),queue(),queue(),queue(),queue(), |
|
130 | 131 | {queue(),queue(),queue(),queue(),queue(),queue(),queue(),queue(), |
131 | 132 | queue(),queue(),queue(),queue(),queue(),queue(),queue(),queue()}}. |
132 | 133 | -else. |
133 | | --typepqueue4():: |
134 | | - {integer() |'empty',% current priority |
135 | | -integer(),% total size |
136 | | - {queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
137 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
138 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
139 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue()}, |
140 | | - {queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
141 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
142 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
143 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue()}, |
144 | | - {queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
145 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
146 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
147 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue()}, |
148 | | - {queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
149 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
150 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
151 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue()}, |
152 | | - {queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
153 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
154 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
155 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue()}, |
156 | | - {queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
157 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
158 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
159 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue()}, |
160 | | - {queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
161 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
162 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
163 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue()}, |
164 | | - {queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
165 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
166 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
167 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue()}, |
168 | | -queue:queue(), |
169 | | - {queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
170 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
171 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
172 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue()}, |
173 | | - {queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
174 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
175 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
176 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue()}, |
177 | | - {queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
178 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
179 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
180 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue()}, |
181 | | - {queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
182 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
183 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
184 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue()}, |
185 | | - {queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
186 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
187 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
188 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue()}, |
189 | | - {queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
190 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
191 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
192 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue()}, |
193 | | - {queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
194 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
195 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
196 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue()}, |
197 | | - {queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
198 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
199 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue(), |
200 | | -queue:queue(),queue:queue(),queue:queue(),queue:queue()}}. |
| 134 | +-typepqueue4(T):: |
| 135 | + {priority() |'empty',% current priority |
| 136 | +non_neg_integer(),% total size |
| 137 | + {queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 138 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 139 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 140 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T)}, |
| 141 | + {queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 142 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 143 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 144 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T)}, |
| 145 | + {queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 146 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 147 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 148 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T)}, |
| 149 | + {queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 150 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 151 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 152 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T)}, |
| 153 | + {queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 154 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 155 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 156 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T)}, |
| 157 | + {queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 158 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 159 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 160 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T)}, |
| 161 | + {queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 162 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 163 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 164 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T)}, |
| 165 | + {queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 166 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 167 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 168 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T)}, |
| 169 | +queue:queue(T), |
| 170 | + {queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 171 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 172 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 173 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T)}, |
| 174 | + {queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 175 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 176 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 177 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T)}, |
| 178 | + {queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 179 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 180 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 181 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T)}, |
| 182 | + {queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 183 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 184 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 185 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T)}, |
| 186 | + {queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 187 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 188 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 189 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T)}, |
| 190 | + {queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 191 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 192 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 193 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T)}, |
| 194 | + {queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 195 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 196 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 197 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T)}, |
| 198 | + {queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 199 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 200 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T), |
| 201 | +queue:queue(T),queue:queue(T),queue:queue(T),queue:queue(T)}}. |
201 | 202 | -endif. |
| 203 | +-typepqueue4()::pqueue4(any()). |
| 204 | +-export_type([pqueue4/0,pqueue4/1]). |
202 | 205 |
|
203 | 206 | %%------------------------------------------------------------------------- |
204 | 207 | %% @doc |
@@ -471,7 +474,7 @@ to_list(L, {{value, Value}, Q}) -> |
471 | 474 | %% @end |
472 | 475 | %%------------------------------------------------------------------------- |
473 | 476 |
|
474 | | --specto_plist(pqueue4())->list({integer(),list()}). |
| 477 | +-specto_plist(pqueue4())->list({priority(),list()}). |
475 | 478 |
|
476 | 479 | to_plist(Q)-> |
477 | 480 | to_plist([], [],undefined,pout(Q)). |
|