/* * 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 #include #include 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(mbrtowc(dst != NULL ? dst : &dummy, src, static_cast(n), &state->m_mbstate)); } int ARCH_STRING::convWCToMB(char* dst, wchar_t src, CArchMBState state) { char dummy[MB_LEN_MAX]; return static_cast(wcrtomb(dst != NULL ? dst : dummy, src, &state->m_mbstate)); }