📄 memzone.h
字号:
#ifndef LIBXML_MEMZONE_H
#define LIBXML_MEMZONE_H
//memzone.h
class CMemZone
{
char *m_buf;
unsigned m_used;
unsigned m_total;
unsigned m_limit;
void init();
public:
CMemZone();
~CMemZone();
operator char*() const;
operator const char*() const;
char& operator[](unsigned idx);
unsigned getUsed() const;
unsigned getTotal() const;
unsigned getLimit() const;
void setLimit(unsigned limit);
void clean();
void clear();
int grow(unsigned g);
int growTo(unsigned to);
int append(const char *p,unsigned bytes=0);
int preppend(const char *p,unsigned bytes=0);
int insert(unsigned idx,const char *p,unsigned bytes=0,bool behind=true);
void trimLeft(unsigned n);
void trimRight(unsigned n);
void trimMiddle(unsigned start,unsigned n);
};
inline void CMemZone::init(){memset(this,0,sizeof(*this));}
inline void CMemZone::clear()
{
m_used=0;
if(m_total) memset(m_buf,0,m_total);
}
inline CMemZone::operator char*() const{return (char *)m_buf;}
inline CMemZone::operator const char*() const{return m_buf;}
inline char& CMemZone::operator[](unsigned idx)
{
assert(idx<m_total);
return m_buf[idx];
}
inline unsigned CMemZone::getUsed() const{return m_used;}
inline unsigned CMemZone::getTotal() const{return m_total;}
inline unsigned CMemZone::getLimit() const{return m_limit;}
inline void CMemZone::setLimit(unsigned limit){m_limit=limit;}
#endif//LIBXML_MEMZONE_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -