modules/up/src/gnug++/CacheKey.CacheValue.Map.h

/* [<][>]
[^][v][top][bottom][index][help] */

FUNCTIONS

This source file includes following functions.
  1. CacheKeyCacheValueMap
  2. CacheKeyCacheValueMap
  3. length
  4. empty
  5. dflt
  6. CacheKeyCacheValueMap

   1 // This may look like C code, but it is really -*- C++ -*-
   2 /* 
   3 Copyright (C) 1988 Free Software Foundation
   4     written by Doug Lea (dl@rocky.oswego.edu)
   5 
   6 This file is part of the GNU C++ Library.  This library is free
   7 software; you can redistribute it and/or modify it under the terms of
   8 the GNU Library General Public License as published by the Free
   9 Software Foundation; either version 2 of the License, or (at your
  10 option) any later version.  This library is distributed in the hope
  11 that it will be useful, but WITHOUT ANY WARRANTY; without even the
  12 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  13 PURPOSE.  See the GNU Library General Public License for more details.
  14 You should have received a copy of the GNU Library General Public
  15 License along with this library; if not, write to the Free Software
  16 Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  17 */
  18 
  19 
  20 #ifndef _CacheKeyCacheValueMap_h
  21 #ifdef __GNUG__
  22 #pragma interface
  23 #endif
  24 #define _CacheKeyCacheValueMap_h 1
  25 
  26 #include "Pix.h"
  27 #include "CacheKey.defs.h"
  28 
  29 class CacheKeyCacheValueMap
     /* [<][>][^][v][top][bottom][index][help] */
  30 {
  31 protected:
  32   int                   count;
  33   CacheValue                   def;
  34 
  35 public:
  36                         CacheKeyCacheValueMap(CacheValue& dflt);
  37   inline virtual              ~CacheKeyCacheValueMap();
  38 
  39   int                   length() const; // current number of items
  40   int                   empty() const;
  41 
  42   virtual int           contains(CacheKey  key);      // is key mapped?
  43 
  44   virtual void          clear();                 // delete all items
  45 
  46   virtual CacheValue&          operator [] (CacheKey  key) = 0; // access contents by key
  47 
  48   virtual void          del(CacheKey  key) = 0;       // delete entry
  49 
  50   virtual Pix           first() = 0;             // Pix of first item or 0
  51   virtual void          next(Pix& i) = 0;        // advance to next or 0
  52   virtual CacheKey&          key(Pix i) = 0;          // access key at i
  53   virtual CacheValue&          contents(Pix i) = 0;     // access contents at i
  54 
  55   virtual int           owns(Pix i);             // is i a valid Pix  ?
  56   virtual Pix           seek(CacheKey  key);          // Pix of key
  57 
  58   CacheValue&                  dflt();                  // access default val
  59 
  60   void                  error(const char* msg);
  61   virtual int           OK() = 0;                // rep invariant
  62 };
  63 
  64 
  65 inline CacheKeyCacheValueMap::~CacheKeyCacheValueMap() {}
     /* [<][>][^][v][top][bottom][index][help] */
  66 
  67 inline int CacheKeyCacheValueMap::length() const
     /* [<][>][^][v][top][bottom][index][help] */
  68 {
  69   return count;
  70 }
  71 
  72 inline int CacheKeyCacheValueMap::empty() const
     /* [<][>][^][v][top][bottom][index][help] */
  73 {
  74   return count == 0;
  75 }
  76 
  77 inline CacheValue& CacheKeyCacheValueMap::dflt()
     /* [<][>][^][v][top][bottom][index][help] */
  78 {
  79   return def;
  80 }
  81 
  82 inline CacheKeyCacheValueMap::CacheKeyCacheValueMap(CacheValue& dflt) :def(dflt)
     /* [<][>][^][v][top][bottom][index][help] */
  83 {
  84   count = 0;
  85 }
  86 
  87 #endif

/* [<][>][^][v][top][bottom][index][help] */