diff options
author | Made <made111@gmx.de> | 2020-05-09 19:44:50 +0200 |
---|---|---|
committer | Made <made111@gmx.de> | 2020-05-09 19:44:50 +0200 |
commit | eff30d81b4785428ca4e86383f665f9f03c76b9f (patch) | |
tree | a168324f6cb3f88716e1a630b58ac93e8a0b42c9 /arm9/lib/include/FSi_util.h | |
parent | 4abf7d45568d93040fdb86993e915ffdfc4c4a9e (diff) | |
parent | e1c517d34810fe83865e896a23e46a2ea089261f (diff) |
Merge branch 'master' of https://github.com/martmists/pokediamond
Diffstat (limited to 'arm9/lib/include/FSi_util.h')
-rw-r--r-- | arm9/lib/include/FSi_util.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/arm9/lib/include/FSi_util.h b/arm9/lib/include/FSi_util.h new file mode 100644 index 00000000..6e96681e --- /dev/null +++ b/arm9/lib/include/FSi_util.h @@ -0,0 +1,46 @@ +#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_ |