#include #include #include #include #include #include "iiimp-dataP.h" IIIMP_binaryfile_object * iiimp_binaryfile_object_new( IIIMP_data_s * data_s, IIIMP_string * object) { IIIMP_binaryfile_object * bin_obj; bin_obj = (IIIMP_binaryfile_object *) malloc(sizeof (IIIMP_binaryfile_object)); if (NULL == bin_obj) { data_s->status = IIIMP_DATA_MALLOC_ERROR; return NULL; } bin_obj->object = object; if (NULL == object) { bin_obj->nbyte = 4; } else { bin_obj->nbyte = object->nbyte; } return bin_obj; } void iiimp_binaryfile_object_delete( IIIMP_data_s * data_s, IIIMP_binaryfile_object * bin_obj) { if (NULL == bin_obj) return; iiimp_string_delete(data_s, bin_obj->object); free(bin_obj); return; } void iiimp_binaryfile_object_pack( IIIMP_data_s * data_s, IIIMP_binaryfile_object * m, size_t * nbyte, uchar_t ** ptr) { size_t rest; uchar_t * p; rest = *nbyte; p = *ptr; iiimp_string_pack(data_s, m->object, &rest, &p); *nbyte = rest; *ptr = p; return; } IIIMP_binaryfile_object * iiimp_binaryfile_object_unpack( IIIMP_data_s * data_s, size_t * nbyte, const uchar_t ** ptr, size_t nbyte_max) { IIIMP_binaryfile_object * bin_obj; size_t rest; const uchar_t * p; rest = nbyte_max; p = *ptr; if ((*nbyte < rest) || (rest < 4)) { data_s->status = IIIMP_DATA_INVALID; return NULL; } bin_obj = (IIIMP_binaryfile_object *) malloc(sizeof (IIIMP_binaryfile_object)); if (NULL == bin_obj) { data_s->status = IIIMP_DATA_MALLOC_ERROR; return NULL; } bin_obj->object = iiimp_string_unpack(data_s, &rest, &p, rest); if (NULL == bin_obj->object) { free(bin_obj); return NULL; } *nbyte = rest; *ptr = p; return bin_obj; } void iiimp_binaryfile_object_print( IIIMP_data_s * data_s, IIIMP_binaryfile_object * m) { if (NULL == m) return; iiimp_string_print(data_s, m->object); } /* Local Variables: */ /* c-file-style: "iiim-project" */ /* End: */