summaryrefslogtreecommitdiff
path: root/libs/util/include/Codec.h
diff options
context:
space:
mode:
authorgeronimo <geronimo013@gmx.de>2012-07-13 04:26:40 +0200
committergeronimo <geronimo013@gmx.de>2012-07-13 04:26:40 +0200
commit2d48ae784ea6828e8626c32c848f64232d8f35c0 (patch)
treefab114b03e91125783a778b835dd1913b039cebe /libs/util/include/Codec.h
downloadcmp-2d48ae784ea6828e8626c32c848f64232d8f35c0.tar.gz
cmp-2d48ae784ea6828e8626c32c848f64232d8f35c0.tar.bz2
initial import
Diffstat (limited to 'libs/util/include/Codec.h')
-rw-r--r--libs/util/include/Codec.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/libs/util/include/Codec.h b/libs/util/include/Codec.h
new file mode 100644
index 0000000..80352d7
--- /dev/null
+++ b/libs/util/include/Codec.h
@@ -0,0 +1,92 @@
+/**
+ * ======================== legal notice ======================
+ *
+ * File: Codec.h
+ * Created: 21. Mai 2012, 14:00
+ * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
+ * Project: libutil - base classes used by other libraries
+ *
+ * CMP - compound media player
+ *
+ * is a client/server mediaplayer intended to play any media from any workstation
+ * without the need to export or mount shares. cmps is an easy to use backend
+ * with a (ready to use) HTML-interface. Additionally the backend supports
+ * authentication via HTTP-digest authorization.
+ * cmpc is a client with vdr-like osd-menues.
+ *
+ * Copyright (c) 2012 Reinhard Mantey, some rights reserved!
+ * published under Creative Commons by-sa
+ * For details see http://creativecommons.org/licenses/by-sa/3.0/
+ *
+ * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
+ *
+ * --------------------------------------------------------------
+ */
+#ifndef CODEC_H
+#define CODEC_H
+
+#include <stddef.h>
+
+class cCodec {
+///< base class for simple (character based) encoding/decoding
+public:
+ cCodec(const char *Table, char KeyChar = '#');
+ virtual ~cCodec();
+ char KeyChar() const { return keyChar; }
+ const char *TranslateTable() const { return translateTable; }
+ virtual size_t DecodeSequence(unsigned char *d, unsigned char *s);
+
+protected:
+ char *translateTable;
+ char keyChar;
+ };
+
+class cEncoder : public cCodec {
+public:
+ cEncoder(char SpecialChar = '#', const char *TrTable = "0123456789ABCDEF");
+ virtual ~cEncoder();
+ char *Encode(const char *Source, size_t SourceLength = 0); ///< encode Source,
+ ///< optionally limited by SourceLength (default is to encode a 0-terminated cstring)
+ };
+
+class cURLEncoder : public cEncoder {
+public:
+ cURLEncoder();
+ virtual ~cURLEncoder();
+ };
+
+class cDecoder : public cCodec {
+public:
+ cDecoder(char KeyChar = '#', const char *TrTable = "0123456789ABCDEF");
+ virtual ~cDecoder();
+ char *Decode(const char *Source, size_t SourceLength = 0); ///< decode Source,
+ ///< optionally limited by SourceLength (default is to decode a 0-terminated cstring)
+ virtual size_t DecodeSequence(unsigned char *d, unsigned char *s);
+ };
+
+class cURLDecoder : public cDecoder {
+public:
+ cURLDecoder();
+ virtual ~cURLDecoder();
+ };
+
+class cHexEncoder : public cEncoder {
+public:
+ cHexEncoder();
+ virtual ~cHexEncoder();
+ char *Encode(const unsigned char* Source, size_t SourceLength = 0);
+ };
+
+class cHexDecoder : public cDecoder {
+public:
+ cHexDecoder();
+ virtual ~cHexDecoder();
+ char *Decode(const char *Source, size_t SourceLength = 0);
+ };
+
+extern cHexEncoder * getHexEncoder(void);
+extern cHexDecoder * getHexDecoder(void);
+extern void codecCleanUp(void);
+
+#endif /* CODEC_H */
+