//=========================================================================
// Summary  :
// Filename : MMString.cc
// Author   : fairfield
// Project  :
// Revision : 1
// Created  : 2001/07/11
// Modified : 2001/07/11
//=========================================================================
// Description :  Generic String message
//=========================================================================

#include <stdio.h>
#include <string>
#include "MMString.h"

MMString::MMString()
{
	setString("");
}

MMString::MMString(const ModemMessage *pMM)
{
	Assert(pMM);
	Assert(pMM->getType()==tGetMessageType());
	const char* pcEnd = pcRead(pMM->getBuffer());
	const char* temp = pMM->getBuffer();
	const char* temp2 = pMM->getBuffer()+pMM->getBufferSize();
	Assert(pcEnd==pMM->getBuffer()+pMM->getBufferSize());
}

MMString::MMString(char* str) 
{
	setString(str);
}

const char* MMString::pcRead(const char* sourceBuffer)
{
  char temp[2] = {0x1, 0x0};
  int i = 1;

  sprintf(m_string,"");

  const char* pcEnd = ::pcRead(sourceBuffer, &temp[0]);
  while ((temp[0] != 0x0) && (i++ < MAXSTRINGLENGTH)) {
    strcat(m_string,temp);
	pcEnd = ::pcRead(pcEnd, &temp[0]);
  }

  return pcEnd;
}

char* MMString::pcWrite(char* destBuffer) const
{

	char* pcEnd = ::pcWrite(destBuffer,m_string[0]);
	int n = strlen(m_string);

	for (int i=1;i<=n;i++){
		pcEnd = ::pcWrite(pcEnd,m_string[i]);
	}

	return pcEnd;
}

void MMString::toString(char* str)
{
  char temp_str[MAXSTRINGLENGTH];
  getString(temp_str);
  sprintf(str,"tMMString: %s", temp_str);
}
