mirror of
https://github.com/pret/pokediamond.git
synced 2026-08-06 18:53:21 -05:00
47 lines
991 B
C
47 lines
991 B
C
#ifndef NITRO_FSI_UTIL_H_
|
|
#define NITRO_FSI_UTIL_H_
|
|
|
|
#define ALIGN_MASK(a) ((u32)((a) - 1))
|
|
|
|
#define ALIGN_BYTE(n, a) (((u32)(n) + ALIGN_MASK(a)) & ~ALIGN_MASK(a))
|
|
|
|
#define BIT_MASK(a) ((u32)((1 << (a)) - 1))
|
|
|
|
static inline BOOL FSi_IsSlash(u32 c)
|
|
{
|
|
return (c == '/') || (c == '\\');
|
|
}
|
|
|
|
static inline void FSi_CutFromListCore(FSFileLink *trg)
|
|
{
|
|
FSFile *const pr = trg->prev;
|
|
FSFile *const nx = trg->next;
|
|
if (pr)
|
|
pr->link.next = nx;
|
|
if (nx)
|
|
nx->link.prev = pr;
|
|
}
|
|
|
|
static inline void FSi_CutFromList(FSFile *elem)
|
|
{
|
|
FSFileLink *const trg = &elem->link;
|
|
FSi_CutFromListCore(trg);
|
|
trg->next = trg->prev = NULL;
|
|
}
|
|
|
|
static inline void FSi_AppendToList(FSFile *elem, FSFile *list)
|
|
{
|
|
FSFileLink *const trg = &elem->link;
|
|
FSi_CutFromListCore(trg);
|
|
{
|
|
while (list->link.next)
|
|
list = list->link.next;
|
|
list->link.next = elem;
|
|
trg->prev = list;
|
|
trg->next = NULL;
|
|
}
|
|
}
|
|
|
|
|
|
#endif //NITRO_FSI_UTIL_H_
|