summaryrefslogtreecommitdiff
path: root/libsoup/soup-coding.h
diff options
context:
space:
mode:
Diffstat (limited to 'libsoup/soup-coding.h')
-rw-r--r--libsoup/soup-coding.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/libsoup/soup-coding.h b/libsoup/soup-coding.h
new file mode 100644
index 00000000..a00d0140
--- /dev/null
+++ b/libsoup/soup-coding.h
@@ -0,0 +1,92 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005, Novell, Inc.
+ * Copyright (C) 2008, Red Hat, Inc.
+ */
+
+#ifndef SOUP_CODING_H
+#define SOUP_CODING_H 1
+
+#include <libsoup/soup-types.h>
+#include <libsoup/soup-message-body.h>
+
+#define SOUP_TYPE_CODING (soup_coding_get_type ())
+#define SOUP_CODING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_CODING, SoupCoding))
+#define SOUP_CODING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_CODING, SoupCodingClass))
+#define SOUP_IS_CODING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_CODING))
+#define SOUP_IS_CODING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_CODING))
+#define SOUP_CODING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_CODING, SoupCodingClass))
+
+typedef enum {
+ SOUP_CODING_ENCODE,
+ SOUP_CODING_DECODE
+} SoupCodingDirection;
+
+typedef enum {
+ SOUP_CODING_STATUS_OK,
+ SOUP_CODING_STATUS_ERROR,
+ SOUP_CODING_STATUS_NEED_SPACE,
+ SOUP_CODING_STATUS_COMPLETE,
+} SoupCodingStatus;
+
+typedef struct {
+ GObject parent;
+
+ SoupCodingDirection direction;
+} SoupCoding;
+
+typedef struct {
+ GObjectClass parent_class;
+
+ const char *name;
+
+ SoupBuffer * (*apply) (SoupCoding *coding,
+ gconstpointer input,
+ gsize input_length,
+ gboolean done,
+ GError **error);
+ SoupCodingStatus (*apply_into) (SoupCoding *coding,
+ gconstpointer input,
+ gsize input_length,
+ gsize *input_used,
+ gpointer output,
+ gsize output_length,
+ gsize *output_used,
+ gboolean done,
+ GError **error);
+
+ /* Padding for future expansion */
+ void (*_libsoup_reserved1) (void);
+ void (*_libsoup_reserved2) (void);
+ void (*_libsoup_reserved3) (void);
+ void (*_libsoup_reserved4) (void);
+} SoupCodingClass;
+
+#define SOUP_CODING_DIRECTION "direction"
+
+GType soup_coding_get_type (void);
+
+SoupBuffer *soup_coding_apply (SoupCoding *coding,
+ gconstpointer input,
+ gsize input_length,
+ gboolean done,
+ GError **error);
+SoupCodingStatus soup_coding_apply_into (SoupCoding *coding,
+ gconstpointer input,
+ gsize input_length,
+ gsize *input_used,
+ gpointer output,
+ gsize output_length,
+ gsize *output_used,
+ gboolean done,
+ GError **error);
+
+#define SOUP_CODING_ERROR soup_coding_error_quark()
+GQuark soup_coding_error_quark (void);
+
+typedef enum {
+ SOUP_CODING_ERROR_DATA_ERROR,
+ SOUP_CODING_ERROR_INTERNAL_ERROR
+} SoupCodingError;
+
+#endif /* SOUP_CODING_H */