Develop and Download Open Source Software

Browse CVS Repository

Contents of /autocoast/src/lib/databuf.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download) (as text)
Fri Nov 12 15:32:50 2004 UTC (19 years, 5 months ago) by tmurakam
Branch: MAIN
CVS Tags: v0_3, v0_2, HEAD
File MIME type: text/x-c++src
updated

1 //
2 // AutoCoast: Automatic Coastline scenery generator for Flight Simulator
3 //
4 // Copyright (c) 2004, Takuya Murakami. All rights reserved.
5 //
6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions
8 // are met:
9 //
10 // 1. Redistributions of source code must retain the above copyright
11 // notice, this list of conditions and the following disclaimer.
12 //
13 // 2. Redistributions in binary form must reproduce the above copyright
14 // notice, this list of conditions and the following disclaimer in the
15 // documentation and/or other materials provided with the distribution.
16 //
17 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 // ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
21 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
29 // databuf.cc : data buffer
30
31 #include <stdio.h>
32 #include <stdlib.h>
33 #include <string.h>
34 #include <stdarg.h>
35
36 #include "databuf.hpp"
37
38 #define BUF_UNIT 256
39
40 DataBuf::DataBuf()
41 {
42 sz = 0;
43
44 buf = (char *)malloc(BUF_UNIT);
45 bufsz = BUF_UNIT;
46 }
47
48 DataBuf::~DataBuf()
49 {
50 free(buf);
51 }
52
53 void DataBuf::write(void *data, int len)
54 {
55 int incr = sz + len - bufsz;
56 if (incr > 0) {
57 incr = incr - (incr % BUF_UNIT) + BUF_UNIT;
58 bufsz += incr;
59 buf = (char *)realloc(buf, bufsz);
60 }
61
62 memcpy(buf + sz, data, len);
63 sz += len;
64 }
65
66
67 void DataBuf::sprintf(const char *fmt, ...)
68 {
69 va_list ap;
70 char buf[10240];
71
72 va_start(ap, fmt);
73 int len = vsprintf(buf, fmt, ap);
74 va_end(ap);
75 if (len <= 0) {
76 /* oops!!! */
77 exit(1); /* ### */
78 }
79 write(buf, len);
80 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26