Files
barrier/lib/arch/CMultibyteOS.cpp
crs 530be3ff9d Updates to support OS X. This improves support for building on
multiple systems with automake, with X Windows and Carbon window
system APIs supported.  It's also a starting port for supporting
win32 builds using mingw.  OS X support is incomplete;  the tree
will compile and link but the binaries will not function.
2004-04-11 14:58:08 +00:00

70 lines
1.4 KiB
C++

/*
* synergy -- mouse and keyboard sharing utility
* Copyright (C) 2002 Chris Schoeneman
*
* This package is free software you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* found in the file COPYING that should have accompanied this file.
*
* This package is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <string.h>
#include <cwchar>
#include <limits.h>
class CArchMBStateImpl {
public:
mbstate_t m_mbstate;
};
//
// use C library reentrant multibyte conversion
//
static
void
initMB()
{
// do nothing
}
static
void
cleanMB()
{
// do nothing
}
void
ARCH_STRING::initMBState(CArchMBState state)
{
memset(&state->m_mbstate, 0, sizeof(state->m_mbstate));
}
bool
ARCH_STRING::isInitMBState(CArchMBState state)
{
return (mbsinit(&state->m_mbstate) != 0);
}
int
ARCH_STRING::convMBToWC(wchar_t* dst, const char* src,
int n, CArchMBState state)
{
wchar_t dummy;
return static_cast<int>(mbrtowc(dst != NULL ? dst : &dummy,
src, static_cast<size_t>(n), &state->m_mbstate));
}
int
ARCH_STRING::convWCToMB(char* dst, wchar_t src, CArchMBState state)
{
char dummy[MB_LEN_MAX];
return static_cast<int>(wcrtomb(dst != NULL ? dst : dummy,
src, &state->m_mbstate));
}