123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- devil1geo.h / devil1geo.c
- Handles files containing geometry.
- Functions
- All functions are static but exposed by a function pointer in a constant
- struct called DEVIL1GEO. For example, clients call functions using
- DEVIL1GEO.printheader(...);
- void printheader(struct Header*);
- Show attributes and values of a Header for the package.
- input: pointer to Header, pass by reference of a struct.
- Can not be NULL.
- void printmeshheader(struct MeshHeader*);
- Show attributes and values of a MeshHeader.
- input: pointer to MeshHeader, pass by reference of a struct.
- Can not be NULL.
- void printbatch(struct Batch*);
- Show attribute and values of a Batch and three sample position
- coordinates.
- input: pointer to Batch, pass by reference of a struct.
- Can not be NULL.
- void printcoordinate(struct Coordinate*, unsigned int);
- Show a specified quantity of Coordinates.
-
- input:
- pointer to array of Coordinates.
- Can not be NULL.
-
- unsigned int, for quantity of coordinates to be printed.
- bool getheader(struct Header**, const char*);
- Retrieves the header for a geometry package.
- input:
- Pointer of a pointer to struct Header.
- Pass by reference of a pointer to the function.
- The pointer of Header can be NULL and will be set to point to
- a region in the buffer.
- const char*, the buffer containing the whole geometry package.
- Can not be NULL.
- bool getmeshheader(struct MeshHeader**,
- unsigned int,
- const char * const);
- Retrieves the i-th MeshHeader in a buffer.
- input:
- Pointer of a pointer to MeshHeader.
- Pass by reference of a pointer to the function.
- The pointer of MeshHeader can be NULL and will be set to point to
- a region in the buffer.
- unsigned int, the i-th instance of MeshHeader in the buffer.
- const char*, the buffer containing the whole mesh package.
- output:
- true on success.
- false when failing checks against segmentation faults.
- If parameter 'struct MeshHeader**' is NULL.
- If parameter 'const char*' is NULL.
- bool getbatch(struct Batch*,
- unsigned int offset,
- const char * const);
- Retrieves the i-th Batch in a buffer.
- input:
- Pointer to a Batch.
- Pass by reference of a struct to the function.
- Can not be NULL.
- unsigned int, the i-th instance of Batch in the buffer.
- const char*, the buffer containing the whole mesh package.
- output:
- true on success.
- false when failing checks against segmentation faults.
- If parameter 'struct Batch*' is NULL.
- If parameter 'const char*' is NULL.
- bool getmesh(struct Mesh*,
- unsigned int,
- const char*,
- unsigned int);
- Retrieves the i-th Mesh in a buffer.
- input:
- Pointer to mesh.
- Pass by reference of a struct to the function.
- unsigned int, the i-th instance of Mesh in the buffer.
- const char*, the buffer containing the whole mesh package.
- output:
- true on success.
- false when failing checks against segmentation faults.
- If parameter 'struct Mesh*' is NULL.
- If attribute 'b' of parameter 'struct Mesh' is NULL.
- if parameter 'const char*' is NULL.
- When file size is detected to be too small for a given i-th
- Mesh.
- Example logic to interact with all meshes:
- {
- // After the file has been read in.
- // Need to know how many meshes are in the file.
- struct Header *h = (struct Header*)filedata;
-
- // Need to know about a specific mesh (how many batches).
- struct MeshHeader *mh = NULL;
-
- // Need to hold information about mesh.
- struct Mesh m;
- // As a precaution - empty for now.
- m.b = NULL;
- unsigned int i;
- for (i = 0; i < h -> numMesh; i++) {
- DEVIL1GEO.getmeshheader(&mh, i, filedata);
- // Allocate space to hold batch data.
- m.b = (struct Batch*)malloc(sizeof(struct Batch) * (mh -> numBatch));
- if (m.b != NULL) {
- DEVIL1GEO.getmesh(&m, i, filedata, filesize);
- // Do whatever you want with the mesh.
- free(m.b);
- }
- }
|