#ifndef INCLUDED_BOBCAT_IQUOTEDPRINTABLESTREAMBUF_
#define INCLUDED_BOBCAT_IQUOTEDPRINTABLESTREAMBUF_

#include <bobcat/qpstreambufbase>
#include <bobcat/fbb>

namespace FBB
{

    // generic class declaration
template <CryptType>
class IQuotedPrintableStreambuf;

    // specialization when encoding (using available symbolic name ENCRYPT
    //  from bobcat/fbb)
template <>
class IQuotedPrintableStreambuf<ENCRYPT>: public IUO::QPStreambufBase
{
    public:                                                     // 1.f
        IQuotedPrintableStreambuf(std::istream &in, size_t bufSize = 1000);  
};

    // specialization when decoding (using available symbolic name DECRYPT
    //  from bobcat/fbb)
template <>
class IQuotedPrintableStreambuf<DECRYPT>: public IUO::QPStreambufBase
{
    public:                                                     // 2.f
        IQuotedPrintableStreambuf(std::istream &in, size_t bufSize = 1000);  
};

inline IQuotedPrintableStreambuf<ENCRYPT>::IQuotedPrintableStreambuf(
            std::istream &in, size_t bufSize)
:
    QPStreambufBase(in, bufSize)
{
    doEncode();
}
inline IQuotedPrintableStreambuf<DECRYPT>::IQuotedPrintableStreambuf(
            std::istream &in, size_t bufSize)
:
    QPStreambufBase(in, bufSize)
{
    doDecode();
}

} // FBB        
#endif


