File: class_diagram.html

package info (click to toggle)
boost1.35 1.35.0-5
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 203,856 kB
  • ctags: 337,867
  • sloc: cpp: 938,683; xml: 56,847; ansic: 41,589; python: 18,999; sh: 11,566; makefile: 664; perl: 494; yacc: 456; asm: 353; csh: 6
file content (170 lines) | stat: -rw-r--r-- 8,268 bytes parent folder | download
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
<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
(C) Copyright 2002-4 Robert Ramey - http://www.rrsd.com . 
Use, modification and distribution is subject to the Boost Software
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../boost.css">
<link rel="stylesheet" type="text/css" href="style.css">
<title>Serialization - Archive Class Diagram</title>
</head>
<body link="#0000ff" vlink="#800080">
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary="header">
  <tr> 
    <td valign="top" width="300"> 
      <h3><a href="../../../index.htm"><img height="86" width="277" alt="C++ Boost" src="../../../boost.png" border="0"></a></h3>
    </td>
    <td valign="top"> 
      <h1 align="center">Serialization</h1>
      <h2 align="center">Text Archive Class Diagram</h2>
    </td>
  </tr>
</table>
<hr>

<pre><code>


basic_iarchive <a href="../../../boost/archive/detail/basic_iarchive.hpp">-></a>
      |
      |
      |      interface_iarchive&lt;text_iarchive&gt; <a href="../../../boost/archive/detail/interface_iarchive.hpp">-></a>
      |                     /
      |                   /
      |        _________/
      |      /
      |    /
      |  /
common_iarchive&lt;text_iarchive&gt; <a href="../../../boost/archive/detail/common_iarchive.hpp">-></a>
      |
      |
<font color="blue">basic_text_iarchive&lt;text_iarchive&gt;</font> <a href="../../../boost/archive/basic_text_iarchive.hpp">-></a>
      |
      |
      |     <font color="blue">basic_text_iprimitive&lt;basic_istream&gt;</font> <a href="../../../boost/archive/basic_text_iprimitive.hpp">-></a>
      |                    /
      |                  /
      |       _________/                  interface_iarchive&lt;polymorphic_iarchive&gt; <a href="../../../boost/archive/detail/interface_iarchive.hpp">-></a>
      |     /                                                |
      |   /                                                  |
      | /                                                    |
<font color="blue">text_iarchive_impl&lt;text_iarchive&gt;</font> <a href="../../../boost/archive/text_iarchive.hpp">-></a>                 <font color="red">polymorphic_iarchive</font> <a href="../../../boost/archive/polymorphic_iarchive.hpp">-></a>
      | \                                                    |
      |   \                                                  |
      |     \_____________________________________           |
      |                                           \         /
      |                                             \     /
      |                                               \ /  
<font color="red">text_iarchive</font> <a href="../../../boost/archive/text_iarchive.hpp">-></a>                 polymorphic_iarchive_dispatch&lt;text_iarchive_impl&lt;text_iarchive&gt; &gt; <a href="../../../boost/archive/detail/polymorphic_iarchive_dispatch.hpp">-></a>
                                                       |
                                                       |
                                                       |
                                             <font color="red">polymorphic_text_iarchive</font> <a href="../../../boost/archive/polymorphic_text_iarchive.hpp">-></a>


</code></pre>
This diagram shows the relationship between the various classes that implement loading (input
serialization) for text files.  The hierachy and organization is identical for saving and for
other types of archives as well.  In the diagram, classes written in <font color="blue">blue</font> 
implement loading for a given archive type. (in this case its text archives).
Users include classes in <font color="red">red</font> to load their data from a partcular
type of archive.  Other classes whose names are in black implement the library and should
never change.  They are in <code>namespace boost::archive::detail</code>
<dl>
  <dt><code>
  <a href="../../../boost/archive/detail/basic_iarchive.hpp">basic_iarchive</a>
  </code></dt>
  <dd>
  Implements the core library functions for class export, versioning, and object tracking.  It is compiled
  into the library as it has no template parameters.
  </dd>
  <p><dt><code>
  <a href="../../../boost/archive/detail/interface_iarchive.hpp">interface_iarchive&lt;text_iarchive&gt;</a>
  </code></dt>
  <dd>
  A class that declares the standard archive interface.  This has been factored out so that it
  can be used as a base class for <code style="white-space: normal">polymorphic_iarchive</code>
  as well as for archive implementations.
  
  <p><dt><code>
  <a href="../../../boost/archive/detail/common_iarchive.hpp">common_iarchive&lt;text_iarchive&gt;</a>
  </code></dt>
  <dd>
  The function of this class is to make the connection between the virtual function
  interface used by <code>basic_iarchive</code> and the template interface used by archive
  class implementations.
  
  <p><dt><code>
  <a href="../../../boost/archive/basic_text_iarchive.hpp">basic_text_iarchive&lt;text_iarchive&gt;</a>
  </code></dt>
  <dd>
  Implements the basic functionality for simple text archives.  The primitive load functions have been 
  factored out so it can be used in other text based archives like XML archives.
  
  <p><dt><code>
  <a href="../../../boost/archive/basic_text_iprimitive.hpp">basic_text_iprimitive&lt;basic_istream&gt;</a>
  </code></dt>
  <dd>
  Implements the save overloads for all primitive types.  This is a template with a parameter
  which describes the stream.
  
  <p><dt><code>
  <a href="../../../boost/archive/text_iarchive.hpp">text_iarchive_impl&lt;text_iarchive&gt;</a>                 
  </code></dt>
  <dd>
  Inherits from the above two classes to implement text archives.
  </dd>

  <p><dt><code>
  <a href="../../../boost/archive/text_iarchive.hpp">text_iarchive</a>
  </code></dt>
  <dd>
  This is just a short hand for <code style="white-space: normal">text_iarchive_impl&lt;text_iarchive&gt;</code> .
  We can't use <code style="white-space: normal">typedef</code> because  a 
  <code style="white-space: normal">typedef</code> can't refer to it self in its definition.  
  This is the class name that is used to serialize to a text archive.
  </dd>

  <p><dt><code>
  <a href="../../../boost/archive/detail/interface_iarchive.hpp">interface_iarchive&lt;polymorphic_iarchive&gt;</a>
  </code></dt>
  <dd>
  Same template as above.  However, this time the Archive parameter refers to the polymorphic archive
  with a virtual function interface rather than that the template interface that
  <code style="white-space: normal">common_iarchive</code> uses.
  
  <p><dt><code>
  <a href="../../../boost/archive/polymorphic_iarchive.hpp">polymorphic_iarchive</a>
  </code></dt>
  <dd>
  A class with a list of virtual <code style="white-space: normal">load(T &t)</code>
  for all primitive types T. This is the class that is used to do pre-compile serialization of classes
  for all archives present and future.
  
  <p><dt><code>
  <a href="../../../boost/archive/detail/polymorphic_iarchive_dispatch.hpp">polymorphic_iarchive_dispatch&lt;text_iarchive_impl&lt;text_iarchive&gt; &gt;</a>
  </code></dt>
  <dd><p>
  This class implements the <code style="white-space: normal">polymorphic_iarchive</code> in terms of a specific 
  concrete class.  Virtual function calls are forwarded to the implementing class.  In this example, 
  that implementing class would be text_iarchive_impl.
  
  <p><dt><code>
  <a href="../../../boost/archive/polymorphic_text_iarchive.hpp">polymorphic_text_iarchive</a>
  </code></dt>
  <dd>
  this is just a typedef so we can write polymorphic_text_archive rather than
  <code style="white-space: normal">polymorphic_iarchive_dispatch&lt;text_iarchive_impl&lt;text_iarchive&gt; &gt;</code>
  
</dl>
<hr>
<p><i>&copy; Copyright <a href="http://www.rrsd.com">Robert Ramey</a> 2002-2004. 
Distributed under the Boost Software License, Version 1.0. (See
accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
</i></p>
</body>
</html>