mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-03 12:59:33 +00:00
(svn r19974) -Add: SlSkipArray() to skip arrays and sparse arrays in savegames.
This commit is contained in:
parent
62ac138154
commit
e8248cf113
@ -373,6 +373,15 @@ static inline void SlWriteUint64(uint64 x)
|
|||||||
SlWriteUint32((uint32)x);
|
SlWriteUint32((uint32)x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Read in bytes from the file/data structure but don't do
|
||||||
|
* anything with them, discarding them in effect
|
||||||
|
* @param length The amount of bytes that is being treated this way
|
||||||
|
*/
|
||||||
|
static inline void SlSkipBytes(size_t length)
|
||||||
|
{
|
||||||
|
for (; length != 0; length--) SlReadByte();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read in the header descriptor of an object or an array.
|
* Read in the header descriptor of an object or an array.
|
||||||
* If the highest bit is set (7), then the index is bigger than 127
|
* If the highest bit is set (7), then the index is bigger than 127
|
||||||
@ -488,6 +497,16 @@ int SlIterateArray()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skip an array or sparse array
|
||||||
|
*/
|
||||||
|
void SlSkipArray()
|
||||||
|
{
|
||||||
|
while (SlIterateArray() != -1) {
|
||||||
|
SlSkipBytes(_next_offs - SlGetOffs());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the length of either a RIFF object or the number of items in an array.
|
* Sets the length of either a RIFF object or the number of items in an array.
|
||||||
* This lets us load an object or an array of arbitrary size
|
* This lets us load an object or an array of arbitrary size
|
||||||
@ -551,15 +570,6 @@ static void SlCopyBytes(void *ptr, size_t length)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Read in bytes from the file/data structure but don't do
|
|
||||||
* anything with them, discarding them in effect
|
|
||||||
* @param length The amount of bytes that is being treated this way
|
|
||||||
*/
|
|
||||||
static inline void SlSkipBytes(size_t length)
|
|
||||||
{
|
|
||||||
for (; length != 0; length--) SlReadByte();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get the length of the current object */
|
/* Get the length of the current object */
|
||||||
size_t SlGetFieldLength() {return _sl.obj_len;}
|
size_t SlGetFieldLength() {return _sl.obj_len;}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user