File: DbstlDbt.html

package info (click to toggle)
db5.3 5.3.28%2Bdfsg1-0.8
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 158,400 kB
  • sloc: ansic: 448,406; java: 111,824; tcl: 80,544; sh: 44,326; cs: 33,697; cpp: 21,604; perl: 14,557; xml: 10,799; makefile: 4,077; javascript: 1,998; yacc: 1,003; awk: 965; sql: 801; erlang: 342; python: 216; php: 24; asm: 14
file content (172 lines) | stat: -rw-r--r-- 8,463 bytes parent folder | download | duplicates (8)
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Chapter 25.  DbstlDbt</title>
    <link rel="stylesheet" href="apiReference.css" type="text/css" />
    <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
    <link rel="start" href="index.html" title="Berkeley DB C++ Standard Template Library API Reference" />
    <link rel="up" href="index.html" title="Berkeley DB C++ Standard Template Library API Reference" />
    <link rel="prev" href="stlElementRef_DB_STL_value.html" title="_DB_STL_value" />
    <link rel="next" href="stlDbstlDbtdstr_DbstlDbt.html" title="~DbstlDbt" />
  </head>
  <body>
    <div xmlns="" class="navheader">
      <div class="libver">
        <p>Library Version 11.2.5.3</p>
      </div>
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">Chapter 25. 
 DbstlDbt  </th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="stlElementRef_DB_STL_value.html">Prev</a> </td>
          <th width="60%" align="center"> </th>
          <td width="20%" align="right"> <a accesskey="n" href="stlDbstlDbtdstr_DbstlDbt.html">Next</a></td>
        </tr>
      </table>
      <hr />
    </div>
    <div class="chapter" lang="en" xml:lang="en">
      <div class="titlepage">
        <div>
          <div>
            <h2 class="title"><a id="DbstlDbt"></a>Chapter 25. 
 DbstlDbt  </h2>
          </div>
        </div>
      </div>
      <p>You can persist all bytes in a chunk of contiguous memory by constructing an <a class="link" href="DbstlDbt.html" title="Chapter 25.  DbstlDbt">DbstlDbt</a>
 object A(use malloc to allocate the required number of bytes for A.data and copy the bytes to be stored into A.data, set other fields as necessary) and store A into a container, e.g. </p>
      <p>db_vector&lt;DbstlDbt&gt;, this stores the bytes rather than the object A into the underlying database. The <a class="link" href="DbstlDbt.html" title="Chapter 25.  DbstlDbt">DbstlDbt</a>
 class can help you avoid memory leaks, so it is strongly recommended that you use <a class="link" href="DbstlDbt.html" title="Chapter 25.  DbstlDbt">DbstlDbt</a>
 rather than Dbt class.</p>
      <p><a class="link" href="DbstlDbt.html" title="Chapter 25.  DbstlDbt">DbstlDbt</a>
 derives from Dbt class, and it does an deep copy on copy construction and assignment --by calling malloc to allocate its own memory and then copying the bytes to it; Conversely the destructor will free the memory on destruction if the data pointer is non-NULL. The destructor assumes the memory is allocated via malloc, hence why you are required to call malloc to allocate memory in order to use <a class="link" href="DbstlDbt.html" title="Chapter 25.  DbstlDbt">DbstlDbt</a>
.</p>
      <p><a class="link" href="DbstlDbt.html" title="Chapter 25.  DbstlDbt">DbstlDbt</a>
 simply inherits all methods from Dbt with no extra new methods except the constructors/destructor and assignment operator, so it is easy to use.</p>
      <p>In practice you rarely need to use <a class="link" href="DbstlDbt.html" title="Chapter 25.  DbstlDbt">DbstlDbt</a>
 or Dbt because dbstl enables you to store any complex objects or primitive data. Only when you need to store raw bytes, e.g. a bitmap, do you need to use <a class="link" href="DbstlDbt.html" title="Chapter 25.  DbstlDbt">DbstlDbt</a>
.</p>
      <p>Hence, <a class="link" href="DbstlDbt.html" title="Chapter 25.  DbstlDbt">DbstlDbt</a>
 is the right class to use to store any object into Berkeley DB via dbstl without memory leaks.</p>
      <p>Don't free the memory referenced by <a class="link" href="DbstlDbt.html" title="Chapter 25.  DbstlDbt">DbstlDbt</a>
 objects, it will be freed when the <a class="link" href="DbstlDbt.html" title="Chapter 25.  DbstlDbt">DbstlDbt</a>
 object is destructed.</p>
      <p>Please refer to the two examples using <a class="link" href="DbstlDbt.html" title="Chapter 25.  DbstlDbt">DbstlDbt</a>
 in TestAssoc::test_arbitrary_object_storage and TestAssoc::test_char_star_string_storage member functions, which illustrate how to correctly use <a class="link" href="DbstlDbt.html" title="Chapter 25.  DbstlDbt">DbstlDbt</a>
 in order to store raw bytes.</p>
      <p>This class handles the task of allocating and de-allocating memory internally. Although it can be used to store data which cannot be handled by the <a class="link" href="DbstlElemTraits.html" title="Chapter 26.  DbstlElemTraits">DbstlElemTraits</a>
 class, in practice, it is usually more convenient to register callbacks in the <a class="link" href="DbstlElemTraits.html" title="Chapter 26.  DbstlElemTraits">DbstlElemTraits</a>
 class for the type you are storing/retrieving using dbstl. </p>
      <h4><a id="idp51587824"></a> Public Members </h4>
      <div class="informaltable">
        <table border="1" width="80%">
          <colgroup>
            <col />
            <col />
          </colgroup>
          <thead>
            <tr>
              <th>Member</th>
              <th>Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
<a class="xref" href="DbstlDbt.html#stlDbstlDbtDbstlDbt" title="DbstlDbt">DbstlDbt</a>
</td>
              <td>
   <p>Construct an object with an existing chunk of memory of size1 bytes, refered by data1,. </p>        </td>
            </tr>
            <tr>
              <td>
<a class="xref" href="stlDbstlDbtdstr_DbstlDbt.html" title="~DbstlDbt">~DbstlDbt</a>
</td>
              <td>
   <p>The memory will be free'ed by the destructor. </p>        </td>
            </tr>
            <tr>
              <td>
<a class="xref" href="stlDbstlDbtoperator_assign.html" title="operator=">operator=</a>
</td>
              <td>
   <p>The memory will be reallocated if neccessary. </p>        </td>
            </tr>
          </tbody>
        </table>
      </div>
      <h4><a id="idp51593232"></a>
Group</h4>
      <p>
<a class="xref" href="dbstl_helper_classes.html" title="Chapter 21.  Dbstl Helper Classes">
 Dbstl Helper Classes  </a>
</p>
      <p>
</p>
      <div class="sect1" lang="en" xml:lang="en">
        <div class="titlepage">
          <div>
            <div>
              <h2 class="title" style="clear: both"><a id="stlDbstlDbtDbstlDbt"></a>DbstlDbt</h2>
            </div>
          </div>
        </div>
        <div class="sect2" lang="en" xml:lang="en">
          <div class="titlepage">
            <div>
              <div>
                <h3 class="title"><a id="stlDbstlDbtDbstlDbt_details"></a>Function Details</h3>
              </div>
            </div>
          </div>
          <pre class="programlisting">
DbstlDbt(void *data1,
    u_int32_t size1)
 </pre>
          <p>Construct an object with an existing chunk of memory of size1 bytes, refered by data1,. </p>
          <pre class="programlisting">
DbstlDbt()
 </pre>
          <pre class="programlisting">
DbstlDbt(const DbstlDbt &amp;d)
 </pre>
          <p>This copy constructor does a deep copy. </p>
        </div>
        <div class="sect2" lang="en" xml:lang="en">
          <div class="titlepage">
            <div>
              <div>
                <h3 class="title"><a id="idp51589656"></a>Class</h3>
              </div>
            </div>
          </div>
          <p>
  <a class="link" href="DbstlDbt.html" title="Chapter 25.  DbstlDbt">DbstlDbt</a>
     </p>
        </div>
      </div>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="stlElementRef_DB_STL_value.html">Prev</a> </td>
          <td width="20%" align="center"> </td>
          <td width="40%" align="right"> <a accesskey="n" href="stlDbstlDbtdstr_DbstlDbt.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">_DB_STL_value </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> ~DbstlDbt</td>
        </tr>
      </table>
    </div>
  </body>
</html>