15#if !defined(GPURECONSTRUCTIONIO_H)
16#define GPURECONSTRUCTIONIO_H
23template <
class T,
class S>
27 uint32_t numTotal = 0;
28 for (int32_t
i = 0;
i <
count;
i++) {
35 for (int32_t
i = 0;
i <
count;
i++) {
36 fwrite(&
num[
i],
sizeof(
num[
i]), 1, fp);
38 fwrite(entries[
i],
sizeof(*entries[
i]),
num[
i], fp);
47template <
class T,
class S>
54 size_t r,
pos = ftell(fp);
55 r = fread(&inType,
sizeof(inType), 1, fp);
56 if (
r != 1 || inType !=
type) {
57 fseek(fp,
pos, SEEK_SET);
63 for (int32_t
i = 0;
i <
count;
i++) {
64 r = fread(&
num[
i],
sizeof(
num[
i]), 1, fp);
70 r = fread(
m,
sizeof(*entries[
i]),
num[
i], fp);
84 FILE* fp = fopen(
file,
"w+b");
88 size_t size[2] = {
sizeof(*obj), obj->getFlatBufferSize()};
89 fwrite(
size,
sizeof(
size[0]), 2, fp);
90 fwrite(obj, 1,
size[0], fp);
91 fwrite(obj->getFlatBufferPtr(), 1,
size[1], fp);
98 FILE* fp = fopen(
file,
"rb");
102 size_t size[2] = {0},
r;
104 if (
r == 0 ||
size[0] !=
sizeof(T)) {
106 GPUError(
"ERROR reading %s, invalid size: %ld (%ld expected)",
file, (int64_t)
size[0], (int64_t)
sizeof(T));
107 throw std::runtime_error(
"invalid size");
109 std::unique_ptr<T>
retVal(
new T);
116 GPUInfo(
"Read %ld bytes from %s", (int64_t)
r,
file);
118 retVal->clearInternalBufferPtr();
127 FILE* fp = fopen(
file,
"w+b");
131 size_t size =
sizeof(*obj);
133 fwrite(obj, 1,
size, fp);
140 FILE* fp = fopen(
file,
"rb");
146 if (
r == 0 ||
size !=
sizeof(T)) {
148 GPUError(
"ERROR reading %s, invalid size: %ld (%ld expected)",
file, (int64_t)
size, (int64_t)
sizeof(T));
149 throw std::runtime_error(
"invalid size");
151 std::unique_ptr<T> newObj(
new T);
152 r = fread(newObj.get(), 1,
size, fp);
155 GPUInfo(
"Read %ld bytes from %s", (int64_t)
r,
file);
163 FILE* fp = fopen(
file,
"rb");
173 r = fread(obj, 1,
size, fp);
176 GPUInfo(
"Read %ld bytes from %s", (int64_t)
r,
file);
static uint32_t getNIOTypeMultiplicity(InOutPointerType type)
uint32_t DumpData(FILE *fp, const T *const *entries, const S *num, InOutPointerType type)
std::unique_ptr< T > ReadStructFromFile(const char *file)
std::unique_ptr< T > ReadFlatObjectFromFile(const char *file)
void DumpStructToFile(const T *obj, const char *file)
T * AllocateIOMemoryHelper(size_t n, const T *&ptr, std::unique_ptr< T[]> &u)
GPUSettingsProcessing mProcessingSettings
static constexpr const char *const IOTYPENAMES[]
size_t ReadData(FILE *fp, const T **entries, S *num, std::unique_ptr< T[]> *mem, InOutPointerType type, T **nonConstPtrs=nullptr)
void DumpFlatObjectToFile(const T *obj, const char *file)
GLint GLint GLsizei GLint GLenum GLenum type
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
GLenum GLuint GLenum GLsizei const GLchar * buf