Cpp / Qt: Reduce boost usage (memory and tuple)
[gpgme.git] / lang / cpp / README
1 GpgMEpp - C++ bindings/wrapper for gpgme
2 ----------------------------------------
3 Based on KF5gpgmepp
4
5 GPGMEpp is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9
10 GPGME++ is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public License
16 along with GPGME++; see the file COPYING.LIB.  If not, write to the
17 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
19
20 Overview
21 --------
22
23 GpgMEpp is a C++ wrapper (or C++ bindings) for the GnuPG project's
24 gpgme (GnuPG Made Easy) library, version 0.4.4 and later.
25
26 It is fairly complete, with some minor things still missing (in
27 particular, the key edit interface).
28
29 The design principles of this library are as follows:
30
31 1. A value-based interface (most clases are implicitly shared)
32 2. Callbacks are replaced by C++ interfaces (classes with only
33    abstract methods).
34 3. No exceptions are thrown
35 4. There is (as yet) no explicit support for multi-threaded use
36    (other than what gpgme itself provides; most notably the
37    refcounting for implicit sharing is not thread-safe)
38 5. To avoid binary incompatible interface changes, we make
39    extensive use of the d-pointer pattern and avoid virtual
40    methods; any polymorphism present is already provided by gpgme
41    itself, anyway (see e.g. Data). A notable exception of the
42    no-virtuals rule is the use of abstract classes to cover
43    C-callbacks.
44
45 GpgME was originally developed as part of the KDEPIM community
46 in KDE 4 it was part of kdepimlibs/gpgme++ for KF5 Gpgme++ was
47 renamed to KF5GpgMEpp and moved into it's own repository.
48
49 License
50 -------
51
52 This library is licensed under the GNU Library General Public
53 License (LGPL), just as gpgme is. We feel that using a different
54 license than the one gpgme itself uses doesn't make sense.