changeset 114:e9de22e5a6d5

Add functions for converting resource flags to symbolic string form and back.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 03 Oct 2012 13:47:26 +0300
parents 34ccf783ecca
children 23e03defa759
files dmres.c dmres.h
diffstat 2 files changed, 38 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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;
--- 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);