/* PSPP - a program for statistical analysis.
- Copyright (C) 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009, 2010, 2011, 2012 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
#include <libpspp/compiler.h>
#include <libpspp/pool.h>
-#include "xalloc.h"
\f
/* Exit with a failure code.
(Place a breakpoint on this function while debugging.) */
unsigned int i;
assert (offset <= UINT_BIT);
- for (i = offset; i-- > 0; )
+ for (i = offset; i-- > 0;)
if (pattern & (1u << i))
{
*start = i;
const struct range_set_node *node;
printf ("result:");
- for (node = range_set_first (rs); node != NULL;
- node = range_set_next (rs, node))
+ RANGE_SET_FOR_EACH (node, rs)
printf (" (%lu,%lu)",
range_set_node_get_start (node), range_set_node_get_end (node));
printf ("\n");
unsigned long int width = 0;
struct range_set *rs = range_set_create_pool (NULL);
while (next_region (pattern, start + width, &start, &width))
- range_set_insert (rs, start, width);
+ range_set_set1 (rs, start, width);
check_pattern (rs, pattern);
return rs;
}
-/* Returns an unsigned int with bits OFS...OFS+CNT (exclusive)
+/* Returns an unsigned int with bits OFS...OFS+N (exclusive)
set to 1, other bits set to 0. */
static unsigned int
-bit_range (unsigned int ofs, unsigned int cnt)
+bit_range (unsigned int ofs, unsigned int n)
{
assert (ofs < UINT_BIT);
- assert (cnt <= UINT_BIT);
- assert (ofs + cnt <= UINT_BIT);
+ assert (n <= UINT_BIT);
+ assert (ofs + n <= UINT_BIT);
- return cnt < UINT_BIT ? ((1u << cnt) - 1) << ofs : UINT_MAX;
+ return n < UINT_BIT ? ((1u << n) - 1) << ofs : UINT_MAX;
}
\f
/* Tests inserting all possible patterns into all possible range
unsigned int init_pat;
int i, j;
-#if __GNUC__ == 4 && __GNUC_MINOR__ == 2 && __llvm__
- /* This test seems to trigger a bug in llvm-gcc 4.2 on Mac OS X 10.8.0.
- Exit code 77 tells the Autotest framework that the test was skipped. */
- exit (77);
-#endif
-
for (init_pat = 0; init_pat < (1u << positions); init_pat++)
for (i = 0; i < positions + 1; i++)
for (j = i; j <= positions + 1; j++)
unsigned int final_pat;
rs = make_pattern (init_pat);
- range_set_insert (rs, i, j - i);
+ range_set_set1 (rs, i, j - i);
final_pat = init_pat | bit_range (i, j - i);
check_pattern (rs, final_pat);
rs2 = range_set_clone (rs, NULL);
unsigned int init_pat;
int i, j;
-#if __GNUC__ == 4 && __GNUC_MINOR__ == 2 && __llvm__
- /* This test seems to trigger a bug in llvm-gcc 4.2 on Mac OS X 10.8.0.
- Exit code 77 tells the Autotest framework that the test was skipped. */
- exit (77);
-#endif
-
for (init_pat = 0; init_pat < (1u << positions); init_pat++)
for (i = 0; i < positions + 1; i++)
for (j = i; j <= positions + 1; j++)
unsigned int final_pat;
rs = make_pattern (init_pat);
- range_set_delete (rs, i, j - i);
+ range_set_set0 (rs, i, j - i);
final_pat = init_pat & ~bit_range (i, j - i);
check_pattern (rs, final_pat);
range_set_destroy (rs);
unsigned int init_pat;
int request;
-#if __GNUC__ == 4 && __GNUC_MINOR__ == 2 && __llvm__
- /* This test seems to trigger a bug in llvm-gcc 4.2 on Mac OS X 10.8.0.
- Exit code 77 tells the Autotest framework that the test was skipped. */
- exit (77);
-#endif
-
for (init_pat = 0; init_pat < (1u << positions); init_pat++)
for (request = 1; request <= positions + 1; request++)
{
unsigned int init_pat;
int request;
-#if __GNUC__ == 4 && __GNUC_MINOR__ == 2 && __llvm__
- /* This test seems to trigger a bug in llvm-gcc 4.2 on Mac OS X 10.8.0.
- Exit code 77 tells the Autotest framework that the test was skipped. */
- exit (77);
-#endif
-
for (init_pat = 0; init_pat < (1u << positions); init_pat++)
for (request = 1; request <= positions + 1; request++)
{
Makes sure that this doesn't cause a double-free. */
pool = pool_create ();
rs = range_set_create_pool (pool);
- range_set_insert (rs, 1, 10);
+ range_set_set1 (rs, 1, 10);
range_set_destroy (rs);
pool_destroy (pool);
Makes sure that this doesn't cause a leak. */
pool = pool_create ();
rs = range_set_create_pool (pool);
- range_set_insert (rs, 1, 10);
+ range_set_set1 (rs, 1, 10);
pool_destroy (pool);
}