load_save_file.h
上传用户:kx_jwh
上传日期:2021-09-03
资源大小:76k
文件大小:2k
源码类别:

STL

开发平台:

Visual C++

  1. /* vim: set tabstop=4 : */
  2. #ifndef __febird_io_load_save_file_h__
  3. #define __febird_io_load_save_file_h__
  4. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  5. # pragma once
  6. #endif
  7. #include "mem_map_stream.h"
  8. #include "DataIO.h"
  9. //#include "../statistic_time.h"
  10. namespace febird {
  11. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  12. // for convenient using...
  13. #define FEBIRD_LOAD_FUNCTION_NAME    native_load_from_file
  14. #define FEBIRD_SAVE_FUNCTION_NAME    native_save_to_file
  15. #define FEBIRD_DATA_INPUT_CLASS      LittleEndianDataInput
  16. #define FEBIRD_DATA_OUTPUT_CLASS     LittleEndianDataOutput
  17. #define FEBIRD_DATA_INPUT_LOAD_FROM(input, x)  input >> x
  18. #define FEBIRD_DATA_OUTPUT_SAVE_TO(output, x)  output << x
  19. #include "load_save_convenient.h"
  20. #define FEBIRD_LOAD_FUNCTION_NAME    portable_load_from_file
  21. #define FEBIRD_SAVE_FUNCTION_NAME    portable_save_to_file
  22. #define FEBIRD_DATA_INPUT_CLASS      PortableDataInput
  23. #define FEBIRD_DATA_OUTPUT_CLASS     PortableDataOutput
  24. #define FEBIRD_DATA_INPUT_LOAD_FROM(input, x)  input >> x
  25. #define FEBIRD_DATA_OUTPUT_SAVE_TO(output, x)  output << x
  26. #include "load_save_convenient.h"
  27. #define FEBIRD_LOAD_FUNCTION_NAME    dump_load_from_file
  28. #define FEBIRD_SAVE_FUNCTION_NAME    dump_save_to_file
  29. #define FEBIRD_DATA_INPUT_CLASS      LittleEndianDataInput
  30. #define FEBIRD_DATA_OUTPUT_CLASS     LittleEndianDataOutput
  31. #define FEBIRD_DATA_INPUT_LOAD_FROM(input, x)  DataIO_dump_load_object(input, x)
  32. #define FEBIRD_DATA_OUTPUT_SAVE_TO(output, x)  DataIO_dump_save_object(output, x)
  33. #include "load_save_convenient.h"
  34. /**
  35.  @brief 更新文件
  36.  */
  37. #define FEBIRD_SAVE_FUNCTION_NAME    dump_update_file_only
  38. #define FEBIRD_DATA_OUTPUT_CLASS     LittleEndianDataOutput
  39. #define FEBIRD_DATA_OUTPUT_SAVE_TO(output, x)  x.dump_save(output)
  40. #define FEBIRD_SAVE_FILE_OPEN_MODE "rb+" //!< 可读可写
  41. #include "load_save_convenient.h"
  42. template<class Object>
  43. void dump_update_file(const Object& x, const std::string& szFile, bool printLog=true)
  44. {
  45. try {
  46. dump_update_file_only(x, szFile, printLog);
  47. }
  48. catch (const OpenFileException&) {
  49. dump_save_to_file(x, szFile, printLog);
  50. }
  51. }
  52. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  53. } // namespace febird
  54. #endif // __febird_io_load_save_file_h__