X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=inline;f=src%2Flibpspp%2Fdeque.c;h=a511cf3ad0e2a10b860dfe65896dc03ef6ab7418;hb=4e8bfea364b7a1d2d496e14dfefc9dfeefff8d11;hp=3143ce412b9631f8f6af5e708378c0d72718680d;hpb=84d8b182e81aea6cd7422611888192bcc1ac6980;p=pspp diff --git a/src/libpspp/deque.c b/src/libpspp/deque.c index 3143ce412b..a511cf3ad0 100644 --- a/src/libpspp/deque.c +++ b/src/libpspp/deque.c @@ -1,28 +1,27 @@ -/* PSPP - computes sample statistics. - Copyright (C) 2007 Free Software Foundation, Inc. +/* PSPP - a program for statistical analysis. + Copyright (C) 2007, 2011 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - This program 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 - General Public License for more details. + This program 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 General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. */ + along with this program. If not, see . */ #include -#include +#include "libpspp/deque.h" + #include -#include "minmax.h" -#include "xalloc.h" +#include "gl/minmax.h" +#include "gl/xalloc.h" /* Initializes DEQUE as an empty deque with an initial capacity of zero. */ @@ -42,12 +41,12 @@ deque_init (struct deque *deque, size_t capacity, size_t elem_size) { void *data = NULL; deque_init_null (deque); - if (capacity > 0) + if (capacity > 0) { deque->capacity = 1; while (deque->capacity < capacity) deque->capacity <<= 1; - data = xnmalloc (deque->capacity, elem_size); + data = xnmalloc (deque->capacity, elem_size); } return data; } @@ -61,15 +60,15 @@ deque_expand (struct deque *deque, void *old_data_, size_t elem_size) size_t new_capacity = MAX (4, old_capacity * 2); char *old_data = old_data_; char *new_data = xnmalloc (new_capacity, elem_size); - size_t idx, copy_cnt; - for (idx = deque->back; idx != deque->front; idx += copy_cnt) + size_t idx, n_copy; + for (idx = deque->back; idx != deque->front; idx += n_copy) { size_t can_copy = old_capacity - (idx & (old_capacity - 1)); size_t want_copy = deque->front - idx; - copy_cnt = MIN (can_copy, want_copy); + n_copy = MIN (can_copy, want_copy); memcpy (new_data + (idx & (new_capacity - 1)) * elem_size, old_data + (idx & (old_capacity - 1)) * elem_size, - copy_cnt * elem_size); + n_copy * elem_size); } deque->capacity = new_capacity; free (old_data);