2005-02-15 [christoph] 1.0.1cvs9
[claws.git] / src / privacy.h
index 90c3c7b6ad8a53d846d847202134a95a17926086..17a351199d029659b24cc92401840996d0149f8e 100644 (file)
@@ -20,7 +20,6 @@
 #ifndef PRIVACY_H
 #define PRIVACY_H
 
-typedef struct _PrivacySystem PrivacySystem;
 typedef struct _PrivacyData PrivacyData;
 
 typedef enum {
@@ -36,8 +35,9 @@ typedef enum {
 #include "procmime.h"
 #include "prefs_account.h"
 
-void privacy_register_system                   (PrivacySystem *system);
-void privacy_unregister_system                 (PrivacySystem *system);
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
 
 void privacy_free_privacydata                  (PrivacyData *);
 
@@ -64,35 +64,42 @@ gboolean privacy_encrypt                    (const gchar  *system,
                                                 MimeInfo     *mimeinfo,
                                                 const gchar  *encdata);
 
-struct _PrivacySystem {
-       /** Identifier for the PrivacySystem that can use in config files */
-       gchar            *id;
-       /** Human readable name for the PrivacySystem for the user interface */
-       gchar            *name;
+struct _PrivacyData {
+       void            *system;
+};
 
-       void             (*free_privacydata)    (PrivacyData *data);
+#ifdef __cplusplus
+}
 
-       gboolean         (*is_signed)           (MimeInfo *mimeinfo);
-       gint             (*check_signature)     (MimeInfo *mimeinfo);
-       SignatureStatus  (*get_sig_status)      (MimeInfo *mimeinfo);
-       gchar           *(*get_sig_info_short)  (MimeInfo *mimeinfo);
-       gchar           *(*get_sig_info_full)   (MimeInfo *mimeinfo);
+class PrivacySystem {
+        public:
+        virtual const gchar             *getId() = 0;
+        virtual const gchar             *getName() = 0;
 
-       gboolean         (*is_encrypted)        (MimeInfo *mimeinfo);
-       MimeInfo        *(*decrypt)             (MimeInfo *mimeinfo);
+        virtual void             freePrivacyData        (PrivacyData *);
 
-       gboolean           can_sign;
-       gboolean         (*sign)                (MimeInfo *mimeinfo,
-                                                PrefsAccount *account);
+        virtual gboolean         isSigned               (MimeInfo *);
+        virtual gint             checkSignature         (MimeInfo *);
+        virtual SignatureStatus  getSigStatus           (MimeInfo *);
+        virtual gchar           *getSigInfoShort        (MimeInfo *);
+        virtual gchar           *getSigInfoFull         (MimeInfo *);
 
-       gboolean           can_encrypt;
-       gchar           *(*get_encrypt_data)    (GSList *recp_names);
-       gboolean         (*encrypt)             (MimeInfo *mimeinfo,
-                                                const gchar *encrypt_data);
-};
+        virtual gboolean         isEncrypted            (MimeInfo *);
+        virtual MimeInfo        *decrypt                (MimeInfo *);
 
-struct _PrivacyData {
-       PrivacySystem   *system;
+       virtual gboolean         canSign                ();
+       virtual gboolean         sign                   (MimeInfo *mimeinfo,
+                                                        PrefsAccount *account);
+
+       virtual gboolean         canEncrypt             ();
+       virtual gchar           *getEncryptData         (GSList *recp_names);
+       virtual gboolean         encrypt                (MimeInfo *mimeinfo,
+                                                        const gchar *encrypt_data);
 };
 
+void privacy_register_system                   (PrivacySystem *system);
+void privacy_unregister_system                 (PrivacySystem *system);
+
+#endif /* __cplusplus */
+
 #endif /* PRIVACY_H */