/[public]/psiconv/trunk/lib/psiconv/buffer.c
ViewVC logotype

Annotation of /psiconv/trunk/lib/psiconv/buffer.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 79 - (hide annotations)
Mon Dec 25 22:25:33 2000 UTC (23 years, 3 months ago) by frodo
File MIME type: text/plain
File size: 2330 byte(s)
(Frodo) Added a complete buffer abstraction

1 frodo 79 /*
2     buffer.c - Part of psiconv, a PSION 5 file formats converter
3     Copyright (c) 2000 Frodo Looijaard <frodol@dds.nl>
4    
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9    
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13     GNU General Public License for more details.
14    
15     You should have received a copy of the GNU General Public License
16     along with this program; if not, write to the Free Software
17     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18     */
19    
20    
21     #include "config.h"
22     #include "compat.h"
23    
24     #include <stdlib.h>
25    
26     #include "list.h"
27     #include "error.h"
28     #include "buffer.h"
29    
30     struct psiconv_buffer_s {
31     psiconv_u32 base_offset;
32     psiconv_list data;
33     };
34    
35     psiconv_buffer psiconv_buffer_new(psiconv_u32 base_offset)
36     {
37     psiconv_buffer buf;
38     if (!(buf = malloc(sizeof(*buf))))
39     return NULL;
40     if (!(buf->data = psiconv_list_new(sizeof(psiconv_u8)))) {
41     free(buf);
42     return NULL;
43     }
44     buf->base_offset = base_offset;
45     return buf;
46     }
47    
48     void psiconv_buffer_free(psiconv_buffer buf)
49     {
50     psiconv_list_free(buf->data);
51     free(buf);
52     }
53    
54     psiconv_u32 psiconv_buffer_base_offset(const psiconv_buffer buf)
55     {
56     return buf->base_offset;
57     }
58    
59     psiconv_u32 psiconv_buffer_length(const psiconv_buffer buf)
60     {
61     return psiconv_list_length(buf->data);
62     }
63    
64    
65     psiconv_u8 *psiconv_buffer_get(const psiconv_buffer buf, psiconv_u32 off)
66     {
67     return psiconv_list_get(buf->data,off);
68     }
69    
70     int psiconv_buffer_add(psiconv_buffer buf,psiconv_u8 data)
71     {
72     return psiconv_list_add(buf->data,&data);
73     }
74    
75     size_t psiconv_buffer_fread(psiconv_buffer buf,size_t size, FILE *f)
76     {
77     return psiconv_list_fread(buf->data,size,f);
78     }
79    
80     int psiconv_buffer_fread_all(psiconv_buffer buf, FILE *f)
81     {
82     return psiconv_list_fread_all(buf->data,f);
83     }
84    
85     int psiconv_buffer_fwrite_all(const psiconv_buffer buf, FILE *f)
86     {
87     return psiconv_list_fwrite_all(buf->data,f);
88     }
89    
90     int psiconv_buffer_concat(psiconv_buffer buf, const psiconv_buffer extra)
91     {
92     return psiconv_list_concat(buf->data,extra->data);
93     }

frodo@frodo.looijaard.name
ViewVC Help
Powered by ViewVC 1.1.26