Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- typedef struct {
- char simbolo;
- char recurso;
- } __attribute__((__packed__)) personajeYRecursoAsignadoStruct;
- typedef struct {
- int32_t cantidadPersonajes;
- t_queue *cola;
- } __attribute__((__packed__)) colaAsignadosStruct;
- typedef struct {
- int32_t length;
- char *data;
- } __attribute__((__packed__)) t_qasignados;
- t_qasignados *serializador_recursos(colaAsignadosStruct *self) {
- char *data = malloc( sizeof( queue_size(self->cola) * sizeof(personajeYRecursoAsignadoStruct) ));
- t_qasignados *stream = malloc( sizeof(t_qasignados) );
- int32_t offset = 0, tmp_size = 0;
- t_queue *aux=queue_create();
- char nulo= '\0';
- queue_copy(aux,self->cola);
- memcpy(data, &self->cantidadPersonajes, tmp_size = sizeof(int32_t));
- offset = tmp_size;
- while (!queue_is_empty(aux))
- {
- memcpy(data + offset, (void *) queue_pop(aux), tmp_size = sizeof(personajeYRecursoAsignadoStruct));
- offset += tmp_size;
- memcpy(data + offset, &nulo, tmp_size = sizeof(char));
- offset += tmp_size;
- }
- stream->length = offset + tmp_size;
- stream->data = data;
- queue_destroy(aux);
- return stream;
- }
- colaAsignadosStruct * desserializador_recursos(t_qasignados *stream)
- {
- colaAsignadosStruct *self = malloc(sizeof(colaAsignadosStruct));
- personajeYRecursoAsignadoStruct *elem;
- int32_t i, offset = 0, tmp_size = 0;
- memcpy(&self->cantidadPersonajes, stream->data, tmp_size = sizeof(int32_t));
- for (i = 0; i < self->cantidadPersonajes; i++)
- {
- offset = tmp_size;
- elem = malloc(sizeof(personajeYRecursoAsignadoStruct));
- memcpy((personajeYRecursoAsignadoStruct*) elem,(void *) stream->data + offset, 2);
- queue_push(self->cola,elem);
- tmp_size++;
- }
- return self;
- }
Advertisement
Add Comment
Please, Sign In to add comment