gwnavruntime/blob/blobfile.h Source File

blobfile.h
Go to the documentation of this file.
1 /*
2 * Copyright 2016 Autodesk, Inc. All rights reserved.
3 * Use of this software is subject to the terms of the Autodesk license agreement and any attachments or Appendices thereto provided at the time of installation or download,
4 * or which otherwise accompanies this software in either electronic or hard copy form, or which is signed by you and accepted by Autodesk.
5 */
6 
7 
8 
9 #pragma once
10 
11 
16 
17 namespace Kaim
18 {
19 
20 class File;
21 class FileOpenerBase;
22 
23 
25 class BlobFile
26 {
27 public:
28  static KyResult Save(File* file, const BaseBlobHandler& blobHandler, Endianness::Type endianness = Endianness::LittleEndian);
29 
30  static KyResult Save(const char* fileName, FileOpenerBase* fileOpener, const BaseBlobHandler& blobHandler, Endianness::Type endianness = Endianness::LittleEndian);
31 
32  static void* LoadVoid(const char* fileName, FileOpenerBase* fileOpener, BaseBlobHandler& blobHandler);
33 
34  static void* LoadVoid(File* file, BaseBlobHandler& blobHandler);
35 
36  template<class T>
37  static T* Load(const char* fileName, FileOpenerBase* fileOpener, BlobHandler<T>& blobHandler)
38  {
39  return (T*)LoadVoid(fileName, fileOpener, blobHandler);
40  }
41 
42  template<class T>
43  static T* Load(File* file, BlobHandler<T>& blobHandler)
44  {
45  return (T*)LoadVoid(file, blobHandler);
46  }
47 
48 private:
49  static KyResult WriteBuffers(File* file, void* fileHeaderMemory, void* blobMemory, KyUInt32 blobSize);
50  static void CloseFile(File* fileToClose);
51 };
52 
53 } // namespace Kaim
54 
55 
Base interface for a class that opens a file on disk.
Definition: fileopener.h:30
The BlobFile class reads/writes the data maintained in a blob from/to a file.
Definition: blobfile.h:25
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
The BlobHandler class is a top-level mechanism for serializing blobs between objects in memory and fi...
Definition: blobhandler.h:40
Little-endian format (used, for example, for Windows, Linux).
Definition: endianness.h:22
Navigation return code class.
Definition: types.h:108
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
Type
Enumerates possible endianness types.
Definition: endianness.h:20