Sat, 27 Aug 2016 18:16:01 -0500
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 | 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 | 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_ */ |