// @(#)root/io:$Id$
// Author: Markus Frank  28/10/04

/*************************************************************************
 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/
#ifndef ROOT_TEmulatedMapProxy
#define ROOT_TEmulatedMapProxy

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TEmulatedMapProxy
//
// Streamer around an arbitrary STL like container, which implements basic
// container functionality.
//
//////////////////////////////////////////////////////////////////////////

#include "TEmulatedCollectionProxy.h"

class TEmulatedMapProxy : public TEmulatedCollectionProxy  {

protected:
   // Map input streamer
   void ReadMap(UInt_t nElements, TBuffer &b);

   // Map output streamer
   void WriteMap(UInt_t nElements, TBuffer &b);
private:
   TEmulatedMapProxy &operator=(const TEmulatedMapProxy &rhs); // Not implemented.

public:
   // Virtual copy constructor
   virtual TVirtualCollectionProxy* Generate() const;

   // Copy constructor
   TEmulatedMapProxy(const TEmulatedMapProxy& copy);

   // Initializing constructor
   TEmulatedMapProxy(const char* cl_name, Bool_t silent);

   // Standard destructor
   virtual ~TEmulatedMapProxy();

   // Return the address of the value at index 'idx'
   virtual void *At(UInt_t idx);

   // Return the current size of the container
   virtual UInt_t Size() const;

   // Read portion of the streamer
   virtual void ReadBuffer(TBuffer &buff, void *pObj);
   virtual void ReadBuffer(TBuffer &buff, void *pObj, const TClass *onfile);

   // Streamer for I/O handling
   virtual void Streamer(TBuffer &refBuffer);

   // Streamer I/O overload
   virtual void Streamer(TBuffer &buff, void *pObj, int siz) {
      TEmulatedCollectionProxy::Streamer(buff,pObj,siz);
   }
};

#endif
 TEmulatedMapProxy.h:1
 TEmulatedMapProxy.h:2
 TEmulatedMapProxy.h:3
 TEmulatedMapProxy.h:4
 TEmulatedMapProxy.h:5
 TEmulatedMapProxy.h:6
 TEmulatedMapProxy.h:7
 TEmulatedMapProxy.h:8
 TEmulatedMapProxy.h:9
 TEmulatedMapProxy.h:10
 TEmulatedMapProxy.h:11
 TEmulatedMapProxy.h:12
 TEmulatedMapProxy.h:13
 TEmulatedMapProxy.h:14
 TEmulatedMapProxy.h:15
 TEmulatedMapProxy.h:16
 TEmulatedMapProxy.h:17
 TEmulatedMapProxy.h:18
 TEmulatedMapProxy.h:19
 TEmulatedMapProxy.h:20
 TEmulatedMapProxy.h:21
 TEmulatedMapProxy.h:22
 TEmulatedMapProxy.h:23
 TEmulatedMapProxy.h:24
 TEmulatedMapProxy.h:25
 TEmulatedMapProxy.h:26
 TEmulatedMapProxy.h:27
 TEmulatedMapProxy.h:28
 TEmulatedMapProxy.h:29
 TEmulatedMapProxy.h:30
 TEmulatedMapProxy.h:31
 TEmulatedMapProxy.h:32
 TEmulatedMapProxy.h:33
 TEmulatedMapProxy.h:34
 TEmulatedMapProxy.h:35
 TEmulatedMapProxy.h:36
 TEmulatedMapProxy.h:37
 TEmulatedMapProxy.h:38
 TEmulatedMapProxy.h:39
 TEmulatedMapProxy.h:40
 TEmulatedMapProxy.h:41
 TEmulatedMapProxy.h:42
 TEmulatedMapProxy.h:43
 TEmulatedMapProxy.h:44
 TEmulatedMapProxy.h:45
 TEmulatedMapProxy.h:46
 TEmulatedMapProxy.h:47
 TEmulatedMapProxy.h:48
 TEmulatedMapProxy.h:49
 TEmulatedMapProxy.h:50
 TEmulatedMapProxy.h:51
 TEmulatedMapProxy.h:52
 TEmulatedMapProxy.h:53
 TEmulatedMapProxy.h:54
 TEmulatedMapProxy.h:55
 TEmulatedMapProxy.h:56
 TEmulatedMapProxy.h:57
 TEmulatedMapProxy.h:58
 TEmulatedMapProxy.h:59
 TEmulatedMapProxy.h:60
 TEmulatedMapProxy.h:61
 TEmulatedMapProxy.h:62
 TEmulatedMapProxy.h:63
 TEmulatedMapProxy.h:64
 TEmulatedMapProxy.h:65
 TEmulatedMapProxy.h:66
 TEmulatedMapProxy.h:67
 TEmulatedMapProxy.h:68