mirror of
https://github.com/libretro/RetroArch
synced 2025-04-10 06:44:27 +00:00
(FIFO queue) Turn some functions into static inline functions
This commit is contained in:
parent
75e02c4646
commit
0215badb4c
@ -27,24 +27,50 @@
|
|||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
#include <retro_common_api.h>
|
#include <retro_common_api.h>
|
||||||
|
#include <retro_inline.h>
|
||||||
|
|
||||||
RETRO_BEGIN_DECLS
|
RETRO_BEGIN_DECLS
|
||||||
|
|
||||||
|
struct fifo_buffer
|
||||||
|
{
|
||||||
|
uint8_t *buffer;
|
||||||
|
size_t size;
|
||||||
|
size_t first;
|
||||||
|
size_t end;
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct fifo_buffer fifo_buffer_t;
|
typedef struct fifo_buffer fifo_buffer_t;
|
||||||
|
|
||||||
fifo_buffer_t *fifo_new(size_t size);
|
fifo_buffer_t *fifo_new(size_t size);
|
||||||
|
|
||||||
void fifo_clear(fifo_buffer_t *buffer);
|
static INLINE void fifo_clear(fifo_buffer_t *buffer)
|
||||||
|
{
|
||||||
|
buffer->first = 0;
|
||||||
|
buffer->end = 0;
|
||||||
|
}
|
||||||
|
|
||||||
void fifo_write(fifo_buffer_t *buffer, const void *in_buf, size_t size);
|
void fifo_write(fifo_buffer_t *buffer, const void *in_buf, size_t size);
|
||||||
|
|
||||||
void fifo_read(fifo_buffer_t *buffer, void *in_buf, size_t size);
|
void fifo_read(fifo_buffer_t *buffer, void *in_buf, size_t size);
|
||||||
|
|
||||||
void fifo_free(fifo_buffer_t *buffer);
|
static INLINE void fifo_free(fifo_buffer_t *buffer)
|
||||||
|
{
|
||||||
|
if (!buffer)
|
||||||
|
return;
|
||||||
|
|
||||||
size_t fifo_read_avail(fifo_buffer_t *buffer);
|
free(buffer->buffer);
|
||||||
|
free(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
size_t fifo_write_avail(fifo_buffer_t *buffer);
|
static INLINE size_t fifo_read_avail(fifo_buffer_t *buffer)
|
||||||
|
{
|
||||||
|
return (buffer->end + ((buffer->end < buffer->first) ? buffer->size : 0)) - buffer->first;
|
||||||
|
}
|
||||||
|
|
||||||
|
static INLINE size_t fifo_write_avail(fifo_buffer_t *buffer)
|
||||||
|
{
|
||||||
|
return (buffer->size - 1) - ((buffer->end + ((buffer->end < buffer->first) ? buffer->size : 0)) - buffer->first);
|
||||||
|
}
|
||||||
|
|
||||||
RETRO_END_DECLS
|
RETRO_END_DECLS
|
||||||
|
|
||||||
|
@ -25,68 +25,28 @@
|
|||||||
|
|
||||||
#include <queues/fifo_queue.h>
|
#include <queues/fifo_queue.h>
|
||||||
|
|
||||||
struct fifo_buffer
|
|
||||||
{
|
|
||||||
uint8_t *buffer;
|
|
||||||
size_t size;
|
|
||||||
size_t first;
|
|
||||||
size_t end;
|
|
||||||
};
|
|
||||||
|
|
||||||
fifo_buffer_t *fifo_new(size_t size)
|
fifo_buffer_t *fifo_new(size_t size)
|
||||||
{
|
{
|
||||||
|
uint8_t *buffer = NULL;
|
||||||
fifo_buffer_t *buf = (fifo_buffer_t*)calloc(1, sizeof(*buf));
|
fifo_buffer_t *buf = (fifo_buffer_t*)calloc(1, sizeof(*buf));
|
||||||
|
|
||||||
if (!buf)
|
if (!buf)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
buf->buffer = (uint8_t*)calloc(1, size + 1);
|
buffer = (uint8_t*)calloc(1, size + 1);
|
||||||
if (!buf->buffer)
|
|
||||||
|
if (!buffer)
|
||||||
{
|
{
|
||||||
free(buf);
|
free(buf);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
buf->size = size + 1;
|
|
||||||
|
buf->buffer = buffer;
|
||||||
|
buf->size = size + 1;
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
void fifo_clear(fifo_buffer_t *buffer)
|
|
||||||
{
|
|
||||||
buffer->first = 0;
|
|
||||||
buffer->end = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void fifo_free(fifo_buffer_t *buffer)
|
|
||||||
{
|
|
||||||
if (!buffer)
|
|
||||||
return;
|
|
||||||
|
|
||||||
free(buffer->buffer);
|
|
||||||
free(buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t fifo_read_avail(fifo_buffer_t *buffer)
|
|
||||||
{
|
|
||||||
size_t first = buffer->first;
|
|
||||||
size_t end = buffer->end;
|
|
||||||
|
|
||||||
if (end < first)
|
|
||||||
end += buffer->size;
|
|
||||||
return end - first;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t fifo_write_avail(fifo_buffer_t *buffer)
|
|
||||||
{
|
|
||||||
size_t first = buffer->first;
|
|
||||||
size_t end = buffer->end;
|
|
||||||
|
|
||||||
if (end < first)
|
|
||||||
end += buffer->size;
|
|
||||||
|
|
||||||
return (buffer->size - 1) - (end - first);
|
|
||||||
}
|
|
||||||
|
|
||||||
void fifo_write(fifo_buffer_t *buffer, const void *in_buf, size_t size)
|
void fifo_write(fifo_buffer_t *buffer, const void *in_buf, size_t size)
|
||||||
{
|
{
|
||||||
size_t first_write = size;
|
size_t first_write = size;
|
||||||
@ -95,7 +55,7 @@ void fifo_write(fifo_buffer_t *buffer, const void *in_buf, size_t size)
|
|||||||
if (buffer->end + size > buffer->size)
|
if (buffer->end + size > buffer->size)
|
||||||
{
|
{
|
||||||
first_write = buffer->size - buffer->end;
|
first_write = buffer->size - buffer->end;
|
||||||
rest_write = size - first_write;
|
rest_write = size - first_write;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(buffer->buffer + buffer->end, in_buf, first_write);
|
memcpy(buffer->buffer + buffer->end, in_buf, first_write);
|
||||||
@ -113,7 +73,7 @@ void fifo_read(fifo_buffer_t *buffer, void *in_buf, size_t size)
|
|||||||
if (buffer->first + size > buffer->size)
|
if (buffer->first + size > buffer->size)
|
||||||
{
|
{
|
||||||
first_read = buffer->size - buffer->first;
|
first_read = buffer->size - buffer->first;
|
||||||
rest_read = size - first_read;
|
rest_read = size - first_read;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(in_buf, (const uint8_t*)buffer->buffer + buffer->first, first_read);
|
memcpy(in_buf, (const uint8_t*)buffer->buffer + buffer->first, first_read);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user