[GME-commit] GMESRC/GME/Include/xercesc/util/Transcoders/Iconv400 Iconv400TransService.hpp, NONE, 1.1 iconv_cnv.hpp, NONE, 1.1 iconv_util.hpp, NONE, 1.1 pos400.h, NONE, 1.1 utypes.h, NONE, 1.1
Log messages of CVS commits
gme-commit at list.isis.vanderbilt.edu
Tue Feb 19 14:16:32 CST 2008
- Previous message: [GME-commit] GMESRC/GME/Include/xercesc/util/Transcoders/IconvFBSD IconvFBSDTransService.hpp, NONE, 1.1
- Next message: [GME-commit] GMESRC/GME/Include/xercesc/util/Transcoders/Uniconv390 Uniconv390TransService.hpp, NONE, 1.1 XML256TableTranscoder390.hpp, NONE, 1.1 XML88591Transcoder390.hpp, NONE, 1.1 XMLASCIITranscoder390.hpp, NONE, 1.1 XMLEBCDICTranscoder390.hpp, NONE, 1.1 XMLIBM1047Transcoder390.hpp, NONE, 1.1 XMLIBM1140Transcoder390.hpp, NONE, 1.1 XMLUTF8Transcoder390.hpp, NONE, 1.1 XMLWin1252Transcoder390.hpp, NONE, 1.1 ccsid.h, NONE, 1.1 uniconv.h, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /project/gme-repository/GMESRC/GME/Include/xercesc/util/Transcoders/Iconv400
In directory escher:/tmp/cvs-serv26529/util/Transcoders/Iconv400
Added Files:
Iconv400TransService.hpp iconv_cnv.hpp iconv_util.hpp pos400.h
utypes.h
Log Message:
Xerces2.7 includes checkin.
CVS User: Zoltan Molnar, ISIS (zolmol)
--- NEW FILE: Iconv400TransService.hpp ---
#if (__OS400_TGTVRM__>=510) /* @01a */
#pragma datamodel(P128) /* @01a */
#endif /* @01a */
/*
* Copyright 1999-2002,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.
*/
/**
* @02A V5R2M0 200419 jrhansen : support lowercase function
* $Id: Iconv400TransService.hpp,v 1.1 2008/02/19 20:16:29 zolmol Exp $
*/
#ifndef ICONV400TRANSSERVICE_HPP
#define ICONV400TRANSSERVICE_HPP
#include <xercesc/util/Mutexes.hpp>
#include <xercesc/util/TransService.hpp>
#include <qlg.h>
XERCES_CPP_NAMESPACE_BEGIN
struct UConverter;
class XMLUTIL_EXPORT Iconv400TransService : public XMLTransService
{
public :
// -----------------------------------------------------------------------
// Public, static methods
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
// Constructors and Destructor
// -----------------------------------------------------------------------
Iconv400TransService();
~Iconv400TransService();
// -----------------------------------------------------------------------
// Implementation of the virtual transcoding service API
// -----------------------------------------------------------------------
virtual int compareIString
(
const XMLCh* const comp1
, const XMLCh* const comp2
);
virtual int compareNIString
(
const XMLCh* const comp1
, const XMLCh* const comp2
, const unsigned int maxChars
);
virtual const XMLCh* getId() const;
virtual bool isSpace(const XMLCh toCheck) const;
virtual XMLLCPTranscoder* makeNewLCPTranscoder();
virtual bool supportsSrcOfs() const;
virtual void upperCase(XMLCh* const toUpperCase) const;
virtual void lowerCase(XMLCh* const toLowerCase) const;
protected :
// -----------------------------------------------------------------------
// Protected virtual methods
// -----------------------------------------------------------------------
virtual XMLTranscoder* makeNewXMLTranscoder
(
const XMLCh* const encodingName
, XMLTransService::Codes& resValue
, const unsigned int blockSize
, MemoryManager* const manager
);
private :
// -----------------------------------------------------------------------
// Unimplemented constructors and operators
// -----------------------------------------------------------------------
Iconv400TransService(const Iconv400TransService&);
Iconv400TransService& operator=(const Iconv400TransService&);
XMLCh toUnicodeUpper(XMLCh toupper) const;
XMLCh toUnicodeLower(XMLCh tolower) const;
Qlg_CCSID_ReqCtlBlk_T convertCtlblkUpper;
Qlg_CCSID_ReqCtlBlk_T convertCtlblkLower;
};
class XMLUTIL_EXPORT Iconv400Transcoder : public XMLTranscoder
{
public :
// -----------------------------------------------------------------------
// Constructors and Destructor
// -----------------------------------------------------------------------
Iconv400Transcoder
(
const XMLCh* const encodingName
, UConverter* const toAdopt
, const unsigned int blockSize
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
);
~Iconv400Transcoder();
// -----------------------------------------------------------------------
// Implementation of the virtual transcoder interface
// -----------------------------------------------------------------------
virtual unsigned int transcodeFrom
(
const XMLByte* const srcData
, const unsigned int srcCount
, XMLCh* const toFill
, const unsigned int maxChars
, unsigned int& bytesEaten
, unsigned char* const charSizes
);
virtual unsigned int transcodeTo
(
const XMLCh* const srcData
, const unsigned int srcCount
, XMLByte* const toFill
, const unsigned int maxBytes
, unsigned int& charsEaten
, const UnRepOpts options
);
virtual bool canTranscodeTo
(
const unsigned int toCheck
) const;
private :
// -----------------------------------------------------------------------
// Unimplemented constructors and operators
// -----------------------------------------------------------------------
Iconv400Transcoder();
Iconv400Transcoder(const Iconv400Transcoder&);
Iconv400Transcoder& operator=(const Iconv400Transcoder&);
// -----------------------------------------------------------------------
// Private data members
//
// fConverter
// This is a pointer to the Iconv400 converter that this transcoder
// uses.
//
// fFixed
// This is set to true if the encoding is a fixed size one. This
// can be used to optimize some operations.
//
// fSrcOffsets
// This is an array of longs, which are allocated to the size of
// the trancoding block (if any) indicated in the ctor. It is used
// to get the character offsets from Iconv400, which are then translated
// into an array of char sizes for return.
// -----------------------------------------------------------------------
UConverter* fConverter;
bool fFixed;
long* fSrcOffsets;
};
class XMLUTIL_EXPORT Iconv400LCPTranscoder : public XMLLCPTranscoder
{
public :
// -----------------------------------------------------------------------
// Constructors and Destructor
// -----------------------------------------------------------------------
Iconv400LCPTranscoder(UConverter* const toAdopt);
~Iconv400LCPTranscoder();
// -----------------------------------------------------------------------
// Implementation of the virtual transcoder interface
// -----------------------------------------------------------------------
virtual unsigned int calcRequiredSize(const char* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
virtual unsigned int calcRequiredSize(const XMLCh* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
virtual char* transcode(const XMLCh* const toTranscode);
virtual char* transcode(const XMLCh* const toTranscode,
MemoryManager* const manager);
virtual XMLCh* transcode(const char* const toTranscode);
virtual XMLCh* transcode(const char* const toTranscode,
MemoryManager* const manager);
virtual bool transcode
(
const char* const toTranscode
, XMLCh* const toFill
, const unsigned int maxChars
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
);
virtual bool transcode
(
const XMLCh* const toTranscode
, char* const toFill
, const unsigned int maxChars
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
);
private :
// -----------------------------------------------------------------------
// Unimplemented constructors and operators
// -----------------------------------------------------------------------
Iconv400LCPTranscoder();
Iconv400LCPTranscoder(const Iconv400LCPTranscoder&);
Iconv400LCPTranscoder& operator=(const Iconv400LCPTranscoder&);
// -----------------------------------------------------------------------
// Private data members
//
// fConverter
// This is a pointer to the Iconv converter that this transcoder
// uses.
//
// fMutex
// We have to synchronize threaded calls to the converter.
// -----------------------------------------------------------------------
UConverter* fConverter;
XMLMutex fMutex;
};
XERCES_CPP_NAMESPACE_END
#endif
#if (__OS400_TGTVRM__>=510) /* @01a */
#pragma datamodel(pop) /* @01a */
#endif /* @01a */
--- NEW FILE: iconv_util.hpp ---
#if (__OS400_TGTVRM__>=510) /* @01a */
#pragma datamodel(P128) /* @01a */
#endif /* @01a */
/*
* Copyright 1999-2001,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: iconv_util.hpp,v 1.1 2008/02/19 20:16:30 zolmol Exp $
*/
#include "utypes.h"
#include <iconv.h>
XERCES_CPP_NAMESPACE_BEGIN
const char* iconv_getDefaultCodepage(void);
// extern "C" int QlgCvtTextDescToDesc (int, int, char *, int, char*, int, int);
#define MAX_CONVERTER_NAME_LENGTH 60
#define MAX_SUBCHAR_LEN 4
#define ERROR_BUFFER_LENGTH 20
typedef enum {UNKNOWN = -1, IBM = 0}
UCNV_PLATFORM;
typedef enum
{
UNSUPPORTED_CONVERTER = -1,
SBCS = 0,
DBCS = 1,
MBCS = 2,
LATIN_1 = 3,
UTF8 = 4,
UTF16_BigEndian = 5,
UTF16_LittleEndian = 6,
EBCDIC_STATEFUL = 7,
ISO_2022 = 8,
JIS = 9,
EUC = 10,
GB = 11
}
UCNV_TYPE;
int32_t
u_strlen(const UChar *s);
/* note sure if needed - think that this is needed in cnv.c */
char* u_austrcpy(char *s1,
const UChar *ucs2 );
/*Defines the struct of a UConverterSharedData the immutable, shared part of
*UConverter
*/
typedef struct
{
uint32_t referenceCounter; /*used to count number of clients */
char name[MAX_CONVERTER_NAME_LENGTH]; /*internal name of the converter */
UCNV_PLATFORM platform; /*platform of the converter (only IBM now */
int32_t codepage; /*codepage # (now IBM-$codepage) */
UCNV_TYPE conversionType; /*conversion type */
int8_t minBytesPerChar; /*Minimum # bytes per char in this codepage */
int8_t maxBytesPerChar; /*Maximum # bytes per char in this codepage */
struct
{ /*initial values of some members of the mutable part of object */
int8_t subCharLen;
unsigned char subChar[MAX_SUBCHAR_LEN];
} defaultConverterValues ;
iconv_t toiconv_handle ; /* handle to convert to unicode*/
iconv_t fromiconv_handle; /* handle to convert from unicode*/
}
UConverterSharedData;
/*Defines a UConverter, the lightweight mutable part the user sees */
struct UConverter
{
int8_t pad;
int32_t mode;
int8_t subCharLen; /*length of the codepage specific character sequence */
unsigned char subChar[MAX_SUBCHAR_LEN]; /*codepage specific character sequence */
UConverterSharedData *sharedData; /*Pointer to the shared immutable part of the
*converter object
*/
};
typedef struct UConverter UConverter;
UConverter* createNewConverter(const char *name, UErrorCode *err);
/*Initializes the mutable lightweight portion of the object
*By copying data from UConverter->sharedData->defaultConverter
*/
static void initializeDataConverter (UConverter * myUConverter);
UConverter *createConverter (const char *converterName, UErrorCode * err);
XERCES_CPP_NAMESPACE_END
#if (__OS400_TGTVRM__>=510) /* @01a */
#pragma datamodel(pop) /* @01a */
#endif /* @01a */
--- NEW FILE: pos400.h ---
/*
* 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: pos400.h,v 1.1 2008/02/19 20:16:30 zolmol Exp $
*/
/* Define the platform we're on. */
#ifndef OS400
#define OS400
#endif
/* Define whether inttypes.h is available */
#define HAVE_INTTYPES_H 0
/* Determines whether specific types are available */
#define HAVE_INT8_T 0
#define HAVE_UINT8_T 0
#define HAVE_INT16_T 0
#define HAVE_UINT16_T 0
#define HAVE_INT32_T 0
#define HAVE_UINT32_T 0
#define HAVE_BOOL_T 0
/* Determines the endianness of the platform */
#define U_IS_BIG_ENDIAN 1
/*===========================================================================*/
/* Generic data types */
/*===========================================================================*/
/* If your platform does not have the <inttypes.h> header, you may
need to edit the typedefs below. */
#if HAVE_INTTYPES_H
#include <inttypes.h>
#else
#if ! HAVE_INT8_T
typedef signed char int8_t;
#endif
#if ! HAVE_UINT8_T
typedef unsigned char uint8_t;
#endif
#if ! HAVE_INT16_T
typedef signed short int16_t;
#endif
#if ! HAVE_UINT16_T
typedef unsigned short uint16_t;
#endif
#if ! HAVE_INT32_T
typedef signed long int32_t;
#endif
#if ! HAVE_UINT32_T
typedef unsigned long uint32_t;
#endif
#endif
#include <limits.h>
#define T_INT32_MAX (LONG_MAX)
/*===========================================================================*/
/* Symbol import-export control */
/*===========================================================================*/
#define U_EXPORT
#define U_EXPORT2
#define U_IMPORT
--- NEW FILE: iconv_cnv.hpp ---
#if (__OS400_TGTVRM__>=510) /* @01a */
#pragma datamodel(P128) /* @01a */
#endif /* @01a */
/*
* Copyright 1999-2001,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: iconv_cnv.hpp,v 1.1 2008/02/19 20:16:30 zolmol Exp $
*/
#ifndef UCNV_H
#define UCNV_H
#include "utypes.h"
XERCES_CPP_NAMESPACE_BEGIN
/**
* Creates a UConverter object with the names specified as a C string.
* The actual name will be resolved with the alias file.
* if <TT>NULL</TT> is passed for the converter name, it will create one with the
* getDefaultName return value.
* @param converterName : name of the uconv table
* @param err outgoing error status <TT>MEMORY_ALLOCATION_ERROR, TABLE_NOT_FOUND</TT>
* @return the created Unicode converter object, or <TT>NULL</TT> if an error occured
* @see ucnv_openU
* @see ucnv_openCCSID
* @see ucnv_close
*/
U_CAPI
UConverter* U_EXPORT2 ucnv_open (const char *converterName,
UErrorCode * err);
/**
* Creates a Unicode converter with the names specified as unicode string. The name should be limited to
* the ASCII-7 alphanumerics range. The actual name will be resolved with the alias file.
* if <TT>NULL</TT> is passed for the converter name, it will create one with the
* getDefaultName return value.
* @param converterName : name of the uconv table in a zero terminated Unicode string
* @param err outgoing error status <TT>MEMORY_ALLOCATION_ERROR, TABLE_NOT_FOUND</TT>
* @return the created Unicode converter object, or <TT>NULL</TT> if an error occured
* @see ucnv_open
* @see ucnv_openCCSID
* @see ucnv_close
*/
U_CAPI UConverter* U_EXPORT2 ucnv_openU (const UChar * name,
UErrorCode * err);
/**
* Creates a UConverter object using a CCSID number.
* @param codepage : codepage # of the uconv table
* @param platform : codepage's platform (now only <TT>IBM</TT> supported)
* @param err error status <TT>MEMORY_ALLOCATION_ERROR, TABLE_NOT_FOUND</TT>
* @return the created Unicode converter object, or <TT>NULL</TT> if and error occured
* @see ucnv_open
* @see ucnv_openU
* @see ucnv_close
*/
U_CAPI void U_EXPORT2 ucnv_close (UConverter * converter);
/**
* Returns the maximum length of bytes used by a character. This varies between 1 and 4
* @param converter the Unicode converter
* @return the maximum number of bytes allowed by this particular converter
* @see ucnv_getMinCharSize
*/
U_CAPI int8_t U_EXPORT2
ucnv_getMaxCharSize (const UConverter * converter);
/**
* Returns the minimum byte length for characters in this codepage. This is either
* 1 or 2 for all supported codepages.
* @param converter the Unicode converter
* @return the minimum number of bytes allowed by this particular converter
* @see ucnv_getMaxCharSize
*/
U_CAPI int8_t U_EXPORT2
ucnv_getMinCharSize (const UConverter * converter);
/**
* Transcodes an array of unicode characters to an array of codepage characters.
* The source pointer is an I/O parameter, it starts out pointing where the function is
* to begin transcoding, and ends up pointing after the first sequence of the bytes
* that it encounters that are semantically invalid.
* if ucnv_setToUCallBack is called with an action other than <TT>STOP</TT>
* before a call is made to this API, <TT>consumed</TT> and <TT>source</TT> should point to the same place
* (unless <TT>target</TT> ends with an imcomplete sequence of bytes and <TT>flush</TT> is <TT>FALSE</TT>).
* the <TT>target</TT> buffer buffer needs to be a least the size of the maximum # of bytes per characters
* allowed by the target codepage.
* @param converter the Unicode converter
* @param converter the Unicode converter
* @param target : I/O parameter. Input : Points to the beginning of the buffer to copy
* codepage characters to. Output : points to after the last codepage character copied
* to <TT>target</TT>.
* @param targetLimit the pointer to the end of the <TT>target</TT> array
* @param source the source Unicode character array
* @param sourceLimit the pointer to the end of the source array
* @param offsets if NULL is passed, nothing will happen to it, otherwise it needs to have the same number
* of allocated cells as <TT>target</TT>. Will fill in offsets from target to source pointer
* e.g: <TT>offsets[3]</TT> is equal to 6, it means that the <TT>target[3]</TT> was a result of transcoding <TT>source[6]</TT>
* For output data carried across calls -1 will be placed for offsets.
* @param flush <TT>TRUE</TT> if the buffer is the last buffer of the conversion interation
* and the conversion will finish with this call, FALSE otherwise.
* @param err the error status. <TT>ILLEGAL_ARGUMENT_ERROR</TT> will be returned if the
* converter is <TT>NULL</TT>.
* @see ucnv_fromUChars
* @see ucnv_convert
* @see ucnv_getMinCharSize
* @see ucnv_setToUCallBack
*/
U_CAPI
void U_EXPORT2 ucnv_fromUnicode (UConverter * converter,
char **target,
const char *targetLimit,
const UChar ** source,
const UChar * sourceLimit,
int32_t* offsets,
int flush,
UErrorCode * err);
/**
* Converts an array of codepage characters into an array of unicode characters.
* The source pointer is an I/O parameter, it starts out pointing at the place
* to begin translating, and ends up pointing after the first sequence of the bytes
* that it encounters that are semantically invalid.
* if ucnv_setFromUCallBack is called with an action other than STOP
* before a call is made to this API, consumed and source should point to the same place
* (unless target ends with an imcomplete sequence of bytes and flush is FALSE).
* @param converter the Unicode converter
* @param target : I/O parameter. Input : Points to the beginning of the buffer to copy
* Unicode characters to. Output : points to after the last UChar copied to target.
* @param targetLimit the pointer to the end of the target array
* @param source the source codepage character array
* @param sourceLimit the pointer to the end of the source array
* @param offsets if NULL is passed, nothing will happen to it, otherwise it needs to have the same number
* of allocated cells as <TT>target</TT>. Will fill in offsets from target to source pointer
* e.g: <TT>offsets[3]</TT> is equal to 6, it means that the <TT>target[3]</TT> was a result of transcoding <TT>source[6]</TT>
* For output data carried across calls -1 will be placed for offsets.
* @param flush TRUE if the buffer is the last buffer and the conversion will finish
* in this call, FALSE otherwise.
* @param err the error code status <TT>ILLEGAL_ARGUMENT_ERROR</TT> will be returned if the
* converter is <TT>NULL</TT>, or if <TT>targetLimit</TT> and <TT>sourceLimit</TT> are misaligned.
* @see ucnv_toUChars
* @see ucnv_getNextUChar
* @see ucnv_convert
* @see ucnv_setFromUCallBack
*/
U_CAPI
void U_EXPORT2 ucnv_toUnicode (UConverter * converter,
UChar ** target,
const UChar * targetLimit,
const char **source,
const char *sourceLimit,
int32_t* offsets,
int flush,
UErrorCode * err);
/**
* Transcodes the source Unicode string to the target string in a codepage encoding
* with the specified Unicode converter. For example, if a Unicode to/from JIS
* converter is specified, the source string in Unicode will be transcoded to JIS
* encoding. The result will be stored in JIS encoding.
* if any problems during conversion are encountered it will SUBSTITUTE with the default (initial)
* substitute characters.
* This function is a more convenient but less efficient version of \Ref{ucnv_fromUnicode}.
* @param converter the Unicode converter
* @param source the <TT>source</TT> Unicode string (zero Terminated)
* @param target the <TT>target</TT> string in codepage encoding (<STRONG>not zero-terminated</STRONG> because some
* codepage do not use '\0' as a string terminator
* @param targetCapacity Input the number of bytes available in the <TT>target</TT> buffer
* @param err the error status code.
* <TT>INDEX_OUTOFBOUNDS_ERROR</TT> will be returned if the
* the # of bytes provided are not enough for transcoding.
* <TT>ILLEGAL_ARGUMENT_ERROR</TT> is returned if the converter is <TT>NULL</TT> or the source or target string is empty.
* <TT>BUFFER_OVERFLOW_ERROR</TT> when <TT>targetSize</TT> turns out to be bigger than <TT>targetCapacity</TT>
* @return number of bytes needed in target, regardless of <TT>targetCapacity</TT>
* @see ucnv_fromUnicode
* @see ucnv_convert
*/
U_CAPI
int32_t U_EXPORT2 ucnv_fromUChars (const UConverter * converter,
char *target,
int32_t targetCapacity,
const UChar * source,
UErrorCode * err);
/**
* Transcode the source string in codepage encoding to the target string in
* Unicode encoding. For example, if a Unicode to/from JIS
* converter is specified, the source string in JIS encoding will be transcoded
* to Unicode and placed into a provided target buffer.
* if any problems during conversion are encountered it will SUBSTITUTE with the Unicode REPLACEMENT char
* We recomment, the size of the target buffer needs to be at least as long as the maximum # of bytes per char
* in this character set.
* A zero-terminator will be placed at the end of the target buffer
* This function is a more convenient but less efficient version of \Ref{ucnv_toUnicode}.
* @param converter the Unicode converter
* @param source the source string in codepage encoding
* @param target the target string in Unicode encoding
* @param targetCapacity capacity of the target buffer
* @param sourceSize : Number of bytes in <TT>source</TT> to be transcoded
* @param err the error status code
* <TT>MEMORY_ALLOCATION_ERROR</TT> will be returned if the
* the internal process buffer cannot be allocated for transcoding.
* <TT>ILLEGAL_ARGUMENT_ERROR</TT> is returned if the converter is <TT>NULL</TT> or
* if the source or target string is empty.
* <TT>BUFFER_OVERFLOW_ERROR</TT> when the input buffer is prematurely exhausted and targetSize non-<TT>NULL</TT>.
* @return the number of UChar needed in target (including the zero terminator)
* @see ucnv_getNextUChar
* @see ucnv_toUnicode
* @see ucnv_convert
*/
U_CAPI
int32_t U_EXPORT2 ucnv_toUChars (const UConverter * converter,
UChar * target,
int32_t targetCapacity,
const char *source,
int32_t sourceSize,
UErrorCode * err);
/********************************
* Will convert a codepage buffer one character at a time.
* This function was written to be efficient when transcoding small amounts of data at a time.
* In that case it will be more efficient than \Ref{ucnv_toUnicode}.
* When converting large buffers use \Ref{ucnv_toUnicode}.
*@param converter an open UConverter
*@param source the address of a pointer to the codepage buffer, will be updated to point after
*the bytes consumed in the conversion call.
*@param points to the end of the input buffer
*@param err fills in error status (see ucnv_toUnicode)
*@return a UChar resulting from the partial conversion of source
*@see ucnv_toUnicode
*@see ucnv_toUChars
*@see ucnv_convert
*/
U_CAPI
UChar U_EXPORT2 ucnv_getNextUChar (UConverter * converter,
const char **source,
const char *sourceLimit,
UErrorCode * err);
/**************************
* Will convert a sequence of bytes from one codepage to another.
* This is <STRONG>NOT AN EFFICIENT</STRONG> way to transcode.
* use \Ref{ucnv_toUnicode} and \Ref{ucnv_fromUnicode} for efficiency
* @param toConverterName: The name of the converter that will be used to encode the output buffer
* @param fromConverterName: The name of the converter that will be used to decode the input buffer
* @param target: Pointer to the output buffer to write to
* @param targetCapacity: on input contains the capacity of target
* @param source: Pointer to the input buffer
* @param sourceLength: on input contains the capacity of source
* @param err: fills in an error status
* @return will be filled in with the number of bytes needed in target
* @see ucnv_fromUnicode
* @see ucnv_toUnicode
* @see ucnv_fromUChars
* @see ucnv_toUChars
* @see ucnv_getNextUChar
*/
U_CAPI
int32_t U_EXPORT2 ucnv_convert (const char *toConverterName,
const char *fromConverterName,
char *target,
int32_t targetCapacity,
const char *source,
int32_t sourceLength,
UErrorCode * err);
XERCES_CPP_NAMESPACE_END
#endif
#if (__OS400_TGTVRM__>=510) /* @01a */
#pragma datamodel(pop) /* @01a */
#endif /* @01a */
--- NEW FILE: utypes.h ---
/*
* 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: utypes.h,v 1.1 2008/02/19 20:16:30 zolmol Exp $
*/
#ifndef UTYPES_H
#define UTYPES_H
#include <wchar.h>
#include <stdlib.h>
/*===========================================================================*/
/* Include platform-dependent definitions */
/* which are contained in the platform-specific file platform.h */
/*===========================================================================*/
#include "pos400.h"
XERCES_CPP_NAMESPACE_BEGIN
/* XP_CPLUSPLUS is a cross-platform symbol which should be defined when
using C++. It should not be defined when compiling under C. */
#ifdef __cplusplus
# ifndef XP_CPLUSPLUS
# define XP_CPLUSPLUS
# endif
#else
# undef XP_CPLUSPLUS
#endif
/*===========================================================================*/
/* Boolean data type */
/*===========================================================================*/
#if ! HAVE_BOOL_T
typedef int8_t bool_t;
#endif
#ifndef TRUE
# define TRUE 1
#endif
#ifndef FALSE
# define FALSE 0
#endif
/*===========================================================================*/
/* Unicode string offset */
/*===========================================================================*/
typedef int32_t UTextOffset;
/*===========================================================================*/
/* Unicode character */
/*===========================================================================*/
typedef uint16_t UChar;
/*===========================================================================*/
/* For C wrappers, we use the symbol U_CAPI. */
/* This works properly if the includer is C or C++. */
/* Functions are declared U_CAPI return-type U_EXPORT2 function-name() ... */
/*===========================================================================*/
#ifdef XP_CPLUSPLUS
# define U_CFUNC extern "C"
# define U_CDECL_BEGIN extern "C" {
# define U_CDECL_END }
#else
# define U_CFUNC
# define U_CDECL_BEGIN
# define U_CDECL_END
#endif
#define U_CAPI U_CFUNC U_EXPORT
/* Define NULL pointer value if it isn't already defined */
#ifndef NULL
#ifdef XP_CPLUSPLUS
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
/* Maximum value of a (void*) - use to indicate the limit of
an 'infinite' buffer. */
#define U_MAX_PTR ((void*)-1)
/*===========================================================================*/
/* UErrorCode */
/*===========================================================================*/
/** Error code to replace exception handling */
#ifdef __OS400__
enum UErrorCode1 {
#else
enum UErrorCode {
#endif
U_ERROR_INFO_START = -128, /* Start of information results (semantically successful) */
U_USING_FALLBACK_ERROR = -128,
U_USING_DEFAULT_ERROR = -127,
U_ERROR_INFO_LIMIT,
U_ZERO_ERROR = 0, /* success */
U_ILLEGAL_ARGUMENT_ERROR = 1, /* Start of codes indicating failure */
U_MISSING_RESOURCE_ERROR = 2,
U_INVALID_FORMAT_ERROR = 3,
U_FILE_ACCESS_ERROR = 4,
U_INTERNAL_PROGRAM_ERROR = 5, /* Indicates a bug in the library code */
U_MESSAGE_PARSE_ERROR = 6,
U_MEMORY_ALLOCATION_ERROR = 7, /* Memory allocation error */
U_INDEX_OUTOFBOUNDS_ERROR = 8,
U_PARSE_ERROR = 9, /* Equivalent to Java ParseException */
U_INVALID_CHAR_FOUND = 10, /* In the Character conversion routines: Invalid character or sequence was encountered*/
U_TRUNCATED_CHAR_FOUND = 11, /* In the Character conversion routines: More bytes are required to complete the conversion successfully*/
U_ILLEGAL_CHAR_FOUND = 12, /* In codeset conversion: a sequence that does NOT belong in the codepage has been encountered*/
U_INVALID_TABLE_FORMAT = 13, /* Conversion table file found, but corrupted*/
U_INVALID_TABLE_FILE = 14, /* Conversion table file not found*/
U_BUFFER_OVERFLOW_ERROR = 15, /* A result would not fit in the supplied buffer */
U_UNSUPPORTED_ERROR = 16, /* Requested operation not supported in current context */
U_ERROR_LIMIT
};
#ifdef __OS400__
typedef int UErrorCode;
#define U_SUCCESS(x) ((x)<=U_ZERO_ERROR)
#define U_FAILURE(x) ((x)>U_ZERO_ERROR)
#else
#ifndef XP_CPLUSPLUS
typedef enum UErrorCode UErrorCode;
#endif
#endif
/* Use the following to determine if an UErrorCode represents */
/* operational success or failure. */
#ifndef __OS400__
#ifdef XP_CPLUSPLUS
inline bool_t U_SUCCESS(UErrorCode code) { return (bool_t)(code<=U_ZERO_ERROR); }
inline bool_t U_FAILURE(UErrorCode code) { return (bool_t)(code>U_ZERO_ERROR); }
#else
#define U_SUCCESS(x) ((x)<=U_ZERO_ERROR)
#define U_FAILURE(x) ((x)>U_ZERO_ERROR)
#endif
#endif
/* Casting function for int32_t (backward compatibility version, here until
T_INT32 is replaced) */
#define T_INT32(i) ((int32_t)i)
/*===========================================================================*/
/* Debugging */
/*===========================================================================*/
/* remove this */
/* This function is useful for debugging; it returns the text name */
/* of an UErrorCode result. This is not the most efficient way of */
/* doing this but it's just for Debug builds anyway. */
/* Do not use these arrays directly: they will move to a .c file! */
static const char *
_uErrorInfoName[U_ERROR_INFO_LIMIT-U_ERROR_INFO_START]={
"U_USING_FALLBACK_ERROR",
"U_USING_DEFAULT_ERROR"
};
static const char *
_uErrorName[U_ERROR_LIMIT]={
"U_ZERO_ERROR",
"U_ILLEGAL_ARGUMENT_ERROR",
"U_MISSING_RESOURCE_ERROR",
"U_INVALID_FORMAT_ERROR",
"U_FILE_ACCESS_ERROR",
"U_INTERNAL_PROGRAM_ERROR",
"U_MESSAGE_PARSE_ERROR",
"U_MEMORY_ALLOCATION_ERROR",
"U_INDEX_OUTOFBOUNDS_ERROR",
"U_PARSE_ERROR",
"U_INVALID_CHAR_FOUND",
"U_TRUNCATED_CHAR_FOUND",
"U_ILLEGAL_CHAR_FOUND",
"U_INVALID_TABLE_FORMAT",
"U_INVALID_TABLE_FILE",
"U_BUFFER_OVERFLOW_ERROR",
"U_UNSUPPORTED_ERROR"
};
#ifdef XP_CPLUSPLUS
inline const char *
errorName(UErrorCode code)
{
if(code>=0 && code<U_ERROR_LIMIT) {
return _uErrorName[code];
} else if(code>=U_ERROR_INFO_START && code<U_ERROR_INFO_LIMIT) {
return _uErrorInfoName[code-U_ERROR_INFO_START];
} else {
return "[BOGUS UErrorCode]";
}
}
#else
# define errorName(code) \
((code)>=0 && (code)<U_ERROR_LIMIT) ? \
_uErrorName[code] : \
((code)>=U_ERROR_INFO_START && (code)<U_ERROR_INFO_LIMIT) ? \
_uErrorInfoName[code-U_ERROR_INFO_START] : \
"[BOGUS UErrorCode]"
#endif
XERCES_CPP_NAMESPACE_END
#endif /* _UTYPES */
- Previous message: [GME-commit] GMESRC/GME/Include/xercesc/util/Transcoders/IconvFBSD IconvFBSDTransService.hpp, NONE, 1.1
- Next message: [GME-commit] GMESRC/GME/Include/xercesc/util/Transcoders/Uniconv390 Uniconv390TransService.hpp, NONE, 1.1 XML256TableTranscoder390.hpp, NONE, 1.1 XML88591Transcoder390.hpp, NONE, 1.1 XMLASCIITranscoder390.hpp, NONE, 1.1 XMLEBCDICTranscoder390.hpp, NONE, 1.1 XMLIBM1047Transcoder390.hpp, NONE, 1.1 XMLIBM1140Transcoder390.hpp, NONE, 1.1 XMLUTF8Transcoder390.hpp, NONE, 1.1 XMLWin1252Transcoder390.hpp, NONE, 1.1 ccsid.h, NONE, 1.1 uniconv.h, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the GME-commit
mailing list