|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T b
Length: 1984 (0x7c0)
Types: TextFile
Names: »bool-array.cc«
└─⟦a05ed705a⟧ Bits:30007078 DKUUG GNU 2/12/89
└─⟦cc8755de2⟧ »./libg++-1.36.1.tar.Z«
└─⟦23757c458⟧
└─⟦this⟧ »libg++/gperf/src/bool-array.cc«
/* Fast lookup table abstraction implemented as a Guilmette Array
Copyright (C) 1989 Free Software Foundation, Inc.
written by Douglas C. Schmidt (schmidt@ics.uci.edu)
This file is part of GNU GPERF.
GNU GPERF 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 1, or (at your option)
any later version.
GNU GPERF 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 GNU GPERF; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
#include "options.h"
#include "bool-array.h"
/* Prints out debugging diagnostics. */
Bool_Array::~Bool_Array (void)
{
if (option[DEBUG])
fprintf (stderr, "\ndumping boolean array information\n"
"size = %d\niterations = %d\nend of array dump\n",
size, iteration_number);
}
#ifndef __OPTIMIZE__
Bool_Array::Bool_Array (void)
{
storage_array = 0;
iteration_number = 0;
size = 0;
}
void
Bool_Array::init (int s)
{
iteration_number = 1;
storage_array = new int[s];
bzero (storage_array, s * sizeof *storage_array);
}
int
Bool_Array::find (int index)
{
if (storage_array[index] == iteration_number)
return 1;
else
{
storage_array[index] = iteration_number;
return 0;
}
}
void
Bool_Array::reset (void)
{
/* If we wrap around it's time to zero things out again!
However, this only occurs once about every 2^31 iterations,
so it should probably never happen! */
if (iteration_number++ == 0)
bzero (storage_array, size * sizeof *storage_array);
}
#endif /* not defined __OPTIMIZE__ */