⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bytebuffer.cpp

📁 Socketlib: 一个轻量级的C++ 封装Socket C API 网络编程框架。 它简化了Socket异步事件分派、进程间Socket通信的并发OO网络应用和服务的开发。 目前
💻 CPP
字号:
#pragma once
#include "../config.h"
#include "bytebuffer.h"
#include <malloc.h>
#include <memory.h>

namespace SLEXT
{

CByteBuffer::CByteBuffer()
	: m_szData(0)
	, m_nSize(0)
	, m_bdeepCopy(false)
{
};

CByteBuffer::CByteBuffer(const char *szData, size_t nSize, bool bdeepCopy)
{	
	m_nSize = nSize;
	m_bdeepCopy = bdeepCopy;
	if (bdeepCopy)
	{
		m_szData = (char*)malloc(nSize);
		memcpy(m_szData,szData,nSize);
	}
	else
		m_szData = (char*)szData;
};

CByteBuffer::~CByteBuffer()
{
	clear();
};

char* CByteBuffer::data()
{
	return m_szData;
};

const char* CByteBuffer::data() const
{
	return m_szData;
};

std::size_t CByteBuffer::size() const
{
	return m_nSize;
};

inline void CByteBuffer::clear()
{
	if ( (m_bdeepCopy) && (m_szData != 0) )
	{
		::free(m_szData);
		m_szData = 0;
		m_nSize = 0;
		m_bdeepCopy = false;
	};
};

void CByteBuffer::data(const char *szData, size_t nSize, bool bdeepCopy)
{
	if (szData == 0)
		return;
	if (szData == m_szData)
		return;

	clear();
	m_nSize = nSize;
	m_bdeepCopy = bdeepCopy;
	if (bdeepCopy)
	{
		m_szData = (char*)malloc(nSize);
		memcpy(m_szData,szData,nSize);
	}
	else
		m_szData = (char*)szData;
};

inline bool CByteBuffer::empty() const 
{
	return m_nSize == 0;
};

};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -