(svn r19974) -Add: SlSkipArray() to skip arrays and sparse arrays in savegames.

This commit is contained in:
frosch 2010-06-13 14:12:21 +00:00
parent 62ac138154
commit e8248cf113

View File

@ -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;}