lib3ddevil1/docs/doc-pld.txt

57 lines
1.9 KiB
Plaintext
Raw Permalink Normal View History

2018-04-23 06:07:35 +05:30
devil1pld.h / devil1pld.c
Handles .pld files.
File Format
PLDs are simple packages of different files, and do not contain a table
of contents. The header consists only of the number of files packaged
and the offsets from the beginning of the .pld that marks the starting
location of the file.
Functions
All functions are static but exposed by a function pointer in a constant
struct called DEVIL1PLD. For example, clients call functions using
DEVIL1PLD.getheader(..., ...);
bool getheader(struct PldHeader*, const char*);
Places file header into the struct pointed at by the first parameter
from the information given in by the second parameter.
inputs: pointer to a struct, pointer to file data
Neither parameter should be NULL.
output: true or false, whether or not operation succeeds or fails.
Will return false if one or both of the parameters are NULL
pointers.
Will return false if the attribute numOffset is less than 0-
i.e file is not valid.
int sizeofsector(struct PldHeader*, unsigned int i, unsigned int max);
Returns the size of the i-th file packed in the pld.
inputs: pointer to a struct, i-th element in pld, file size
output: (-1), [0, maximum value of int)
-1 indicates an invalid input.
void printheader(struct PldHeader*);
Shows contents of a PLD header in standard output.
inputs: pointer of a struct
Example logic to iterate through a .pld
{
...
// Get information about the file
struct PldHeader h;
DEVIL1PLD.getheader(&h, data);
unsigned int i;
for (i = 0; i < h.numOffset; i++) {
const char *currentfile = filedata + h.offset[i];
...
}
...
}