Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/vbanext/newstate.cpp
2 views
1
#include "newstate.h"
2
#include <cstring>
3
4
NewStateDummy::NewStateDummy()
5
:length(0)
6
{
7
}
8
void NewStateDummy::Save(const void *ptr, size_t size, const char *name)
9
{
10
length += size;
11
}
12
void NewStateDummy::Load(void *ptr, size_t size, const char *name)
13
{
14
}
15
16
NewStateExternalBuffer::NewStateExternalBuffer(char *buffer, long maxlength)
17
:buffer(buffer), length(0), maxlength(maxlength)
18
{
19
}
20
21
void NewStateExternalBuffer::Save(const void *ptr, size_t size, const char *name)
22
{
23
if (maxlength - length >= (long)size)
24
{
25
std::memcpy(buffer + length, ptr, size);
26
}
27
length += size;
28
}
29
30
void NewStateExternalBuffer::Load(void *ptr, size_t size, const char *name)
31
{
32
char *dst = static_cast<char *>(ptr);
33
if (maxlength - length >= (long)size)
34
{
35
std::memcpy(dst, buffer + length, size);
36
}
37
length += size;
38
}
39
40
NewStateExternalFunctions::NewStateExternalFunctions(const FPtrs *ff)
41
:Save_(ff->Save_),
42
Load_(ff->Load_),
43
EnterSection_(ff->EnterSection_),
44
ExitSection_(ff->ExitSection_)
45
{
46
}
47
48
void NewStateExternalFunctions::Save(const void *ptr, size_t size, const char *name)
49
{
50
Save_(ptr, size, name);
51
}
52
void NewStateExternalFunctions::Load(void *ptr, size_t size, const char *name)
53
{
54
Load_(ptr, size, name);
55
}
56
void NewStateExternalFunctions::EnterSection(const char *name)
57
{
58
EnterSection_(name);
59
}
60
void NewStateExternalFunctions::ExitSection(const char *name)
61
{
62
ExitSection_(name);
63
}
64
65
66