26 |
#include "window.h" |
#include "window.h" |
27 |
|
|
28 |
void |
void |
29 |
win_init(win) |
win_init (win) |
30 |
window_t *win; |
window_t *win; |
31 |
{ |
{ |
32 |
win->used=0; |
win->used = 0; |
33 |
win->size=0; |
win->size = 0; |
34 |
win->packet=NULL; |
win->packet = NULL; |
35 |
win->packet_size=NULL; |
win->packet_size = NULL; |
36 |
} |
} |
37 |
|
|
38 |
void |
void |
39 |
win_alloc(win, size) |
win_alloc (win, size) |
40 |
window_t *win; |
window_t *win; |
41 |
int size; |
int size; |
42 |
{ |
{ |
43 |
win_init(win); |
win_init (win); |
44 |
win->size = size; |
win->size = size; |
45 |
win->packet = malloc(size * sizeof(char *)); |
win->packet = malloc (size * sizeof (char *)); |
46 |
win->packet_size = malloc(size * sizeof(size_t)); |
win->packet_size = malloc (size * sizeof (size_t)); |
47 |
} |
} |
48 |
|
|
49 |
void |
void |
50 |
win_free(win) |
win_free (win) |
51 |
window_t *win; |
window_t *win; |
52 |
{ |
{ |
53 |
win_flush(win); |
win_flush (win); |
54 |
free(win->packet); |
free (win->packet); |
55 |
free(win->packet_size); |
free (win->packet_size); |
56 |
} |
} |
57 |
|
|
58 |
int |
int |
59 |
win_full(win) |
win_full (win) |
60 |
window_t *win; |
window_t *win; |
61 |
{ |
{ |
62 |
return (win->used == win->size); |
return (win->used == win->size); |
63 |
} |
} |
64 |
|
|
65 |
int |
int |
66 |
win_empty(win) |
win_empty (win) |
67 |
window_t *win; |
window_t *win; |
68 |
{ |
{ |
69 |
return (win->used == 0); |
return (win->used == 0); |
70 |
} |
} |
71 |
|
|
72 |
void |
void |
73 |
win_add(win, packet, packet_size) |
win_add (win, packet, packet_size) |
74 |
window_t *win; |
window_t *win; |
75 |
char *packet; |
char *packet; |
76 |
size_t packet_size; |
size_t packet_size; |
77 |
{ |
{ |
78 |
if(win_full(win)) return; |
if (win_full (win)) |
79 |
|
return; |
80 |
win->packet[win->used] = malloc(packet_size); |
|
81 |
memcpy(win->packet[win->used], packet, packet_size); |
win->packet[win->used] = malloc (packet_size); |
82 |
|
memcpy (win->packet[win->used], packet, packet_size); |
83 |
win->packet_size[win->used] = packet_size; |
win->packet_size[win->used] = packet_size; |
84 |
win->used++; |
win->used++; |
85 |
} |
} |
86 |
|
|
87 |
void |
void |
88 |
win_delete(win, nb) |
win_delete (win, nb) |
89 |
window_t *win; |
window_t *win; |
90 |
int nb; |
int nb; |
91 |
{ |
{ |
92 |
int i; |
int i; |
93 |
|
|
94 |
if(nb>win->used) |
if (nb > win->used) |
95 |
nb = win->used; |
nb = win->used; |
96 |
|
|
97 |
for(i=0; i<nb; i++) |
for (i = 0; i < nb; i++) |
98 |
{ |
{ |
99 |
free(win->packet[i]); |
free (win->packet[i]); |
100 |
} |
} |
101 |
|
|
102 |
if(nb<win->used) |
if (nb < win->used) |
103 |
{ |
{ |
104 |
memmove(&(win->packet[0]), &(win->packet[nb]), |
memmove (&(win->packet[0]), &(win->packet[nb]), |
105 |
(win->used - nb) * sizeof(char *)); |
(win->used - nb) * sizeof (char *)); |
106 |
memmove(&(win->packet_size[0]), &(win->packet_size[nb]), |
memmove (&(win->packet_size[0]), &(win->packet_size[nb]), |
107 |
(win->used - nb) * sizeof(size_t)); |
(win->used - nb) * sizeof (size_t)); |
108 |
} |
} |
109 |
win->used-=nb; |
win->used -= nb; |
110 |
for(i=win->used; i<win->size; i++) |
for (i = win->used; i < win->size; i++) |
111 |
{ |
{ |
112 |
win->packet[i]=NULL; |
win->packet[i] = NULL; |
113 |
win->packet_size[i]=0; |
win->packet_size[i] = 0; |
114 |
} |
} |
115 |
} |
} |
116 |
|
|
117 |
|
|
118 |
void |
void |
119 |
win_get(win, num, packet, packet_size) |
win_get (win, num, packet, packet_size) |
120 |
window_t *win; |
window_t *win; |
121 |
int num; |
int num; |
122 |
char **packet; |
char **packet; |
123 |
size_t *packet_size; |
size_t *packet_size; |
124 |
{ |
{ |
125 |
if(num > win->used - 1 || num < 0) |
if (num > win->used - 1 || num < 0) |
126 |
{ |
{ |
127 |
*packet = NULL; |
*packet = NULL; |
128 |
*packet_size = 0; |
*packet_size = 0; |
135 |
} |
} |
136 |
|
|
137 |
void |
void |
138 |
win_first(win, packet, packet_size) |
win_first (win, packet, packet_size) |
139 |
window_t *win; |
window_t *win; |
140 |
char **packet; |
char **packet; |
141 |
size_t *packet_size; |
size_t *packet_size; |
142 |
|
|
143 |
{ |
{ |
144 |
win_get(win,0,packet,packet_size); |
win_get (win, 0, packet, packet_size); |
145 |
} |
} |
146 |
|
|
147 |
void |
void |
148 |
win_last(win, packet, packet_size) |
win_last (win, packet, packet_size) |
149 |
window_t *win; |
window_t *win; |
150 |
char **packet; |
char **packet; |
151 |
size_t *packet_size; |
size_t *packet_size; |
152 |
{ |
{ |
153 |
win_get(win, win->used - 1, packet, packet_size); |
win_get (win, win->used - 1, packet, packet_size); |
154 |
} |
} |
155 |
|
|
156 |
void |
void |
157 |
win_flush(win) |
win_flush (win) |
158 |
window_t *win; |
window_t *win; |
159 |
{ |
{ |
160 |
win_delete(win, win->used); |
win_delete (win, win->used); |
161 |
} |
} |