00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef STR_UTILS_H
00021 #define STR_UTILS_H
00022
00023
00024 #include <ortp/port.h>
00025
00026
00027 typedef struct msgb
00028 {
00029 struct msgb *b_prev;
00030 struct msgb *b_next;
00031 struct msgb *b_cont;
00032 struct datab *b_datap;
00033 unsigned char *b_rptr;
00034 unsigned char *b_wptr;
00035 uint32_t reserved1;
00036 uint32_t reserved2;
00037 } mblk_t;
00038
00039 typedef struct datab
00040 {
00041 unsigned char *db_base;
00042 unsigned char *db_lim;
00043 void (*db_freefn)(void*);
00044 int db_ref;
00045 } dblk_t;
00046
00047 typedef struct _queue
00048 {
00049 mblk_t _q_stopper;
00050 int q_mcount;
00051 } queue_t;
00052
00053 #ifdef __cplusplus
00054 extern "C" {
00055 #endif
00056
00057 void qinit(queue_t *q);
00058
00059 void putq(queue_t *q, mblk_t *m);
00060
00061 mblk_t * getq(queue_t *q);
00062
00063 void insq(queue_t *q,mblk_t *emp, mblk_t *mp);
00064
00065 void remq(queue_t *q, mblk_t *mp);
00066
00067 mblk_t * peekq(queue_t *q);
00068
00069
00070 #define FLUSHALL 0
00071 void flushq(queue_t *q, int how);
00072
00073 void mblk_init(mblk_t *mp);
00074
00075
00076 mblk_t *allocb(int size, int unused);
00077 #define BPRI_MED 0
00078
00079
00080 mblk_t *esballoc(uint8_t *buf, int size, int pri, void (*freefn)(void*) );
00081
00082
00083 void freeb(mblk_t *m);
00084
00085
00086
00087 void freemsg(mblk_t *mp);
00088
00089
00090 mblk_t *dupb(mblk_t *m);
00091
00092
00093 mblk_t *dupmsg(mblk_t* m);
00094
00095
00096 int msgdsize(const mblk_t *mp);
00097
00098
00099 void msgpullup(mblk_t *mp,int len);
00100
00101
00102 mblk_t *copyb(mblk_t *mp);
00103
00104
00105 mblk_t *copymsg(mblk_t *mp);
00106
00107 mblk_t * appendb(mblk_t *mp, const char *data, int size, bool_t pad);
00108 void msgappend(mblk_t *mp, const char *data, int size, bool_t pad);
00109
00110 mblk_t *concatb(mblk_t *mp, mblk_t *newm);
00111
00112 #define qempty(q) (&(q)->_q_stopper==(q)->_q_stopper.b_next)
00113 #define qfirst(q) ((q)->_q_stopper.b_next!=&(q)->_q_stopper ? (q)->_q_stopper.b_next : NULL)
00114 #define qbegin(q) ((q)->_q_stopper.b_next)
00115 #define qlast(q) ((q)->_q_stopper.b_prev!=&(q)->_q_stopper ? (q)->_q_stopper.b_prev : NULL)
00116 #define qend(q,mp) ((mp)==&(q)->_q_stopper || ((mp)==&(q)->_q_stopper))
00117 #define qnext(q,mp) ((mp)->b_next)
00118 #ifdef __cplusplus
00119 }
00120 #endif
00121
00122 #endif