acl  3.5.3.0
acl::mime_code类 参考abstract

#include <mime_code.hpp>

+ 类 acl::mime_code 继承关系图:
+ acl::mime_code 的协作图:

Public 成员函数

 mime_code (bool addCrlf, bool addInvalid, const char *encoding_type)
 
virtual ~mime_code (void)=0
 
const char * get_encoding_type (void) const
 
virtual void encode_update (const char *src, int n, string *out)
 
virtual void encode_finish (string *out)
 
virtual void decode_update (const char *src, int n, string *out)
 
virtual void decode_finish (string *out)
 
virtual void reset (void)
 
virtual void add_crlf (bool on)
 
virtual void add_invalid (bool on)
 
void init (const unsigned char *toTab, const unsigned char *unTab, unsigned char fillChar)
 
void set_status (bool encoding=true)
 
virtual int push_pop (const char *in, size_t len, string *out, size_t max=0)
 
virtual int pop_end (string *out, size_t max=0)
 
virtual void clear (void)
 
- Public 成员函数 继承自 acl::pipe_stream
 pipe_stream ()
 
virtual ~pipe_stream ()
 

静态 Public 成员函数

static void create_decode_tab (const unsigned char *toTab, string *out)
 
static mime_codecreate (int encoding, bool warn_unsupport=true)
 

额外继承的成员函数

- Protected 成员函数 继承自 acl::acl::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 

详细描述

在文件 mime_code.hpp11 行定义.

构造及析构函数说明

◆ mime_code()

acl::mime_code::mime_code ( bool  addCrlf,
bool  addInvalid,
const char *  encoding_type 
)

构造函数

参数
addCrlf{bool} 非流式编码时是否在末尾添加 "\r\n"
addInvalid{bool} 流式解码时是否遇到非法字符是否原样拷贝
encoding_type{const char*} 编码类型标识符

◆ ~mime_code()

virtual acl::mime_code::~mime_code ( void  )
pure virtual

成员函数说明

◆ add_crlf()

virtual void acl::mime_code::add_crlf ( bool  on)
virtual

在编码过程中设置是否自动在每个编码段添加 "\r\n"

参数
on{bool}

acl::mime_quoted_printable 重载.

◆ add_invalid()

virtual void acl::mime_code::add_invalid ( bool  on)
virtual

在解码过程中如果遇到非法字符是否将其添加在解码结果中

参数
on{bool}

acl::mime_quoted_printable 重载.

◆ clear()

virtual void acl::mime_code::clear ( void  )
virtual

重载 acl::pipe_stream .

◆ create()

static mime_code* acl::mime_code::create ( int  encoding,
bool  warn_unsupport = true 
)
static

静态函数,根据编码类型 MIME_ENC_XXX (参见:mime_define.hpp) 获得 对应的编解码对象,当有当 encoding 类型为 MIME_ENC_QP, MIME_ENC_BASE64, MIME_ENC_UUCODE, MIME_ENC_XXCODE

参数
encoding{int} 编码类型,只能为 MIME_ENC_QP, MIME_ENC_BASE64, MIME_ENC_UUCODE, MIME_ENC_XXCODE
warn_unsupport{bool} 当未找到匹配的编码对象时是否记录警告信息
返回
{mime_code*} 编码对象,当未找到匹配的编码类型时返回 NULL

◆ create_decode_tab()

static void acl::mime_code::create_decode_tab ( const unsigned char *  toTab,
string out 
)
static

根据输入的编码表生成相应的解码表

参数
toTab{const unsigned char*} 编码表字符串
out{string*} 存储结果

◆ decode_finish()

virtual void acl::mime_code::decode_finish ( string out)
virtual

解码结束后需要调用此函数来对可能存在于临时缓存中的 源数据进行最后的解码

参数
out{string*} 存储解码结果, 可以通过比较 调用此函数前后的 out->length() 来判断该函数是进行了 解码过程还是临时缓存过程; 如果使用了 out 中的结果数据, 则用完后应该调用 out->clear() 清空用过的数据

acl::mime_quoted_printable 重载.

◆ decode_update()

virtual void acl::mime_code::decode_update ( const char *  src,
int  n,
string out 
)
virtual

解码过程, 添加经过编码的数据, 经本函数后进行解码, 如果 输入的数据不满足解码时的字节数条件, 则内部仅是临时缓存 该数据, 等满足解码条件时才进行解码

参数
src{const char*} 经过编码后的数据
n{int} 数据长度
out{string*} 存储解码结果, 可以通过比较 调用此函数前后的 out->length() 来判断该函数是进行了 解码过程还是临时缓存过程; 如果使用了 out 中的结果数据, 则用完后应该调用 out->clear() 清空用过的数据

acl::mime_quoted_printable 重载.

◆ encode_finish()

virtual void acl::mime_code::encode_finish ( string out)
virtual

编码结束后需要调用此函数来对可能存在于临时缓存中的 源数据进行最后的编码

参数
out{string*} 存储编码结果, 可以通过比较 调用此函数前后的 out->length() 来判断该函数是进行了 编码过程还是临时缓存过程; 如果使用了 out 中的结果数据, 则用完后应该调用 out->clear() 清空用过的数据

acl::mime_quoted_printable 重载.

◆ encode_update()

virtual void acl::mime_code::encode_update ( const char *  src,
int  n,
string out 
)
virtual

编码过程, 添加源数据, 结果存于 out 中, 如果输入的 数据不满足编码时缓存条件, 则内部仅临时缓存而不做编码

参数
src{const char*} 源数据地址
n{int} 源数据长度
out{string*} 存储编码结果, 可以通过比较 调用此函数前后的 out->length() 来判断该函数是进行了 编码过程还是临时缓存过程; 如果使用了 out 中的结果数据, 则用完后应该调用 out->clear() 清空用过的数据

acl::mime_quoted_printable 重载.

◆ get_encoding_type()

const char* acl::mime_code::get_encoding_type ( void  ) const
inline

获得编码类型标识符

返回
{const char*}

在文件 mime_code.hpp27 行定义.

28  {
29  return encoding_type_;
30  }

◆ init()

void acl::mime_code::init ( const unsigned char *  toTab,
const unsigned char *  unTab,
unsigned char  fillChar 
)

如果子类未重载以上虚函数而因此使用基类的以上默认虚函数时 则子类必须调用此函数设置自己的编码表, 解码表及填充字符

参数
toTab{const unsigned char*} 编码表
unTab{const unsigned char*} 解码表
fillChar{unsigned char} 填充字符

◆ pop_end()

virtual int acl::mime_code::pop_end ( string out,
size_t  max = 0 
)
virtual

实现了 acl::pipe_stream.

◆ push_pop()

virtual int acl::mime_code::push_pop ( const char *  in,
size_t  len,
string out,
size_t  max = 0 
)
virtual

实现了 acl::pipe_stream.

◆ reset()

virtual void acl::mime_code::reset ( void  )
virtual

重置内部缓冲区

acl::mime_quoted_printable 重载.

◆ set_status()

void acl::mime_code::set_status ( bool  encoding = true)

设置转码器的工作状态,因为该转码器由编码器和解码器组成, 所以在使用 pipe_stream 方式工作时必须指定该转码器的状态 以指定是处于编码器状态还是解码器状态

参数
encoding{bool} 如果为 true 表示为编码器状态,否则 为解码器状态

该类的文档由以下文件生成: