#include "SDMessage.h" CSDMessage::CSDMessage() { memset(&m_Head, 0, sizeof(m_Head)); } CSDMessage::~CSDMessage() { ClearContent(); } int CSDMessage::GetContentCount() { return (int)m_aContent.size(); } const char * CSDMessage::GetContent(int index) { if (index <0 || index >= (int)m_aContent.size()) return ""; if (m_aContent[index]) return m_aContent[index]; return ""; } void CSDMessage::SetContent(int index, const char * cs_content) { if (index < 0) return; for (int i = (int)m_aContent.size(); i<=index; ++i) m_aContent.push_back(NULL); char * Content; if (cs_content == NULL || *cs_content=='\0') Content = NULL; else { Content = new char[(int)strlen(cs_content) +1]; strcpy(Content, cs_content); } if (m_aContent[index] != NULL) delete[] m_aContent[index]; m_aContent[index] = Content; } void CSDMessage::AddContent(const char * cs_content) { SetContent((int)m_aContent.size(), cs_content); } void CSDMessage::AddContent(int i_content) { char buf[32]; itoa(i_content, buf, 10); SetContent((int)m_aContent.size(), buf); } void CSDMessage::RemoveContent(int index, int count) { if (index <0) return; int n, i; for (n=0, i=index ; n0) AddContent(str.c_str()); CutTail(); } void CSDMessage::CopyHead(CSDMessage & a) { memcpy(&m_Head, &(a.m_Head), sizeof(MsgHead)); } void CSDMessage::CopyHead(MsgHead & head) { memcpy(&m_Head, &(head), sizeof(MsgHead)); } void CSDMessage::CopyContent(CSDMessage & a) { ClearContent(); int i,n; for (i=0, n=a.GetContentCount(); i=0; --i) { if (m_aContent[i] == NULL || (int)strlen(m_aContent[i])==0) { ++n; continue; } break; } if (n) RemoveContent(i+1, n); } long CSDMessage::ntohl(long a) { long r = 0; for (int i=0; i>(i<<3))&0x0ff; } return r; } short CSDMessage::ntohs (short a) { short r = 0; for (int i=0; i>(i<<3))&0x0ff; } return r; }