A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 84 lines 2.3 kB view raw
1/*************************************************************************** 2 * __________ __ ___. 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 7 * \/ \/ \/ \/ \/ 8 * $Id$ 9 * 10 * Copyright (C) 2014 Franklin Wei, Benjamin Brown 11 * Copyright (C) 2004 Gregory Montoir 12 * 13 * This program is free software; you can redistribute it and/or 14 * modify it under the terms of the GNU General Public License 15 * as published by the Free Software Foundation; either version 2 16 * of the License, or (at your option) any later version. 17 * 18 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 19 * KIND, either express or implied. 20 * 21 ***************************************************************************/ 22 23#ifndef __SERIALIZER_H__ 24#define __SERIALIZER_H__ 25 26#include "intern.h" 27 28#define CUR_VER 2 29 30#define VER(x) x 31 32enum EntryType { 33 SET_INT, 34 SET_ARRAY, 35 SET_PTR, 36 SET_END 37}; 38 39#define SE_INT(i,sz,ver) { SET_INT, sz, 1, i, ver, CUR_VER } 40#define SE_ARRAY(a,n,sz,ver) { SET_ARRAY, sz, n, a, ver, CUR_VER } 41#define SE_PTR(p,ver) { SET_PTR, 0, 0, p, ver, CUR_VER } 42#define SE_END() { SET_END, 0, 0, 0, 0, 0 } 43 44struct File; 45 46enum { 47 SES_BOOL = 1, 48 SES_INT8 = 1, 49 SES_INT16 = 2, 50 SES_INT32 = 4 51}; 52 53enum Mode { 54 SM_SAVE, 55 SM_LOAD 56}; 57 58struct Entry { 59 enum EntryType type; 60 uint8_t size; 61 uint16_t n; 62 void *data; 63 uint16_t minVer; 64 uint16_t maxVer; 65}; 66 67struct Serializer { 68 File *_stream; 69 enum Mode _mode; 70 uint8_t *_ptrBlock; 71 uint16_t _saveVer; 72 uint32_t _bytesCount; 73}; 74 75void ser_create(struct Serializer*, File *stream, enum Mode mode, uint8_t *ptrBlock, uint16_t saveVer); 76 77void ser_saveOrLoadEntries(struct Serializer*, struct Entry *entry); 78 79void ser_saveEntries(struct Serializer*, struct Entry *entry); 80void ser_loadEntries(struct Serializer*, struct Entry *entry); 81 82void ser_saveInt(struct Serializer*, uint8_t es, void *p); 83void ser_loadInt(struct Serializer*, uint8_t es, void *p); 84#endif