These notes are with respect to the AFNI GIFTI C API. - This API is built on top of expat, and is released into the public domain. - The main functions are: gifti_read_image, gifti_write_image, gifti_free_image - The exported functions in gifti_io.h are intended for users of this API, particularly those prototypes listed first. - The gifti_xml functions are not intended for external use. - Taking pointers from the gifti_image structure should be okay (providing they are then set to NULL), but it may be less confusing to copy data out. - To save memory, it is suggested to steal the darray[k]->data pointers, and set them to NULL. ---------------------------------------------------------------------- Speeds: (last checked in version 0.7) Since I/O speed was a question when deciding whether to use XML for GIFTI, read times (in seconds) from a mac G5 are provided. (no b64 error checking) (with b64 error counting and skipping) ascii base64 base64gz base64 base64gz surface name ----- ------ -------- ------ -------- ------------ 0.05 0.00 0.00 0.01 0.00 aoantonym 0.37 0.08 0.12 0.10 0.13 pial 7.20 0.95 0.75 1.14 0.79 time_series ---------------------------------------------------------------------- todo: - on alloc failure, propogate error up and return NULL - accessor functions - indexed reading - test doxygen comments - #ifdef __cplusplus - select node list - display all valid attributes? DTD? valid attribute values given the name? known metadata? - gifti_remove_gim_metadata() - gifti_remove_DA_metadata() - gifti_remove_all_metadata() - gifti_MD_delete(name) - post XML read: validate gifti structure - check for UNKNOWN attributes - done?? "invalid darray XX" - check that MD names are unique