Horus Doc || C++ Reference || Class Overview   Pixels   Images   Detector   Geometry   Registry || Doxygen's quick Index  

HxRepositoryTem.h

00001 /*
00002  *  Copyright (c) 1997, University of Amsterdam, The Netherlands.
00003  *  All rights reserved.
00004  *
00005  *
00006  *  Author(s):
00007  *  Dennis Koelma (koelma@wins.uva.nl)
00008  *  Edo Poll (poll@wins.uva.nl)
00009  */
00010 
00011 #ifndef HxRepositoryTem_h
00012 #define HxRepositoryTem_h
00013 
00014 #include "HxIoFwd.h"
00015 #include "HxString.h"
00016 #include "HxRepository.h"
00017 #include "HxRepositoryObserverTem.h"
00018 
00019 #pragma warning (disable : 4786)
00020 
00021 #include <vector>
00022 #include <map>
00023 
00024 
00025 template<class T>
00026 class L_HXBASIS HxRepositoryTem : public HxRepository
00027 {
00028 public:
00029                             HxRepositoryTem();
00030                             HxRepositoryTem(const HxRepositoryObserver&);
00031                             HxRepositoryTem(const HxRepositoryObserverTem<T>&);
00032                             ~HxRepositoryTem();
00033 
00034     virtual void            insert(HxString, T&);
00035     virtual T*              find(HxString) const;
00036 
00037     virtual void            remove(HxString name);
00038     virtual void            rename(HxString oldName, HxString newName);
00039     virtual int             exists(HxString name) const;
00040 
00041     virtual HxString        generateName(HxString base);
00042 
00043     virtual void            getNameList(HxStringListBackInserter) const;
00044 
00045     virtual void            setObserver(const HxRepositoryObserver&);
00046     virtual void            setObserver(const HxRepositoryObserverTem<T>&);
00047     virtual const HxRepositoryObserver*
00048                             getObserver() const;
00049 
00050     virtual STD_OSTREAM&    put(STD_OSTREAM&) const;
00051 
00052     virtual void            clear();
00053 
00054 private:
00055     typedef std::map<HxString, T, std::less<HxString> >   Map;
00056     typedef Map::value_type                     Entry;
00057 
00058     Map                                         _map;
00059     const HxRepositoryObserverTem<T>*           _observer;
00060     HxRepositoryObserverTem<T>*                 _tmpObserver;
00061     int                                         _id;
00062 };
00063 
00064 template<class T>
00065 inline STD_OSTREAM&
00066 operator<<(STD_OSTREAM& os, const HxRepositoryTem<T>& repository)
00067 {
00068     return repository.put(os);
00069 }
00070 
00071 #ifdef INC_TEMPLATE_SRC
00072 #include "HxRepositoryTem.c"
00073 #endif
00074 
00075 #endif

Generated on Tue Feb 3 14:18:41 2004 for C++Reference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001