File: variablebuffer.C.html

package info (click to toggle)
rudiments 0.31-2
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 7,516 kB
  • ctags: 3,248
  • sloc: asm: 23,776; cpp: 22,792; sh: 7,769; ansic: 1,769; makefile: 1,054; xml: 169; perl: 19
file content (132 lines) | stat: -rw-r--r-- 10,796 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132







<pre>
<font color="#0000ff">// Copyright (c) 2002  David Muse</font>
<font color="#0000ff">// See the file COPYING for more information</font>

<font color="#a020f0">#include </font><font color="#ff00ff">&lt;rudiments/variablebuffer.h&gt;</font>
<font color="#a020f0">#include </font><font color="#ff00ff">&lt;stdio.h&gt;</font>

<font color="#a020f0">#ifdef RUDIMENTS_NAMESPACE</font>
<font color="#a52a2a"><b>using</b></font> <font color="#2e8b57"><b>namespace</b></font> rudiments;
<font color="#a020f0">#endif</font>

<font color="#2e8b57"><b>int</b></font> main(<font color="#2e8b57"><b>int</b></font> argc, <font color="#2e8b57"><b>const</b></font> <font color="#2e8b57"><b>char</b></font> **argv) {

        <font color="#0000ff">// create a buffer</font>
        variablebuffer  *vb=<font color="#a52a2a"><b>new</b></font> variablebuffer(<font color="#ff00ff">10</font>,<font color="#ff00ff">10</font>);

        <font color="#0000ff">// append some string sequences to the buffer and display the contents</font>
        <font color="#0000ff">// of the buffer byte by byte</font>
        vb-&gt;append((<font color="#2e8b57"><b>unsigned</b></font> <font color="#2e8b57"><b>char</b></font> *)<font color="#ff00ff">&quot;12345&quot;</font>,<font color="#ff00ff">5</font>);
        vb-&gt;append((<font color="#2e8b57"><b>unsigned</b></font> <font color="#2e8b57"><b>char</b></font> *)<font color="#ff00ff">&quot;12345&quot;</font>,<font color="#ff00ff">5</font>);
        vb-&gt;append((<font color="#2e8b57"><b>unsigned</b></font> <font color="#2e8b57"><b>char</b></font> *)<font color="#ff00ff">&quot;12345&quot;</font>,<font color="#ff00ff">5</font>);
        vb-&gt;append((<font color="#2e8b57"><b>unsigned</b></font> <font color="#2e8b57"><b>char</b></font> *)<font color="#ff00ff">&quot;12345&quot;</font>,<font color="#ff00ff">5</font>);
        vb-&gt;append((<font color="#2e8b57"><b>unsigned</b></font> <font color="#2e8b57"><b>char</b></font> *)<font color="#ff00ff">&quot;12345&quot;</font>,<font color="#ff00ff">5</font>);
        <font color="#a52a2a"><b>for</b></font> (<font color="#2e8b57"><b>size_t</b></font> i=<font color="#ff00ff">0</font>; i&lt;vb-&gt;getSize(); i++) {
                printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">%c</font><font color="#ff00ff">&quot;</font>,vb-&gt;getBuffer()[i]);
        }
        printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>);


        <font color="#0000ff">// write 66666 to the buffer at position 0 and display it's contents</font>
        <font color="#0000ff">// byte by byte (the first 5 bytes should be overwritten)</font>
        vb-&gt;setPosition(<font color="#ff00ff">0</font>);
        vb-&gt;write((<font color="#2e8b57"><b>unsigned</b></font> <font color="#2e8b57"><b>char</b></font> *)<font color="#ff00ff">&quot;66666&quot;</font>,<font color="#ff00ff">5</font>);
        <font color="#a52a2a"><b>for</b></font> (<font color="#2e8b57"><b>size_t</b></font> i=<font color="#ff00ff">0</font>; i&lt;vb-&gt;getSize(); i++) {
                printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">%c</font><font color="#ff00ff">&quot;</font>,vb-&gt;getBuffer()[i]);
        }
        printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>);


        <font color="#0000ff">// write 66666 to the buffer at position 30 and display it's contents</font>
        <font color="#0000ff">// byte by byte, displaying nonprintable characters as .'s</font>
        <font color="#0000ff">// (there should be a gap in the buffer now containing random data)</font>
        vb-&gt;setPosition(<font color="#ff00ff">30</font>);
        vb-&gt;write((<font color="#2e8b57"><b>unsigned</b></font> <font color="#2e8b57"><b>char</b></font> *)<font color="#ff00ff">&quot;66666&quot;</font>,<font color="#ff00ff">5</font>);
        <font color="#a52a2a"><b>for</b></font> (<font color="#2e8b57"><b>size_t</b></font> i=<font color="#ff00ff">0</font>; i&lt;vb-&gt;getSize(); i++) {
                <font color="#a52a2a"><b>if</b></font> (vb-&gt;getBuffer()[i]&gt;=<font color="#ff00ff">' '</font> &amp;&amp; vb-&gt;getBuffer()[i]&lt;=<font color="#ff00ff">'~'</font>) {
                        printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">%c</font><font color="#ff00ff">&quot;</font>,vb-&gt;getBuffer()[i]);
                } <font color="#a52a2a"><b>else</b></font> {
                        printf(<font color="#ff00ff">&quot;.&quot;</font>);
                }
        }
        printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>);


        <font color="#0000ff">// set the current position to 50</font>
        vb-&gt;setPosition(<font color="#ff00ff">50</font>);

        <font color="#0000ff">// Append 12345 to the buffer and display it's contents byte by byte,</font>
        <font color="#0000ff">// displaying nonprintable characters as .'s</font>
        <font color="#0000ff">// Since we used append() instead of write(), the data should not be</font>
        <font color="#0000ff">// written at position 50, but rather just at the current end of</font>
        <font color="#0000ff">// the buffer.</font>
        vb-&gt;append((<font color="#2e8b57"><b>unsigned</b></font> <font color="#2e8b57"><b>char</b></font> *)<font color="#ff00ff">&quot;12345&quot;</font>,<font color="#ff00ff">5</font>);
        <font color="#a52a2a"><b>for</b></font> (<font color="#2e8b57"><b>size_t</b></font> i=<font color="#ff00ff">0</font>; i&lt;vb-&gt;getSize(); i++) {
                <font color="#a52a2a"><b>if</b></font> (vb-&gt;getBuffer()[i]&gt;=<font color="#ff00ff">' '</font> &amp;&amp; vb-&gt;getBuffer()[i]&lt;=<font color="#ff00ff">'~'</font>) {
                        printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">%c</font><font color="#ff00ff">&quot;</font>,vb-&gt;getBuffer()[i]);
                } <font color="#a52a2a"><b>else</b></font> {
                        printf(<font color="#ff00ff">&quot;.&quot;</font>);
                }
        }
        printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>);

        <font color="#0000ff">// Write 12345 to the buffer at the current position and display it's</font>
        <font color="#0000ff">// contents byte by byte, displaying nonprintable characters as .'s</font>
        <font color="#0000ff">// The current position should just be the end of the buffer, since</font>
        <font color="#0000ff">// we just appended.  So calling write() here is equivalent to calling</font>
        <font color="#0000ff">// append.</font>
        vb-&gt;write((<font color="#2e8b57"><b>unsigned</b></font> <font color="#2e8b57"><b>char</b></font> *)<font color="#ff00ff">&quot;12345&quot;</font>,<font color="#ff00ff">5</font>);
        <font color="#a52a2a"><b>for</b></font> (<font color="#2e8b57"><b>size_t</b></font> i=<font color="#ff00ff">0</font>; i&lt;vb-&gt;getSize(); i++) {
                <font color="#a52a2a"><b>if</b></font> (vb-&gt;getBuffer()[i]&gt;=<font color="#ff00ff">' '</font> &amp;&amp; vb-&gt;getBuffer()[i]&lt;=<font color="#ff00ff">'~'</font>) {
                        printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">%c</font><font color="#ff00ff">&quot;</font>,vb-&gt;getBuffer()[i]);
                } <font color="#a52a2a"><b>else</b></font> {
                        printf(<font color="#ff00ff">&quot;.&quot;</font>);
                }
        }
        printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>);


        <font color="#0000ff">// read 4 bytes from position 0 of the buffer and display them</font>
        <font color="#2e8b57"><b>unsigned</b></font> <font color="#2e8b57"><b>char</b></font>  buffer[<font color="#ff00ff">5</font>];
        buffer[<font color="#ff00ff">4</font>]=(<font color="#2e8b57"><b>unsigned</b></font> <font color="#2e8b57"><b>char</b></font>)<font color="#ff00ff">NULL</font>;
        vb-&gt;setPosition(<font color="#ff00ff">0</font>);
        <font color="#2e8b57"><b>unsigned</b></font> <font color="#2e8b57"><b>long</b></font>  sizeread=vb-&gt;read(buffer,<font color="#ff00ff">4</font>);
        printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">%ld</font><font color="#ff00ff">: &quot;</font>,sizeread);
        <font color="#a52a2a"><b>for</b></font> (<font color="#2e8b57"><b>unsigned</b></font> <font color="#2e8b57"><b>long</b></font> i=<font color="#ff00ff">0</font>; i&lt;sizeread; i++) {
                printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">%c</font><font color="#ff00ff">&quot;</font>,buffer[i]);
        }
        printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>);

        <font color="#0000ff">// read 4 bytes from position 5 of the buffer and display them</font>
        vb-&gt;setPosition(<font color="#ff00ff">5</font>);
        sizeread=vb-&gt;read(buffer,<font color="#ff00ff">4</font>);
        printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">%ld</font><font color="#ff00ff">: &quot;</font>,sizeread);
        <font color="#a52a2a"><b>for</b></font> (<font color="#2e8b57"><b>unsigned</b></font> <font color="#2e8b57"><b>long</b></font> i=<font color="#ff00ff">0</font>; i&lt;sizeread; i++) {
                printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">%c</font><font color="#ff00ff">&quot;</font>,buffer[i]);
        }
        printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>);

        <font color="#0000ff">// read 4 bytes from position 60 of the buffer and display them</font>
        <font color="#0000ff">// (since this is off of the end of the buffer, nothing should be</font>
        <font color="#0000ff">// displayed)</font>
        vb-&gt;setPosition(<font color="#ff00ff">60</font>);
        sizeread=vb-&gt;read(buffer,<font color="#ff00ff">4</font>);
        printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">%ld</font><font color="#ff00ff">: &quot;</font>,sizeread);
        <font color="#a52a2a"><b>for</b></font> (<font color="#2e8b57"><b>unsigned</b></font> <font color="#2e8b57"><b>long</b></font> i=<font color="#ff00ff">0</font>; i&lt;sizeread; i++) {
                printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">%c</font><font color="#ff00ff">&quot;</font>,buffer[i]);
        }
        printf(<font color="#ff00ff">&quot;</font><font color="#6a5acd">\n</font><font color="#ff00ff">&quot;</font>);


        <font color="#a52a2a"><b>delete</b></font> vb;
}
</pre>