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

⟦666562d9c⟧ TextFile

    Length: 2098 (0x832)
    Types: TextFile
    Names: »bool-array.h«

Derivation

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

TextFile

/* This may look like C code, but it is really -*- C++ -*- */

/* Simple 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.  */

/* Define and implement a simple boolean array abstraction,
   uses a Guilmette implementation to save on initialization time. */

#pragma once
#include <std.h>

class Bool_Array 
{
private:
  int *storage_array;    /* Initialization of the index space. */
  int  size;             /* Keep track of array size. */
  int  iteration_number; /* Keep track of the current iteration. */

public:
       Bool_Array (void);
      ~Bool_Array (void);
  void init (int size);
  int  find (int hash_value);
  void reset (void);
};

#ifdef __OPTIMIZE__  /* efficiency hack! */

inline 
Bool_Array::Bool_Array (void)
{
  storage_array    = 0;
  iteration_number = 0;
}

inline void
Bool_Array::init (int s)
{
  iteration_number = 1;
  size             = s;
  storage_array    = new int[s];
  bzero (storage_array, s * sizeof *storage_array);
}

inline int  
Bool_Array::find (int index) 
{
  if (storage_array[index] == iteration_number)
    return 1;
  else
    {
      storage_array[index] = iteration_number;
      return 0;
    }
}

inline void 
Bool_Array::reset (void) 
{ 
  if (iteration_number++ == 0)
    bzero (storage_array, size * sizeof *storage_array);
}

#endif