#pragma once #include "acl_cpp/stdlib/pipe_stream.hpp" //class acl::string; class pipeline_string : public acl::pipe_stream { public: pipeline_string(); ~pipeline_string(); protected: /** * 数据输入输出接口 * @param in {const char*} 输入数据的地址 * @param len {size_t} 输入数据长度 * @param out {string*} 存储输出结果缓冲区,不能为空 * @param max {size_t} 希望接收到输出结果的长度限制,如果为0则 * 表示没有限制,输出结果都存储在 out 缓冲区中 * @return {int} 输出数据的长度,如果 < 0 则表示出错 */ virtual int push_pop(const char* in, size_t len, acl::string* out, size_t max = 0); /** * 最后处理的输出数据接口 * @param out {string*} 存储输出结果缓冲区,不能为空 * @param max {size_t} 希望接收到输出结果的长度限制,如果为0则 * 表示没有限制,输出结果都存储在 out 缓冲区中 * @return {int} 输出数据的长度,如果 < 0 则表示出错 */ virtual int pop_end(acl::string* out, size_t max = 0); /** * 清空内部缓冲区 */ virtual void clear(); private: bool strip_sp_; };