home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 7
/
FreshFishVol7.bin
/
bbs
/
gnu
/
aplusplus-1.01-src.lha
/
GNU
/
src
/
amiga
/
APlusPlus-1.01
/
include
/
APlusPlus
/
environment
/
MapArray.h
< prev
next >
Wrap
C/C++ Source or Header
|
1994-05-04
|
2KB
|
66 lines
#ifndef APP_MapArray_H
#define APP_MapArray_H
/******************************************************************************
**
** C++ Class Library for the Amiga© system software.
**
** Copyright (C) 1994 by Armin Vogt ** EMail: armin@uni-paderborn.de
** All Rights Reserved.
**
** $VER: apphome:APlusPlus/environment/MapArray.h 1.04 (04.05.94) $
**
******************************************************************************/
extern "C" {
#include <exec/types.h>
}
#include <iostream.h>
/******************************************************************************************
» MapArray class «
******************************************************************************************/
typedef void* MA_T;
typedef ULONG MapKey;
class MapArrayIterator;
class MapArray
{
friend MapArrayIterator;
private:
struct Pair { MapKey key; MA_T entry; } *pairs;
int arraySize;
static Pair empty;
public:
MapArray();
~MapArray();
MA_T& operator [] (MapKey tag);
// returns reference to the MA_T object associated with 'tag' or if 'tag' was not found new MA_T object
MA_T find(MapKey tag); // returns pointer to associated MA_T object or NULL if not found
};
class MapArrayIterator
{
private:
MapArray *mapArray;
int cIndex;
public:
MapArrayIterator(MapArray& ma) { cIndex = -1; mapArray = &ma; }
void reset() { cIndex = -1; }
MA_T operator ()() { MapArray::Pair *p = &mapArray->pairs[++cIndex];
if (p->key) return p->entry; else return(MA_T)NULL; }
MA_T& operator [](int dummy) { return mapArray->pairs[cIndex].entry; }
MapKey key() { return mapArray->pairs[cIndex].key; }
};
#undef MA_T
#endif