XferSave.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. ** Command & Conquer Generals Zero Hour(tm)
  3. ** Copyright 2025 Electronic Arts Inc.
  4. **
  5. ** This program is free software: you can redistribute it and/or modify
  6. ** it under the terms of the GNU General Public License as published by
  7. ** the Free Software Foundation, either version 3 of the License, or
  8. ** (at your option) any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. ////////////////////////////////////////////////////////////////////////////////
  19. // //
  20. // (c) 2001-2003 Electronic Arts Inc. //
  21. // //
  22. ////////////////////////////////////////////////////////////////////////////////
  23. // FILE: XferSave.h ///////////////////////////////////////////////////////////////////////////////
  24. // Author: Colin Day, February 2002
  25. // Desc: Xfer hard disk write implementation
  26. ///////////////////////////////////////////////////////////////////////////////////////////////////
  27. #pragma once
  28. #ifndef __XFER_SAVE_H_
  29. #define __XFER_SAVE_H_
  30. // USER INCLUDES //////////////////////////////////////////////////////////////////////////////////
  31. #include "Common/Xfer.h"
  32. // FORWARD REFERENCES /////////////////////////////////////////////////////////////////////////////
  33. class XferBlockData;
  34. class Snapshot;
  35. ///////////////////////////////////////////////////////////////////////////////////////////////////
  36. typedef long XferFilePos;
  37. //-------------------------------------------------------------------------------------------------
  38. //-------------------------------------------------------------------------------------------------
  39. class XferSave : public Xfer
  40. {
  41. public:
  42. XferSave( void );
  43. virtual ~XferSave( void );
  44. // Xfer methods
  45. virtual void open( AsciiString identifier ); ///< open file for writing
  46. virtual void close( void ); ///< close file
  47. virtual Int beginBlock( void ); ///< write placeholder block size
  48. virtual void endBlock( void ); ///< backup to last begin block and write size
  49. virtual void skip( Int dataSize ); ///< skipping during a write is a no-op
  50. virtual void xferSnapshot( Snapshot *snapshot ); ///< entry point for xfering a snapshot
  51. // xfer methods
  52. virtual void xferAsciiString( AsciiString *asciiStringData ); ///< xfer ascii string (need our own)
  53. virtual void xferUnicodeString( UnicodeString *unicodeStringData ); ///< xfer unicode string (need our own);
  54. protected:
  55. virtual void xferImplementation( void *data, Int dataSize ); ///< the xfer implementation
  56. FILE * m_fileFP; ///< pointer to file
  57. XferBlockData *m_blockStack; ///< stack of block data
  58. };
  59. #endif // __XFER_SAVE_H_