| /* -*- C++ -*- */ | |
| /* | |
| * Copyright 2003-2004 The Apache Software Foundation. | |
| // (c) Copyright IBM Corp. 2004, 2005 All Rights Reserved | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| * | |
| * | |
| */ | |
| // !!! This include file must be first thing in file !!! | |
| #include "PlatformAutoSense.hpp" | |
| #include "PlatformLanguage.hpp" | |
| #include "../engine/AxisEngineException.h" | |
| #include "../common/AxisTrace.h" | |
| AXIS_CPP_NAMESPACE_START | |
| //****************************************************************************** | |
| // | |
| // PlatformLanguage::initialize() Implementation | |
| // | |
| //****************************************************************************** | |
| void PlatformLanguage:: | |
| initialize() | |
| { | |
| } | |
| //****************************************************************************** | |
| // | |
| // PlatformLanguage::uninitialize() Implementation | |
| // | |
| //****************************************************************************** | |
| void PlatformLanguage:: | |
| uninitialize() | |
| { | |
| } | |
| //****************************************************************************** | |
| // | |
| // PlatformLanguage::toWchar() Implementation | |
| // | |
| //****************************************************************************** | |
| wchar_t * PlatformLanguage:: | |
| toWchar(const char *charBuf, int charLen) | |
| { | |
| logSetFunctionNameEngine("PlatformLanguage::toWchar") | |
| if (charBuf == NULL || charLen == 0) | |
| return NULL; | |
| // Allocate buffer. Need to make sure buffer will fit wide-character | |
| // representation of character string, including null-terminating character. | |
| wchar_t *outBuffer = new wchar_t[charLen]; | |
| // Now call wide-character function to convert string to wide-character. | |
| size_t nbrGenerated = mbstowcs(outBuffer, charBuf, charLen); | |
| if (nbrGenerated == (size_t)-1) | |
| { | |
| delete [] outBuffer; | |
| logThrowExceptionNoExit("AxisEngineException: Error converting from character to wide-character.") | |
| throw AxisEngineException(-999, "Error converting from character to wide-character."); | |
| } | |
| return outBuffer; | |
| } | |
| //****************************************************************************** | |
| // | |
| // PlatformLanguage::toChar() Implementation | |
| // | |
| //****************************************************************************** | |
| char * PlatformLanguage:: | |
| toChar(const wchar_t *wcharBuf, int wcharLen) | |
| { | |
| logSetFunctionNameEngine("PlatformLanguage::toChar") | |
| if (wcharBuf == NULL || wcharLen == 0) | |
| return NULL; | |
| // Allocate buffer. Need to make sure buffer will fit character | |
| // representation of wide-character string, including null-terminating character. | |
| int bufLen = (wcharLen * MB_CUR_MAX); | |
| char *outBuffer = new char[bufLen]; | |
| // Now call wide-character function to convert wide-character to character string. | |
| size_t nbrGenerated = wcstombs(outBuffer, wcharBuf, bufLen); | |
| if (nbrGenerated == (size_t)-1) | |
| { | |
| delete [] outBuffer; | |
| logThrowExceptionNoExit("AxisEngineException: Error converting from wide-character to character.") | |
| throw AxisEngineException(-999, "Error converting from wide-character to character."); | |
| } | |
| return outBuffer; | |
| } | |
| //****************************************************************************** | |
| // | |
| // PlatformLanguage::toUTF8() Implementation | |
| // | |
| //****************************************************************************** | |
| char * PlatformLanguage:: | |
| toUTF8(const char *charBuf, int charLen) | |
| { | |
| logSetFunctionNameEngine("PlatformLanguage::toUTF8") | |
| if (charBuf == NULL || charLen == 0) | |
| return NULL; | |
| // TODO | |
| // I do not think there is a generic way to do this | |
| // that is acceptable by windows and unix platforms (maybe iconv?), so if someone | |
| // wants to do this then they have to create plarform-specific copy of this file and | |
| // put in proper directory and update the build/buildClient.xml file to pick the | |
| // platform file instead of the common file. See how os400 does it. | |
| logThrowExceptionNoExit("AxisEngineException: Error converting to UTF-8.") | |
| throw AxisEngineException(-999, "Error converting to utf-8."); | |
| } | |
| AXIS_CPP_NAMESPACE_END |