#include<wchar.h>
#include<string.h>
#include<limits.h>
#include"ut_mbtowc.h"
#include"ut_debugmsg.h"

UT_Mbtowc::UT_Mbtowc()
{
  initialize();
}

void UT_Mbtowc::initialize()
{
  memset(&m_state,'\0', sizeof (m_state));
  m_bufLen=0;
}

int UT_Mbtowc::mbtowc(wchar_t &wc,char mb)
{
  if(++m_bufLen>MB_LEN_MAX)
	{
	  initialize();
	  return 0;
	}
  m_buf[m_bufLen-1]=mb;
  size_t thisLen=mbrtowc(&wc,m_buf,m_bufLen,&m_state);
  UT_DEBUGMSG(("this_Len %d m_bufLen %d",(int)thisLen,m_bufLen));
  if(thisLen==(size_t)-1 || thisLen==(size_t)-2)return 0;
  m_bufLen=0;
  return 1;
}
