# HG changeset patch # User Matti Hamalainen # Date 1349261246 -10800 # Node ID e9de22e5a6d59f80f5df9fd358deb8e8dda6730d # Parent 34ccf783eccab87a0b7237929ff259d6c2d9692a Add functions for converting resource flags to symbolic string form and back. diff -r 34ccf783ecca -r e9de22e5a6d5 dmres.c --- a/dmres.c Wed Oct 03 10:27:13 2012 +0300 +++ b/dmres.c Wed Oct 03 13:47:26 2012 +0300 @@ -806,6 +806,42 @@ } +#define NADDFLAG(flg, ch) \ + do { \ + if ((flags & (flg)) && offs < size - 1) \ + str[offs++] = ch; \ + } while (0) + +void dmres_flags_to_symbolic(char *str, size_t size, int flags) +{ + size_t offs = 0; + NADDFLAG(DMF_PRELOAD_RAW, 'r'); + NADDFLAG(DMF_PRELOAD_RES, 'e'); + NADDFLAG(DMF_PERSIST, 'p'); + NADDFLAG(DMF_STREAM, 's'); + if (offs < size) + str[offs] = 0; +} + +#undef NADDFLAG + + +int dmres_symbolic_to_flags(const char *str) +{ + int offs, flags; + + for (flags = offs = 0; str[offs]; offs++) + switch (tolower(str[offs])) + { + case 'r': flags |= DMF_PRELOAD_RAW; break; + case 'e': flags |= DMF_PRELOAD_RES; break; + case 'p': flags |= DMF_PERSIST; break; + case 's': flags |= DMF_STREAM; break; + } + return flags; +} + + int dmres_load_resfile(const char *filename) { int ret = DMERR_OK; diff -r 34ccf783ecca -r e9de22e5a6d5 dmres.h --- a/dmres.h Wed Oct 03 10:27:13 2012 +0300 +++ b/dmres.h Wed Oct 03 13:47:26 2012 +0300 @@ -114,6 +114,8 @@ void dmres_prune(int agems, int flags); int dmres_preload(BOOL start, int *loaded, int *total); +void dmres_flags_to_symbolic(char *str, size_t size, int flags); +int dmres_symbolic_to_flags(const char *str); int dmres_load_resfile(const char *filename); int dmres_write_resfile(const char *filename);