/* ------------------------------- * vim:tabstop=4:shiftwidth=4 * common.h * Mon, 01 May 2006 01:45:08 +0700 * ------------------------------- * Common declarations * -------------------------------*/ #ifndef _COMMON_H_ #define _COMMON_H_ #include "debug.h" #define PROGNAME PACKAGE /* Default icon size */ #define FALLBACK_ICON_SIZE 24 /* Minimal icon size */ #define MIN_ICON_SIZE 16 /* Default KDE icon size */ #define KDE_ICON_SIZE 22 /* Number of time icon is allowed to change its size after which * stalonetray gives up */ #define ICON_SIZE_RESETS_THRESHOLD 2 /* Meaningful names for return values */ #define SUCCESS 1 #define FAILURE 0 /* Simple macro to return status and log it if necessary */ #define RETURN_STATUS(rc) do { \ LOG_TRACE(("status = %s\n", ((rc) == SUCCESS ? "SUCCESS" : "FAILURE"))); \ return rc; \ } while(0) /* Meaningful names for return values of icon mass-operations */ #define MATCH 1 #define NO_MATCH 0 /* Simple macro to return mass-op status and log it if necessary */ #define RETURN_MATCH(rc) do { \ LOG_TRACE(("status = %s\n", rc == MATCH : "MATCH" : "NO_MATCH")); \ return rc; \ } while(0) /* Meaningful names for return values of icon mass-operations */ #define MATCH 1 /* Portable macro for function name */ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define __FUNC__ __func__ #elif defined(__GNUC__) && __GNUC__ >= 3 #define __FUNC__ __FUNCTION__ #else #define __FUNC__ "unknown" #endif /* DIE */ #define DIEDIE() exit(-1) /* Print a message and... DIE */ #define DIE(message) do { LOG_ERROR(message); DIEDIE(); } while(0) /* Log OOM condition */ #define LOG_ERR_IE(message) do { \ LOG_ERROR(("Internal error, please report to maintaner (see AUTHORS)\n")); \ LOG_ERROR(message); \ } while(0); /* DIE on internal error */ #define DIE_IE(message) do { LOG_ERR_IE(message); DIEDIE(); } while(0) /* Log OOM condition */ #define LOG_ERR_OOM(message) do { \ LOG_ERROR(("Out of memory\n")); \ LOG_ERROR(message); \ } while(0); /* DIE on OOM error */ #define DIE_OOM(message) do { LOG_ERR_OOM(message); DIEDIE(); } while(0) /*** WARNING: feed following macros only with side-effects-free expressions ***/ /* Get a value within target interval */ #define cutoff(tgt,min,max) (tgt) < (min) ? (min) : ((tgt) > (max) ? max : tgt) /* Update value to fit into target interval */ #define val_range(tgt,min,max) (tgt) = cutoff(tgt,min,max) #endif