mirror of
https://github.com/OpenMW/openmw.git
synced 2025-03-31 13:36:44 +00:00
Remove Sized methods from ESMReader
This commit is contained in:
parent
dbf9d42cc5
commit
c10b9297f0
1 changed files with 5 additions and 44 deletions
|
@ -131,10 +131,10 @@ namespace ESM
|
||||||
ESM::RefId getCellId();
|
ESM::RefId getCellId();
|
||||||
|
|
||||||
// Read data of a given type, stored in a subrecord of a given name
|
// Read data of a given type, stored in a subrecord of a given name
|
||||||
template <typename X, typename = std::enable_if_t<IsReadable<X>>>
|
template <typename X>
|
||||||
void getHNT(X& x, NAME name)
|
void getHNT(X& x, NAME name)
|
||||||
{
|
{
|
||||||
getHNTSized<sizeof(X)>(x, name);
|
getHNT(name, x);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class... Args>
|
template <class... Args>
|
||||||
|
@ -149,26 +149,11 @@ namespace ESM
|
||||||
}
|
}
|
||||||
|
|
||||||
// Optional version of getHNT
|
// Optional version of getHNT
|
||||||
template <typename X, typename = std::enable_if_t<IsReadable<X>>>
|
template <typename X>
|
||||||
void getHNOT(X& x, NAME name)
|
void getHNOT(X& x, NAME name)
|
||||||
{
|
|
||||||
getHNOTSized<sizeof(X)>(x, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Version with extra size checking, to make sure the compiler
|
|
||||||
// doesn't mess up our struct padding.
|
|
||||||
template <std::size_t size, typename X>
|
|
||||||
void getHNTSized(X& x, NAME name)
|
|
||||||
{
|
|
||||||
getSubNameIs(name);
|
|
||||||
getHTSized<size>(x);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <std::size_t size, typename X>
|
|
||||||
void getHNOTSized(X& x, NAME name)
|
|
||||||
{
|
{
|
||||||
if (isNextSub(name))
|
if (isNextSub(name))
|
||||||
getHTSized<size>(x);
|
getHT(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get data of a given type/size, including subrecord header
|
// Get data of a given type/size, including subrecord header
|
||||||
|
@ -185,37 +170,13 @@ namespace ESM
|
||||||
template <typename T, typename = std::enable_if_t<IsReadable<T>>>
|
template <typename T, typename = std::enable_if_t<IsReadable<T>>>
|
||||||
void skipHT()
|
void skipHT()
|
||||||
{
|
{
|
||||||
skipHTSized<sizeof(T), T>();
|
constexpr size_t size = sizeof(T);
|
||||||
}
|
|
||||||
|
|
||||||
// Version with extra size checking, to make sure the compiler
|
|
||||||
// doesn't mess up our struct padding.
|
|
||||||
template <std::size_t size, typename X>
|
|
||||||
void getHTSized(X& x)
|
|
||||||
{
|
|
||||||
getSubHeader();
|
|
||||||
if (mCtx.leftSub != size)
|
|
||||||
reportSubSizeMismatch(size, mCtx.leftSub);
|
|
||||||
getTSized<size>(x);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <std::size_t size, typename T>
|
|
||||||
void skipHTSized()
|
|
||||||
{
|
|
||||||
static_assert(sizeof(T) == size);
|
|
||||||
getSubHeader();
|
getSubHeader();
|
||||||
if (mCtx.leftSub != size)
|
if (mCtx.leftSub != size)
|
||||||
reportSubSizeMismatch(size, mCtx.leftSub);
|
reportSubSizeMismatch(size, mCtx.leftSub);
|
||||||
skip(size);
|
skip(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <std::size_t size, typename X>
|
|
||||||
void getTSized(X& x)
|
|
||||||
{
|
|
||||||
static_assert(sizeof(X) == size);
|
|
||||||
getExact(&x, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read a string by the given name if it is the next record.
|
// Read a string by the given name if it is the next record.
|
||||||
std::string getHNOString(NAME name);
|
std::string getHNOString(NAME name);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue