home *** CD-ROM | disk | FTP | other *** search
/ Game Programming in C++ - Start to Finish / GameProgrammingS.iso / developer_install / ReplicaNetFreewareV5_4.exe / data1.cab / Program_Executable_Files / Example6 / DataBlock_GenericSTLVirtual.h < prev    next >
Encoding:
C/C++ Source or Header  |  2005-10-30  |  1.6 KB  |  68 lines

  1. /* START_LICENSE_HEADER
  2.  
  3. Copyright (C) 2000 Martin Piper, original design and program code
  4. Copyright (C) 2001-2005 Replica Software
  5.  
  6. This program file is copyright (C) Replica Software and can only be used under license.
  7. For more information visit: http://www.replicanet.com/
  8. Or email: info@replicanet.com
  9.  
  10. END_LICENSE_HEADER */
  11. #ifndef __DATABLOCK_GENERICSTLVIRTUAL_H__
  12. #define __DATABLOCK_GENERICSTLVIRTUAL_H__
  13.  
  14. #include "RNReplicaNet/Inc/DataBlock.h"
  15. #include <map>
  16.  
  17. /**
  18.  * This class provides, at a generic void* level, element tracking and message handling routines with pure virtual hooks
  19.  * intended for more specific derived container updates.
  20.  */
  21. class DataBlock_GenericSTLVirtual : public RNReplicaNet::DataBlock
  22. {
  23. public:
  24.     DataBlock_GenericSTLVirtual();
  25.  
  26.     virtual ~DataBlock_GenericSTLVirtual();
  27.  
  28.     virtual void Poll(RNReplicaNet::DataBlockReason *reason);
  29.  
  30.     virtual void ParseMessage(RNReplicaNet::MessageHelper *message);
  31.  
  32. protected:
  33.     virtual int GetNumberOfElements(void) = 0;
  34.  
  35.     virtual void SetNumberOfElements(const int numElements) = 0;
  36.  
  37.     virtual int GetElementSize(void) const = 0;
  38.  
  39.     virtual void *GetElementPointerAt(const int offset) = 0;
  40.  
  41.     virtual void SetElementDataAt(const void *data,const int offset) = 0;
  42.  
  43.     struct SessionBlock
  44.     {
  45.         SessionBlock(int sessid);
  46.  
  47.         virtual ~SessionBlock();
  48.  
  49.         int mSessionID;
  50.  
  51.         int mNumElements;
  52.         void **mOrderedElementData;
  53.     };
  54.  
  55. // Ctor variables
  56.  
  57.     void *mData;
  58.  
  59. // Other variables
  60.  
  61.     std::map<int,SessionBlock*> mPerSessionData;
  62.  
  63. private:
  64.     void DoInitialSettingsFor(SessionBlock *sessionBlock,const int elementSize);
  65. };
  66.  
  67. #endif
  68.