]> git.tdb.fi Git - ext/sigc++-2.0.git/blob - docs/website/index.shtml
Import libsigc++ 2.10.8 sources
[ext/sigc++-2.0.git] / docs / website / index.shtml
1 <!-- SSI fragments/htm_declaration.html_fragment begin -->
2 <!--#include virtual="fragments/html_declaration.html_fragment" -->
3 <!-- SSI fragments/html_declaration.html_fragment end -->
4
5
6 <a name="about"><h3>About</h3></a>
7 <p>
8 libsigc++ implements a typesafe callback system for standard C++. It
9 allows you to define signals and to connect those signals to any
10 callback function, either global or a member function, regardless of
11 whether it is static or virtual.
12 </p>
13 <p>
14 It also contains adaptor classes for connection of dissimilar
15 callbacks and has an ease of use unmatched by other
16 C++ callback libraries.  Libsigc++ is licensed under
17 the GNU Library General Public License, <a href="http://www.gnu.org/copyleft/lgpl.html">LGPL</a>.
18 </p>
19 <p>
20 <a name="features"><h3>Features</h3></a>
21 <ul>
22  <li>Compile time typesafe callbacks (faster than run time checks)</li>
23  <li>Typesafety violations report line number correctly with 
24  template names (no tracing template failures into headers)</li>
25  <li>No compiler extensions or meta compilers required</li>
26  <li>Proper handling of dynamic objects and signals
27  (deleted objects will not cause seg faults)</li>
28  <li>Extendable API at any level:
29  signal, slot, connection and trackable</li>
30  <li>Extensions do not require alteration of basic components</li>
31  <li>User definable accumulators</li>
32  <li>A variety of adaptors to change the callback signature:
33  bind, hide, retype, compose</li>
34  <li>Most C++ compilers can be used. libsigc++ version 2.5.1 and later require
35  a compiler with C++11 support</li>
36 </ul>
37 </p>
38 <p>
39 <a name="news"><h3>News</h3></a>
40
41 libsigc++ has reached the major version 2.0.
42 libsigc++ 2.0 has been rewritten from scratch adapting modern C++ coding techniques that
43 allow for a flexible and powerful but yet simple-to-use API.
44
45 In particular the API improvements from libsigc++ 1.2 to 2.0 include:
46 <ul>
47   <li>Provides unnumbered signal and slot templates.</li>
48   <li>Supports arbitrary functor types.</li>
49   <li>Supports implicit argument type conversions on signal emission.</li>
50   <li>Adds support for overloaded functions.</li>
51   <li>Borrows powerful accumulator interface from boost::signal.</li>
52   <li>Simplifies use of adaptors like sigc::hide(): argument types need
53   not be specified any more (except for sigc::retype_return()).</li>
54   <li>More powerful adaptors: position of arguments to hide or bind can
55   be chosen freely; up to 7 arguments can be bound at a time.</li>
56   <li>Adds two useful adaptors: sigc::compose(), sigc::exception_catch().</li>
57   <li>Performs only one indirect function call during slot invokation
58   regardless of the number of adaptors used; the direct function
59   calls involved are inline and can be optimized away by the compiler.</li>
60   <li>Conforms to the STL naming scheme: only uses small letters.</li>
61   <li>libsigc++ 2.0 until 2.4.x supported a sigc::group() adaptor and
62   lambda functions. This support is discontinued in later releases, because
63   lambdas are supported by standard C++11.</li>
64 </ul>
65 </p>
66
67 <p>
68 Also good to check out are the <a href=
69  "http://www.erikyyy.de/sigslot/">Erik Thiele</a> and <a href=
70  "http://ucxx.sourceforge.net/">Andreas Rottmann</a> sites which 
71 include some interesting libsigc++ tools like cross-thread support.
72 </p>
73
74 <p>
75 <a name="devel"><h3>Developers</h3></a>
76 The original library was composed by Tero Pulkkinen for the
77 gtkmm system, a C++ wrapper for the Gtk+ widget set. The revised 
78 library was written and mantained by Karl Nelson. Special thanks
79 to Esa Pulkkinen for development tips.
80 The 1.2 phase was maintained by Murray Cumming after Karl provided the initial 1.2 code.
81 A long 1.9 phase led to the major release 2.0 which was previously maintained by Martin Schulze
82 and is currently being maintained by Murray Cumming and Kjell Ahlstedt.
83 </p>
84
85 <!-- SSI fragments/footer.html_fragment begin -->
86 <!--#include virtual="fragments/footer.html_fragment" -->
87 <!-- SSI fragments/footer.html_fragment end -->