00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef UTILS_H
00028 #define UTILS_H
00029
00030 #include "ortp/event.h"
00031
00032 struct _OList {
00033 struct _OList *next;
00034 struct _OList *prev;
00035 void *data;
00036 };
00037
00038 typedef struct _OList OList;
00039
00040
00041 #define o_list_next(elem) ((elem)->next)
00042
00043 OList * o_list_append(OList *elem, void * data);
00044 OList * o_list_remove(OList *list, void *data);
00045 OList * o_list_free(OList *elem);
00046
00047 #ifndef MIN
00048 #define MIN(a,b) (((a)>(b)) ? (b) : (a))
00049 #endif
00050 #ifndef MAX
00051 #define MAX(a,b) (((a)>(b)) ? (a) : (b))
00052 #endif
00053
00054 #define return_if_fail(expr) if (!(expr)) {printf("%s:%i- assertion"#expr "failed\n",__FILE__,__LINE__); return;}
00055 #define return_val_if_fail(expr,ret) if (!(expr)) {printf("%s:%i- assertion" #expr "failed\n",__FILE__,__LINE__); return (ret);}
00056
00057
00058 #define INT_TO_POINTER(truc) ((long)(long)(truc))
00059 #define POINTER_TO_INT(truc) ((int)(long)(truc))
00060
00061 typedef struct _dwsplit_t{
00062 #ifdef ORTP_BIGENDIAN
00063 uint16_t hi;
00064 uint16_t lo;
00065 #else
00066 uint16_t lo;
00067 uint16_t hi;
00068 #endif
00069 } dwsplit_t;
00070
00071 typedef union{
00072 dwsplit_t split;
00073 uint32_t one;
00074 } poly32_t;
00075
00076 #ifdef ORTP_BIGENDIAN
00077 #define hton24(x) (x)
00078 #else
00079 #define hton24(x) ((( (x) & 0x00ff0000) >>16) | (( (x) & 0x000000ff) <<16) | ( (x) & 0x0000ff00) )
00080 #endif
00081 #define ntoh24(x) hton24(x)
00082
00083 #if defined(WIN32) || defined(_WIN32_WCE)
00084 #define is_would_block_error(errnum) (errnum==WSAEWOULDBLOCK)
00085 #else
00086 #define is_would_block_error(errnum) (errnum==EWOULDBLOCK || errnum==EAGAIN)
00087 #endif
00088
00089 void ortp_ev_queue_put(OrtpEvQueue *q, OrtpEvent *ev);
00090
00091 #endif