#ifndef INCLUDED_BOBCAT_IBASE64STREAMBUF_
#define INCLUDED_BOBCAT_IBASE64STREAMBUF_

#include <bobcat/base64streambufbase>
#include <bobcat/fbb>

namespace FBB
{

template <CryptType>
class IBase64Streambuf;

template <>
class IBase64Streambuf<ENCRYPT>: public IUO::Base64StreambufBase
{
    public:
        IBase64Streambuf(std::istream &in, size_t bufSize = 1000);  // 1.f
};

template <>
class IBase64Streambuf<DECRYPT>: public IUO::Base64StreambufBase
{
    public:
        IBase64Streambuf(std::istream &in, size_t bufSize = 1000);  // 2.f
};

inline
IBase64Streambuf<ENCRYPT>::IBase64Streambuf(std::istream &in, size_t bufSize)
:
    Base64StreambufBase(in, bufSize)
{
    doEncrypt();
}
inline
IBase64Streambuf<DECRYPT>::IBase64Streambuf(std::istream &in, size_t bufSize)
:
    Base64StreambufBase(in, bufSize)
{
    doDecrypt();
}

} // FBB        
#endif


