type_common: add tbm_##res##_str and tbm_error_str
[platform/core/uifw/libtbm.git] / src / tbm_type_common.h
index 26facf7..1b8ab30 100644 (file)
@@ -233,4 +233,38 @@ typedef enum {
        TBM_BUFGMR_DEBUG_TRACE_SURFACE_QUEUE    = (1 << 3),
 } tbm_bufmgr_debug_trace_mask;
 
+/* type to string ***********************************************************/
+struct tbm_type_name {
+       int type;
+       const char *name;
+};
+
+#define TBM_ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
+
+#define TBM_TYPE_NAME_FN(res) \
+static inline const char * tbm_##res##_str(int type)   \
+{                      \
+       unsigned int i;                                 \
+       for (i = 0; i < TBM_ARRAY_SIZE(tbm_##res##_names); i++) { \
+               if (tbm_##res##_names[i].type == type)  \
+                       return tbm_##res##_names[i].name;       \
+       }                                               \
+       return "(invalid)";                             \
+}
+
+static struct tbm_type_name tbm_error_names[] = {
+       { TBM_ERROR_NONE, "TBM_ERROR_NONE" },
+       { TBM_ERROR_OUT_OF_MEMORY, "TBM_ERROR_OUT_OF_MEMORY" },
+       { TBM_ERROR_INVALID_PARAMETER, "TBM_ERROR_INVALID_PARAMETER" },
+       { TBM_ERROR_INVALID_OPERATION, "TBM_ERROR_INVALID_OPERATION" },
+       { TBM_ERROR_NOT_SUPPORTED, "TBM_ERROR_NOT_SUPPORTED" },
+       { TBM_SURFACE_QUEUE_ERROR_EMPTY, "TBM_SURFACE_QUEUE_ERROR_EMPTY" },
+       { TBM_SURFACE_QUEUE_ERROR_INVALID_QUEUE, "TBM_SURFACE_QUEUE_ERROR_INVALID_QUEUE" },
+       { TBM_SURFACE_QUEUE_ERROR_INVALID_SURFACE, "TBM_SURFACE_QUEUE_ERROR_INVALID_SURFACE" },
+       { TBM_SURFACE_QUEUE_ERROR_SURFACE_ALLOC_FAILED, "TBM_SURFACE_QUEUE_ERROR_SURFACE_ALLOC_FAILED" },
+       { TBM_SURFACE_QUEUE_ERROR_ALREADY_EXIST, "TBM_SURFACE_QUEUE_ERROR_ALREADY_EXIST" },
+       { TBM_SURFACE_QUEUE_ERROR_UNKNOWN_SURFACE, "TBM_SURFACE_QUEUE_ERROR_UNKNOWN_SURFACE" },
+};
+TBM_TYPE_NAME_FN(error)
+
 #endif                                                 /* _TBM_TYPE_COMMON_H_ */