/* ----------------------------------------------------------------------------- GSFramework Copyright 2001-2013 Emmanuel Julien. All Rights Reserved. ----------------------------------------------------------------------------- */ #ifndef __NASCIIENC__ #define __NASCIIENC__ #include "ntypes.h" /*! @short ASCII encoding. This class currently provide two commonly used encoding method: yEnc and UUEncode. @author Emmanuel Julien (ejulien@gsworks.fr) */ namespace nAsciiEncoder { /*! @short Perform UUEncoding. @param source Input binary stream. @param len Input binary stream length. @param uuenc Output buffer. @param max Output buffer length. @return The number of bytes written to the output buffer. @note If yenc is NULL the function can be used to check the size of the encoded stream prior to allocating an output buffer. */ uint UUEncode(const uchar *source, size_t len, uchar *uuenc = 0, size_t max = 0); /*! @short Perform UUDecoding. @param source UUEncoded byte stream. @param len UUEncoded byte stream length. @param bin Output buffer. @param max Output buffer length. @return The number of bytes written to the output buffer. @note If bin is NULL the function can be used to check the size of the decoded stream prior to allocating an output buffer. */ uint UUDecode(const uchar *source, size_t len, uchar *bin = 0, size_t max = 0); /*! @short Perform yEncoding. @param source Input binary stream. @param len Input binary stream length. @param yenc Output buffer. @param max Output buffer length. @param line_len Number of character to output before a line-feed character is sent. @return The number of bytes written to the output buffer. @note If yenc is NULL the function can be used to check the size of the encoded stream prior to allocating an output buffer. */ uint yEncode(const uchar *source, size_t len, uchar *yenc = 0, size_t max = 0, uint line_len = 64); /*! @short Perform yDecoding. @param source yEncoded byte stream. @param len yEncoded byte stream length. @param bin Output buffer. @param max Output buffer length. @return The number of bytes written to the output buffer. @note If bin is NULL the function can be used to check the size of the decoded stream prior to allocating an output buffer. */ uint yDecode(const uchar *source, size_t len, uchar *bin = 0, size_t max = 0); }; #endif // __NASCIIENC__