summaryrefslogtreecommitdiff
path: root/old/dw/html/lout.html
blob: 5257c45b2f23142f02ce61fe7d1b975fc09ac50d (plain)
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
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.8"/>
<title>Dillo: Lots of Useful Tools</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="https://www.dillo.org/dw/html/jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Dillo
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.8 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">Lots of Useful Tools </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>In the "lout" directory, there are some common base functionality for C++. Most is described as doxygen comments, this text gives an overview.</p>
<h2>Common Base Class</h2>
<p>Many classes are derived from <a class="el" href="classlout_1_1object_1_1Object.html" title="This is the base class for many other classes, which defines very common virtual methods. ">lout::object::Object</a>, which defines some general methods. See there for more information.</p>
<p>For the case, that you need primitive C++ types, there are some wrappers:</p>
<table class="doxtable">
<tr>
<th>C++ Type </th><th>Wrapper Class </th></tr>
<tr>
<td>void* </td><td><a class="el" href="classlout_1_1object_1_1Pointer.html" title="An object::Object wrapper for void pointers. ">lout::object::Pointer</a> </td></tr>
<tr>
<td>specific pointer </td><td><a class="el" href="classlout_1_1object_1_1TypedPointer.html" title="A typed version of object::Pointer. ">lout::object::TypedPointer</a> (template class) </td></tr>
<tr>
<td>int </td><td><a class="el" href="classlout_1_1object_1_1Integer.html" title="An object::Object wrapper for int&#39;s. ">lout::object::Integer</a> </td></tr>
<tr>
<td>const char* </td><td><a class="el" href="classlout_1_1object_1_1ConstString.html" title="An object::Object wrapper for constant strings (char*). ">lout::object::ConstString</a> </td></tr>
<tr>
<td>char* </td><td><a class="el" href="classlout_1_1object_1_1String.html" title="An object::Object wrapper for strings (char*). ">lout::object::String</a> </td></tr>
</table>
<h2>Containers</h2>
<p>In the namespace <a class="el" href="namespacelout_1_1container.html" title="This namespace contains a framework for container classes, which members are instances of object::Obj...">lout::container</a>, several container classes are defined, which all deal with instances of <a class="el" href="classlout_1_1object_1_1Object.html" title="This is the base class for many other classes, which defines very common virtual methods. ">lout::object::Object</a>.</p>
<h3>Untyped Containers</h3>
<p>In <a class="el" href="namespacelout_1_1container_1_1untyped.html" title="The container classes defined here contain instances of object::Object. ">lout::container::untyped</a>, there are the following containers:</p>
<ul>
<li>
<a class="el" href="classlout_1_1container_1_1untyped_1_1Vector.html" title="Container, which is implemented by an array, which is dynamically resized. ">lout::container::untyped::Vector</a>, a dynamically increases array, </li>
<li>
<a class="el" href="classlout_1_1container_1_1untyped_1_1List.html" title="A single-linked list. ">lout::container::untyped::List</a>, a linked list, </li>
<li>
<a class="el" href="classlout_1_1container_1_1untyped_1_1HashTable.html" title="A hash table. ">lout::container::untyped::HashTable</a>, a hash table, and </li>
<li>
<a class="el" href="classlout_1_1container_1_1untyped_1_1Stack.html" title="A stack (LIFO). Can be used as Queue (FIFO) when pushUnder() is used instead of push(). ">lout::container::untyped::Stack</a>, a stack. </li>
</ul>
<p>All provide specific methods, but since they have a common base class, <a class="el" href="classlout_1_1container_1_1untyped_1_1Collection.html" title="Abstract base class for all container objects in container::untyped. ">lout::container::untyped::Collection</a>, they all provide iterators, by the method <a class="el" href="classlout_1_1container_1_1untyped_1_1Collection.html#ae7917dac69a5a399dd447dde6a2c339a">lout::container::untyped::Collection::iterator</a>.</p>
<h3>Typed Containers</h3>
<p><a class="el" href="namespacelout_1_1container_1_1typed.html" title="This namespace provides thin wrappers, implemented as C++ templates, to gain type-safety. ">lout::container::typed</a> provides wrappers for the container classes defined in <a class="el" href="namespacelout_1_1container_1_1untyped.html" title="The container classes defined here contain instances of object::Object. ">lout::container::untyped</a>, which are more type safe, by using C++ templates.</p>
<h2>Signals</h2>
<p>For how to connect objects at run-time (to reduce dependencies), take a look at the <a class="el" href="namespacelout_1_1signal.html" title="This namespace provides base classes to define signals. ">lout::signal</a> namespace.</p>
<p>There is also a base class <a class="el" href="classlout_1_1signal_1_1ObservedObject.html" title="An observed object has a signal emitter, which tells the receivers, when the object is deleted...">lout::signal::ObservedObject</a>, which implements signals for deletion.</p>
<h2>Debugging</h2>
<p>In <a class="el" href="debug_8hh.html">debug.hh</a>, there are some some useful macros for debugging messages, see the file for mor informations.</p>
<h2>Identifying Classes at Runtime</h2>
<p>If the class of an object must be identified at runtime, <a class="el" href="classlout_1_1identity_1_1IdentifiableObject.html" title="Instances of classes, which are sub classes of this class, may be identified at run-time. ">lout::identity::IdentifiableObject</a> should be used as the base class, see there for more details.</p>
<h2>Miscellaneous</h2>
<p>The <a class="el" href="namespacelout_1_1misc.html" title="Miscellaneous stuff, which does not fit anywhere else. ">lout::misc</a> namespace provides several miscellaneous stuff:</p>
<ul>
<li>
In some contexts, it is necessary to compare objects (less/greater), for this, also lout::misc::Comparable must be implemented. For example., <a class="el" href="classlout_1_1container_1_1untyped_1_1Vector.html#a11a9f3d93c7b56ea1c85902c353f2f49">lout::container::untyped::Vector::sort</a> and <a class="el" href="classlout_1_1container_1_1typed_1_1Vector.html#a8bcdb74faa2294874d9bc5e6d115b357">lout::container::typed::Vector::sort</a> cast the elements to lout::misc::Comparable. This can be mixed with <a class="el" href="classlout_1_1object_1_1Object.html" title="This is the base class for many other classes, which defines very common virtual methods. ">lout::object::Object</a>. </li>
<li>
<a class="el" href="classlout_1_1misc_1_1SimpleVector.html" title="Simple (simpler than container::untyped::Vector and container::typed::Vector) template based vector...">lout::misc::SimpleVector</a>, a simple, template based vector class (not depending on <a class="el" href="classlout_1_1object_1_1Object.html" title="This is the base class for many other classes, which defines very common virtual methods. ">lout::object::Object</a>) (a variant for handling a special case in an efficient way is <a class="el" href="classlout_1_1misc_1_1NotSoSimpleVector.html" title="Container similar to lout::misc::SimpleVector, but some cases of insertion optimized (used for hyphen...">lout::misc::NotSoSimpleVector</a>), </li>
<li>
<a class="el" href="classlout_1_1misc_1_1StringBuffer.html" title="A class for fast concatenation of a large number of strings. ">lout::misc::StringBuffer</a>, class for fast concatenation of a large number of strings, </li>
<li>
<a class="el" href="classlout_1_1misc_1_1BitSet.html" title="A bit set, which automatically reallocates when needed. ">lout::misc::BitSet</a> implements a bitset. </li>
<li>
useful (template) functions (<a class="el" href="namespacelout_1_1misc.html#a091b14f612d8e40414de6af75497c37e">lout::misc::min</a>, <a class="el" href="namespacelout_1_1misc.html#a25154cdeb39b9ee3ef491670b3652dd3">lout::misc::max</a>), and </li>
<li>
some functions useful for runtime checks (lout::misc::assert, <a class="el" href="namespacelout_1_1misc.html#af12c41294c3892aa63cd1cf87030c1ad">lout::misc::assertNotReached</a>). </li>
</ul>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat May 28 2016 11:47:43 for Dillo by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.8
</small></address>
</body>
</html>