[GME-commit] GMESRC/GME/Include/xercesc/util/MsgLoaders/ICU ICUMsgLoader.cpp, NONE, 1.1 Makefile.in, NONE, 1.1 ICUMsgLoader.hpp, 1.1.1.1, 1.2
Log messages of CVS commits
gme-commit at list.isis.vanderbilt.edu
Tue Feb 19 14:16:30 CST 2008
- Previous message: [GME-commit] GMESRC/GME/Include/xercesc/sax Dummy.cpp, NONE, 1.1 InputSource.cpp, NONE, 1.1 Makefile.in, NONE, 1.1 SAXException.cpp, NONE, 1.1 SAXParseException.cpp, NONE, 1.1 AttributeList.hpp, 1.1.1.1, 1.2 DTDHandler.hpp, 1.1.1.1, 1.2 DocumentHandler.hpp, 1.1.1.1, 1.2 EntityResolver.hpp, 1.1.1.1, 1.2 ErrorHandler.hpp, 1.1.1.1, 1.2 HandlerBase.hpp, 1.1.1.1, 1.2 InputSource.hpp, 1.1.1.1, 1.2 Locator.hpp, 1.1.1.1, 1.2 Parser.hpp, 1.1.1.1, 1.2 SAXException.hpp, 1.1.1.1, 1.2 SAXParseException.hpp, 1.1.1.1, 1.2
- Next message: [GME-commit] GMESRC/GME/Include/xercesc/util/Compilers CSetDefs.cpp, NONE, 1.1 CodeWarriorDefs.cpp, NONE, 1.1 DECCXXDefs.cpp, NONE, 1.1 GCCDefs.cpp, NONE, 1.1 HPCCDefs.cpp, NONE, 1.1 MIPSproDefs.cpp, NONE, 1.1 MVSCPPDefs.cpp, NONE, 1.1 Makefile.in, NONE, 1.1 OS400SetDefs.cpp, NONE, 1.1 PTXCCDefs.cpp, NONE, 1.1 QCCDefs.cpp, NONE, 1.1 SCOCCDefs.cpp, NONE, 1.1 SunCCDefs.cpp, NONE, 1.1 TandemCCDefs.cpp, NONE, 1.1 BorlandCDefs.hpp, 1.1.1.1, 1.2 CSetDefs.hpp, 1.1.1.1, 1.2 CodeWarriorDefs.hpp, 1.1.1.1, 1.2 DECCXXDefs.hpp, 1.1.1.1, 1.2 GCCDefs.hpp, 1.1.1.1, 1.2 HPCCDefs.hpp, 1.1.1.1, 1.2 IBMVAOS2Defs.hpp, 1.1.1.1, 1.2 IBMVAW32Defs.hpp, 1.1.1.1, 1.2 MIPSproDefs.hpp, 1.1.1.1, 1.2 MVSCPPDefs.hpp, 1.1.1.1, 1.2 OS400SetDefs.hpp, 1.1.1.1, 1.2 PTXCCDefs.hpp, 1.1.1.1, 1.2 QCCDefs.hpp, 1.1.1.1, 1.2 SCOCCDefs.hpp, 1.1.1.1, 1.2 SunCCDefs.hpp, 1.1.1.1, 1.2 SunKaiDefs.hpp, 1.1.1.1, 1.2 TandemCCDefs.hpp, 1.1.1.1, 1.2 VCPPDefs.hpp, 1.1.1.1, 1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /project/gme-repository/GMESRC/GME/Include/xercesc/util/MsgLoaders/ICU
In directory escher:/tmp/cvs-serv26529/util/MsgLoaders/ICU
Modified Files:
ICUMsgLoader.hpp
Added Files:
ICUMsgLoader.cpp Makefile.in
Log Message:
Xerces2.7 includes checkin.
CVS User: Zoltan Molnar, ISIS (zolmol)
--- NEW FILE: Makefile.in ---
#
# Copyright 1999-2000,2004 The Apache Software Foundation.
#
# 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.
#
#
#
# $Log: Makefile.in,v $
# Revision 1.1 2008/02/19 20:16:28 zolmol
# Xerces2.7 includes checkin.
#
# Revision 1.4 2004/09/08 13:56:33 peiyongz
# Apache License Version 2.0
#
# Revision 1.3 2004/07/09 16:15:04 peiyongz
# Build on HP-Itanium, aCC A.05.52
#
# Revision 1.2 2002/07/26 16:49:27 tng
# [Bug 2681] Can't build with gcc/g++ not named 'gcc'/'g++'. Patch from Jonathan Lennox.
#
# Revision 1.1.1.1 2002/02/01 22:22:19 peiyongz
# sane_include
#
# Revision 1.7 2001/07/06 17:11:59 tng
# Automatic build of single-threaded library. By Martin Kalen.
#
# Revision 1.6 2001/06/27 17:08:38 tng
# [Bug 1147] Headers install in wrong directory. By Murray Cumming.
#
# Revision 1.5 2000/02/06 07:48:21 rahulj
# Year 2K copyright swat.
#
# Revision 1.4 2000/02/01 23:43:39 abagchi
# AS/400 related change
#
# Revision 1.3 1999/12/14 23:53:27 rahulj
# Removed the offending Ctrl-M's from the commit message
# logs which was giving packaging problems.
#
# PR:
# Obtained from:
# Submitted by:
# Reviewed by:
#
# Revision 1.2 1999/11/23 02:00:18 rahulj
# Code now works under HPUX 11. Tested inmemory message loader.
# Revamped makefiles. Builds with both DCE threads as well as pthread libraries.
#
# Revision 1.1.1.1 1999/11/09 01:07:25 twl
# Initial checkin
#
# Revision 1.3 1999/11/08 20:45:26 rahul
# Swat for adding in Product name and CVS comment log variable.
#
#
PLATFORM = @platform@
CC = @cc@
CXX = @cxx@
CXXVER = @cxxver@
GCC = @GCC@
GXX = @GXX@
CXXFLAGS = @cxxflags@
CFLAGS = @cflags@
PREFIX = @prefix@
PREFIX_INCLUDE = @prefix_include@
LDFLAGS = @ldflags@
LIBS = @libs@
OSVER = @osver@
USELIBWWW = @uselibwww@
MESSAGELOADER = @messageloader@
TRANSCODER = @transcoder@
THREADS = @threads@
MODULE = util
SUBMODULE = MsgLoaders/ICU
include ../../../Makefile.incl
CPP_PUBHEADERS = \
ICUMsgLoader.hpp
CPP_OBJECTS = ICUMsgLoader.$(TO)
include ../../Makefile.util.submodule
--- NEW FILE: ICUMsgLoader.cpp ---
/*
* Copyright 1999-2000,2004 The Apache Software Foundation.
*
* 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.
*/
/*
* $Id: ICUMsgLoader.cpp,v 1.1 2008/02/19 20:16:28 zolmol Exp $
*/
// ---------------------------------------------------------------------------
// Includes
// ---------------------------------------------------------------------------
#include <xercesc/util/XercesDefs.hpp>
#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/util/XMLMsgLoader.hpp>
#include <xercesc/util/XMLString.hpp>
#include <xercesc/util/XMLUniDefs.hpp>
#include <xercesc/util/Janitor.hpp>
#include "ICUMsgLoader.hpp"
#include "unicode/putil.h"
#include "unicode/uloc.h"
#include "unicode/udata.h"
#include "string.h"
#include <stdio.h>
#include <stdlib.h>
XERCES_CPP_NAMESPACE_BEGIN
// ---------------------------------------------------------------------------
// Local static methods
// ---------------------------------------------------------------------------
/*
* Resource Data Reference.
*
* The data is packaged as a dll (or .so or whatever, depending on the platform) that exports a data symbol.
* The application (thic *.cpp) references that symbol here, and will pass the data address to ICU, which
* will then be able to fetch resources from the data.
*/
#if defined(_WIN32) || defined(WIN32)
extern "C" void U_IMPORT *XercesMessages2_7_dat;
#else
extern "C" void U_IMPORT *XercesMessages2_7_0_dat;
#endif
/*
* Tell ICU where our resource data is located in memory. The data lives in the XercesMessages dll, and we just
* pass the address of an exported symbol from that library to ICU.
*/
static bool setAppDataOK = false;
static void setAppData()
{
static bool setAppDataDone = false;
if (setAppDataDone)
{
return;
}
else
{
setAppDataDone = true;
UErrorCode err = U_ZERO_ERROR;
#if defined(_WIN32) || defined(WIN32)
udata_setAppData("XercesMessages2_7", &XercesMessages2_7_dat, &err);
#else
udata_setAppData("XercesMessages2_7_0", &XercesMessages2_7_0_dat, &err);
#endif
if (U_SUCCESS(err))
{
setAppDataOK = true;
}
}
}
// ---------------------------------------------------------------------------
// Public Constructors and Destructor
// ---------------------------------------------------------------------------
ICUMsgLoader::ICUMsgLoader(const XMLCh* const msgDomain)
:fLocaleBundle(0)
,fDomainBundle(0)
{
/***
Validate msgDomain
***/
if (!XMLString::equals(msgDomain, XMLUni::fgXMLErrDomain) &&
!XMLString::equals(msgDomain, XMLUni::fgExceptDomain) &&
!XMLString::equals(msgDomain, XMLUni::fgXMLDOMMsgDomain) &&
!XMLString::equals(msgDomain, XMLUni::fgValidityDomain) )
{
XMLPlatformUtils::panic(PanicHandler::Panic_UnknownMsgDomain);
}
/***
Resolve domainName
***/
int index = XMLString::lastIndexOf(msgDomain, chForwardSlash);
char* domainName = XMLString::transcode(&(msgDomain[index + 1]), XMLPlatformUtils::fgMemoryManager);
ArrayJanitor<char> jan1(domainName, XMLPlatformUtils::fgMemoryManager);
/***
Location resolution priority
1. XMLMsgLoader::getNLSHome(), set by user through
XMLPlatformUtils::Initialize(), which provides user-specified
location where the message loader shall retrieve error messages.
2. envrionment var: XERCESC_NLS_HOME
3. path $XERCESCROOT/msg
***/
char locationBuf[1024];
memset(locationBuf, 0, sizeof locationBuf);
const char *nlsHome = XMLMsgLoader::getNLSHome();
if (nlsHome)
{
strcpy(locationBuf, nlsHome);
strcat(locationBuf, U_FILE_SEP_STRING);
}
else
{
nlsHome = getenv("XERCESC_NLS_HOME");
if (nlsHome)
{
strcpy(locationBuf, nlsHome);
strcat(locationBuf, U_FILE_SEP_STRING);
}
else
{
nlsHome = getenv("XERCESCROOT");
if (nlsHome)
{
strcpy(locationBuf, nlsHome);
strcat(locationBuf, U_FILE_SEP_STRING);
strcat(locationBuf, "msg");
strcat(locationBuf, U_FILE_SEP_STRING);
}
else
{
/***
leave it to ICU to decide where to search
for the error message.
***/
setAppData();
}
}
}
/***
Open the locale-specific resource bundle
***/
#if defined(_WIN32) || defined(WIN32)
strcat(locationBuf, "XercesMessages2_7");
#else
strcat(locationBuf, "XercesMessages2_7_0");
#endif
UErrorCode err = U_ZERO_ERROR;
uloc_setDefault("en_US", &err); // in case user-specified locale unavailable
err = U_ZERO_ERROR;
fLocaleBundle = ures_open(locationBuf, XMLMsgLoader::getLocale(), &err);
if (!U_SUCCESS(err) || fLocaleBundle == NULL)
{
/***
in case user specified location does not work
try the dll
***/
#if defined(_WIN32) || defined(WIN32)
if (strcmp(locationBuf, "XercesMessages2_7") !=0 )
#else
if (strcmp(locationBuf, "XercesMessages2_7_0") !=0 )
#endif
{
setAppData();
err = U_ZERO_ERROR;
#if defined(_WIN32) || defined(WIN32)
fLocaleBundle = ures_open("XercesMessages2_7", XMLMsgLoader::getLocale(), &err);
#else
fLocaleBundle = ures_open("XercesMessages2_7_0", XMLMsgLoader::getLocale(), &err);
#endif
if (!U_SUCCESS(err) || fLocaleBundle == NULL)
{
XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain);
}
}
else
{
XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain);
}
}
/***
Open the domain specific resource bundle within
the locale-specific resource bundle
***/
err = U_ZERO_ERROR;
fDomainBundle = ures_getByKey(fLocaleBundle, domainName, NULL, &err);
if (!U_SUCCESS(err) || fDomainBundle == NULL)
{
XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain);
}
}
ICUMsgLoader::~ICUMsgLoader()
{
ures_close(fDomainBundle);
ures_close(fLocaleBundle);
}
// ---------------------------------------------------------------------------
// Implementation of the virtual message loader API
// ---------------------------------------------------------------------------
bool ICUMsgLoader::loadMsg( const XMLMsgLoader::XMLMsgId msgToLoad
, XMLCh* const toFill
, const unsigned int maxChars)
{
UErrorCode err = U_ZERO_ERROR;
int32_t strLen = 0;
// Assuming array format
const UChar *name = ures_getStringByIndex(fDomainBundle, (int32_t)msgToLoad-1, &strLen, &err);
if (!U_SUCCESS(err) || (name == NULL))
{
return false;
}
int retStrLen = strLen > (int32_t)maxChars ? maxChars : strLen;
if (sizeof(UChar)==sizeof(XMLCh))
{
XMLString::moveChars(toFill, (XMLCh*)name, retStrLen);
toFill[retStrLen] = (XMLCh) 0;
}
else
{
XMLCh* retStr = toFill;
const UChar *srcPtr = name;
while (retStrLen--)
*retStr++ = *srcPtr++;
*retStr = 0;
}
return true;
}
bool ICUMsgLoader::loadMsg( const XMLMsgLoader::XMLMsgId msgToLoad
, XMLCh* const toFill
, const unsigned int maxChars
, const XMLCh* const repText1
, const XMLCh* const repText2
, const XMLCh* const repText3
, const XMLCh* const repText4
, MemoryManager* const manager )
{
// Call the other version to load up the message
if (!loadMsg(msgToLoad, toFill, maxChars))
return false;
// And do the token replacement
XMLString::replaceTokens(toFill, maxChars, repText1, repText2, repText3, repText4, manager);
return true;
}
bool ICUMsgLoader::loadMsg( const XMLMsgLoader::XMLMsgId msgToLoad
, XMLCh* const toFill
, const unsigned int maxChars
, const char* const repText1
, const char* const repText2
, const char* const repText3
, const char* const repText4
, MemoryManager * const manager)
{
//
// Transcode the provided parameters and call the other version,
// which will do the replacement work.
//
XMLCh* tmp1 = 0;
XMLCh* tmp2 = 0;
XMLCh* tmp3 = 0;
XMLCh* tmp4 = 0;
bool bRet = false;
if (repText1)
tmp1 = XMLString::transcode(repText1, manager);
if (repText2)
tmp2 = XMLString::transcode(repText2, manager);
if (repText3)
tmp3 = XMLString::transcode(repText3, manager);
if (repText4)
tmp4 = XMLString::transcode(repText4, manager);
bRet = loadMsg(msgToLoad, toFill, maxChars, tmp1, tmp2, tmp3, tmp4, manager);
if (tmp1)
manager->deallocate(tmp1);//delete [] tmp1;
if (tmp2)
manager->deallocate(tmp2);//delete [] tmp2;
if (tmp3)
manager->deallocate(tmp3);//delete [] tmp3;
if (tmp4)
manager->deallocate(tmp4);//delete [] tmp4;
return bRet;
}
XERCES_CPP_NAMESPACE_END
- Previous message: [GME-commit] GMESRC/GME/Include/xercesc/sax Dummy.cpp, NONE, 1.1 InputSource.cpp, NONE, 1.1 Makefile.in, NONE, 1.1 SAXException.cpp, NONE, 1.1 SAXParseException.cpp, NONE, 1.1 AttributeList.hpp, 1.1.1.1, 1.2 DTDHandler.hpp, 1.1.1.1, 1.2 DocumentHandler.hpp, 1.1.1.1, 1.2 EntityResolver.hpp, 1.1.1.1, 1.2 ErrorHandler.hpp, 1.1.1.1, 1.2 HandlerBase.hpp, 1.1.1.1, 1.2 InputSource.hpp, 1.1.1.1, 1.2 Locator.hpp, 1.1.1.1, 1.2 Parser.hpp, 1.1.1.1, 1.2 SAXException.hpp, 1.1.1.1, 1.2 SAXParseException.hpp, 1.1.1.1, 1.2
- Next message: [GME-commit] GMESRC/GME/Include/xercesc/util/Compilers CSetDefs.cpp, NONE, 1.1 CodeWarriorDefs.cpp, NONE, 1.1 DECCXXDefs.cpp, NONE, 1.1 GCCDefs.cpp, NONE, 1.1 HPCCDefs.cpp, NONE, 1.1 MIPSproDefs.cpp, NONE, 1.1 MVSCPPDefs.cpp, NONE, 1.1 Makefile.in, NONE, 1.1 OS400SetDefs.cpp, NONE, 1.1 PTXCCDefs.cpp, NONE, 1.1 QCCDefs.cpp, NONE, 1.1 SCOCCDefs.cpp, NONE, 1.1 SunCCDefs.cpp, NONE, 1.1 TandemCCDefs.cpp, NONE, 1.1 BorlandCDefs.hpp, 1.1.1.1, 1.2 CSetDefs.hpp, 1.1.1.1, 1.2 CodeWarriorDefs.hpp, 1.1.1.1, 1.2 DECCXXDefs.hpp, 1.1.1.1, 1.2 GCCDefs.hpp, 1.1.1.1, 1.2 HPCCDefs.hpp, 1.1.1.1, 1.2 IBMVAOS2Defs.hpp, 1.1.1.1, 1.2 IBMVAW32Defs.hpp, 1.1.1.1, 1.2 MIPSproDefs.hpp, 1.1.1.1, 1.2 MVSCPPDefs.hpp, 1.1.1.1, 1.2 OS400SetDefs.hpp, 1.1.1.1, 1.2 PTXCCDefs.hpp, 1.1.1.1, 1.2 QCCDefs.hpp, 1.1.1.1, 1.2 SCOCCDefs.hpp, 1.1.1.1, 1.2 SunCCDefs.hpp, 1.1.1.1, 1.2 SunKaiDefs.hpp, 1.1.1.1, 1.2 TandemCCDefs.hpp, 1.1.1.1, 1.2 VCPPDefs.hpp, 1.1.1.1, 1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the GME-commit
mailing list