DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T b

⟦fcd062699⟧ TextFile

    Length: 1984 (0x7c0)
    Types: TextFile
    Names: »bool-array.cc«

Derivation

└─⟦a05ed705a⟧ Bits:30007078 DKUUG GNU 2/12/89
    └─⟦cc8755de2⟧ »./libg++-1.36.1.tar.Z« 
        └─⟦23757c458⟧ 
            └─⟦this⟧ »libg++/gperf/src/bool-array.cc« 

TextFile

/* 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__ */