libpurple/plugins/caesarcipher.h

Sat, 27 Aug 2016 18:16:01 -0500

author
Mike Ruprecht <cmaiku@gmail.com>
date
Sat, 27 Aug 2016 18:16:01 -0500
changeset 37959
e76677ed819c
parent 36836
84cfc0d40789
permissions
-rw-r--r--

connection: Add purple_connection_take_error()

This patch adds a purple_connection_take_error() function, which
is functionally equivalent to purple_connection_g_error(), except
that it takes ownership of the passed GError.

This is useful to simplify error handling so that the GError doesn't
have to be freed, or, in the future potentially copied, if it's no
longer needed where it's generated. It can also allow for GErrors
being generated without storing them in a variable. This would be
reasonably common if/when all PurpleConnection errors are passed
in via GError.

36774
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1 /*
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
2 * An example plugin that demonstrates exporting of a cipher object
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
3 * type to be used in another plugin.
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
4 *
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
5 * Copyright (C) 2013, Ankit Vani <a@nevitus.org>
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
6 *
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
8 * modify it under the terms of the GNU General Public License as
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
9 * published by the Free Software Foundation; either version 2 of the
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
10 * License, or (at your option) any later version.
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
11 *
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful, but
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
15 * General Public License for more details.
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
16 *
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
20 * 02111-1301, USA.
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
21 */
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
22
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
23 #ifndef _CAESAR_CIPHER_H_
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
24 #define _CAESAR_CIPHER_H_
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
25
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
26 #include "cipher.h"
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
27
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
28 #define CAESAR_TYPE_CIPHER (caesar_cipher_get_type())
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
29 #define CAESAR_CIPHER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), CAESAR_TYPE_CIPHER, CaesarCipher))
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
30 #define CAESAR_CIPHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), CAESAR_TYPE_CIPHER, CaesarCipherClass))
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
31 #define CAESAR_IS_CIPHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), CAESAR_TYPE_CIPHER))
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
32 #define CAESAR_IS_CIPHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), CAESAR_TYPE_CIPHER))
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
33 #define CAESAR_CIPHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), CAESAR_TYPE_CIPHER, CaesarCipherClass))
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
34
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
35 typedef struct _CaesarCipher CaesarCipher;
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
36 typedef struct _CaesarCipherClass CaesarCipherClass;
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
37
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
38 /*
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
39 * A caesar cipher object.
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
40 *
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
41 * The Caesar cipher is one of the simplest and most widely known encryption
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
42 * techniques. It is a type of substitution cipher in which each letter in the
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
43 * plaintext is replaced by a letter some fixed number of positions down the
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
44 * alphabet.
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
45 */
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
46 struct _CaesarCipher
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
47 {
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
48 PurpleCipher gparent;
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
49 };
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
50
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
51 /* The base class for all CaesarCipher's. */
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
52 struct _CaesarCipherClass
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
53 {
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
54 PurpleCipherClass gparent;
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
55 };
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
56
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
57 /*
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
58 * Returns the GType for the CaesarCipher object.
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
59 */
36777
7db2a0940b39 Some fixes to caesarcipher
Ankit Vani <a@nevitus.org>
parents: 36774
diff changeset
60 G_MODULE_EXPORT GType caesar_cipher_get_type(void);
36774
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
61
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
62 /*
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
63 * Creates a new CaesarCipher instance and returns it.
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
64 */
36777
7db2a0940b39 Some fixes to caesarcipher
Ankit Vani <a@nevitus.org>
parents: 36774
diff changeset
65 G_MODULE_EXPORT PurpleCipher *caesar_cipher_new(void);
36774
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
66
d757fbddbe3d Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff changeset
67 #endif /* _CAESAR_CIPHER_H_ */

mercurial