AGENT++  4.0.3
mib_map.h
Go to the documentation of this file.
1 /*_############################################################################
2  _##
3  _## AGENT++ 4.0 - mib_map.h
4  _##
5  _## Copyright (C) 2000-2013 Frank Fock and Jochen Katz (agentpp.com)
6  _##
7  _## Licensed under the Apache License, Version 2.0 (the "License");
8  _## you may not use this file except in compliance with the License.
9  _## You may obtain a copy of the License at
10  _##
11  _## http://www.apache.org/licenses/LICENSE-2.0
12  _##
13  _## Unless required by applicable law or agreed to in writing, software
14  _## distributed under the License is distributed on an "AS IS" BASIS,
15  _## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  _## See the License for the specific language governing permissions and
17  _## limitations under the License.
18  _##
19  _##########################################################################*/
20 // This may look like C code, but it is really -*- C++ -*-
21 /*
22 Copyright (C) 1988 Free Software Foundation
23  written by Doug Lea (dl@rocky.oswego.edu)
24 
25 This file is part of the GNU C++ Library. This library is free
26 software; you can redistribute it and/or modify it under the terms of
27 the GNU Library General Public License as published by the Free
28 Software Foundation; either version 2 of the License, or (at your
29 option) any later version. This library is distributed in the hope
30 that it will be useful, but WITHOUT ANY WARRANTY; without even the
31 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
32 PURPOSE. See the GNU Library General Public License for more details.
33 You should have received a copy of the GNU Library General Public
34 License along with this library; if not, write to the Free Software
35 Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
36 */
37 
38 
39 #ifndef _OidxPtrMibEntryPtrMap_h
40 #ifdef __GNUG__
41 #pragma interface
42 #endif
43 #define _OidxPtrMibEntryPtrMap_h 1
44 
45 typedef void* Pix;
46 
47 #include <agent_pp/oidx_defs.h>
48 #include <agent_pp/mib_entry.h>
49 
50 #ifdef AGENTPP_NAMESPACE
51 namespace Agentpp {
52 #endif
53 
54 
56 {
57 protected:
58  int count;
60 
61 public:
63  : count(0), def(deflt) {};
64  virtual ~OidxPtrMibEntryPtrMap() {};
65 
66  int length() const // current number of items
67  { return count; };
68  int empty() const
69  { return (count == 0);};
70 
71  virtual int contains(OidxPtr key); // is key mapped?
72 
73  virtual void clear(); // delete all items
74 
75  virtual MibEntryPtr& operator [] (OidxPtr key) = 0; // access contents by key
76 
77  virtual void del(OidxPtr key) = 0; // delete entry
78 
79  virtual Pix first() = 0; // Pix of first item or 0
80  virtual void next(Pix& i) = 0; // advance to next or 0
81  virtual OidxPtr& key(Pix i) = 0; // access key at i
82  virtual MibEntryPtr& contents(Pix i) = 0; // access contents at i
83 
84  virtual int owns(Pix i); // is i a valid Pix ?
85  virtual Pix seek(OidxPtr key); // Pix of key
86 
87  MibEntryPtr& dflt() // access default val
88  { return def; };
89 
90  void error(const char* msg);
91  virtual int OK() = 0; // rep invariant
92 };
93 
94 #ifdef AGENTPP_NAMESPACE
95 }
96 #endif
97 
98 #endif