1 /*
2 ** Copyright 2002-2004, Double Precision Inc.
3 **
4 ** See COPYING for distribution information.
5 */
6 #include "libmail_config.h"
7 #include "misc.H"
8 #include "autodecoder.H"
9 
10 using namespace std;
11 
base64(mail::autodecoder & meArg)12 mail::autodecoder::base64::base64(mail::autodecoder &meArg)
13 	: me(meArg)
14 {
15 }
16 
~base64()17 mail::autodecoder::base64::~base64()
18 {
19 }
20 
decoded(string s)21 void mail::autodecoder::base64::decoded(string s)
22 {
23 	me.decoded(s);
24 }
25 
qp(mail::autodecoder & meArg)26 mail::autodecoder::qp::qp(mail::autodecoder &meArg)
27 	: me(meArg)
28 {
29 }
30 
~qp()31 mail::autodecoder::qp::~qp()
32 {
33 }
34 
decoded(string s)35 void mail::autodecoder::qp::decoded(string s)
36 {
37 	me.decoded(s);
38 }
39 
40 //////////////////////////////////////////////////////////////////////
41 
autodecoder(string cte)42 mail::autodecoder::autodecoder(string cte)
43 	: base64Decoder(*this),
44 	  qpDecoder(*this),
45 	  decoder(NULL)
46 {
47 	mail::upper(cte);
48 
49 	if (cte == "QUOTED-PRINTABLE")
50 		decoder= &qpDecoder;
51 
52 	if (cte == "BASE64")
53 		decoder= &base64Decoder;
54 }
55 
~autodecoder()56 mail::autodecoder::~autodecoder()
57 {
58 }
59 
decode(string s)60 void mail::autodecoder::decode(string s)
61 {
62 	if (decoder)
63 		decoder->decode(s);	// 7bit or 8bit, or something...
64 	else
65 		decoded(s);
66 }
67 
68