/* * melisma - extensible and scriptable audio engine * Copyright (C) 2026 Ludvig Gunne Lindström * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef RING_H #define RING_H #include #include typedef struct ml_ring ml_ring; ml_ring *ml_ring_init(size_t len); void ml_ring_free(ml_ring *r); int ml_ring_empty(ml_ring *r); int ml_ring_has_space(ml_ring *r, size_t len); int ml_ring_put(ml_ring *r, uint8_t c); int ml_ring_get(ml_ring *r, uint8_t *c); size_t ml_ring_write(ml_ring *r, const void *ptr, size_t len); size_t ml_ring_read(ml_ring *r, void *ptr, size_t len); void ml_ring_put_blocking(ml_ring *r, uint8_t c); uint8_t ml_ring_get_blocking(ml_ring *r); void ml_ring_write_blocking(ml_ring *r, const void *ptr, size_t len); void ml_ring_read_blocking(ml_ring *r, void *ptr, size_t len); #endif