/** \file
 *
 *  Contains the  class declaration.
 *
 *  Copyright (c) 2007,2008,2009 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
 *
 */

#ifndef ZIPENCODER_H_
#define ZIPENCODER_H_

#include "FileEncoder.h"

#define WRITEBUFFERSIZE (16384)

/**
 *  This is a rather abstract class that
 *  can be implemented by classes that
 *  encode a (closed) file.
 *
 *  \ingroup io
 */
class ZipEncoder : public FileEncoder
{
public:

    ZipEncoder( const char* defaultExtension );

    virtual ~ZipEncoder();

    virtual bool encode( const char* inFilename, const char* outFilename = 0, const char* renameFilename = 0 );

private:

    // Note that the copy constructor below is private and not given a body.
    // Any attempt to call it will return a compiler error.
    ZipEncoder( const ZipEncoder& old ); // disallow copy constructor

    const char* defaultExtension_;

    char writeBuffer_[WRITEBUFFERSIZE];
};

#endif /* ZIPENCODER_H_ */
