/[pengfork]/pengfork/src/window.c
ViewVC logotype

Diff of /pengfork/src/window.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by chupa, Wed Sep 11 15:39:32 2002 UTC revision 1.3 by chupa, Sun Dec 1 01:19:07 2002 UTC
# Line 26  Line 26 
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;
# Line 134  win_get(win, num, packet, packet_size) Line 135  win_get(win, num, packet, packet_size)
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  }  }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26