From mboxrd@z Thu Jan 1 00:00:00 1970 From: Georg Wild To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: middle-end/4227 Date: Tue, 25 Sep 2001 10:56:00 -0000 Message-id: <20010925175601.9295.qmail@sourceware.cygnus.com> X-SW-Source: 2001-09/msg00489.html List-Id: The following reply was made to PR middle-end/4227; it has been noted by GNATS. From: Georg Wild To: Cc: Subject: Re: middle-end/4227 Date: Tue, 25 Sep 2001 19:53:22 +0200 (CEST) This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ------=_NextPart_000_0029_01C145FA.D57A7F00 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=4227&database=gcc Hello! I've seen that there's no real example for this bug! I got this error compiling openjava! I'll attach CodingSystemKit.ii! You'll get the bug compiling "c++ -O2 -c CodingSystemKit.ii", -O1 solves problem! ------=_NextPart_000_0029_01C145FA.D57A7F00 Content-Type: APPLICATION/OCTET-STREAM; NAME="CodingSystemKit.ii" Content-Transfer-Encoding: QUOTED-PRINTABLE Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME="CodingSystemKit.ii" # 1 "CodingSystemKit.cxx"=0A= # 1 ""=0A= # 1 ""=0A= # 1 "CodingSystemKit.cxx"=0A= =0A= =0A= =0A= =0A= #pragma implementation=0A= =0A= =0A= # 1 "splib.h" 1=0A= =0A= =0A= =0A= =0A= =0A= =0A= # 1 "../include/config.h" 1=0A= # 8 "splib.h" 2=0A= # 9 "CodingSystemKit.cxx" 2=0A= # 1 "../include/CodingSystemKit.h" 1=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= #pragma interface=0A= =0A= =0A= # 1 "../include/Boolean.h" 1=0A= # 13 "../include/Boolean.h"=0A= typedef bool Boolean;=0A= =0A= =0A= =0A= typedef char PackedBoolean;=0A= # 12 "../include/CodingSystemKit.h" 2=0A= # 1 "../include/StringC.h" 1=0A= =0A= =0A= =0A= =0A= =0A= =0A= # 1 "../include/types.h" 1=0A= =0A= =0A= =0A= =0A= =0A= =0A= # 1 "/usr/local/include/limits.h" 1 3=0A= # 26 "/usr/local/include/limits.h" 3=0A= # 1 "/usr/local/include/features.h" 1 3=0A= # 283 "/usr/local/include/features.h" 3=0A= # 1 "/usr/local/include/sys/cdefs.h" 1 3=0A= # 284 "/usr/local/include/features.h" 2 3=0A= # 312 "/usr/local/include/features.h" 3=0A= # 1 "/usr/local/include/gnu/stubs.h" 1 3=0A= # 313 "/usr/local/include/features.h" 2 3=0A= # 27 "/usr/local/include/limits.h" 2 3=0A= # 124 "/usr/local/include/limits.h" 3=0A= # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include/limits.h" 1 3=0A= # 125 "/usr/local/include/limits.h" 2 3=0A= # 144 "/usr/local/include/limits.h" 3=0A= # 1 "/usr/local/include/bits/posix1_lim.h" 1 3=0A= # 126 "/usr/local/include/bits/posix1_lim.h" 3=0A= # 1 "/usr/local/include/bits/local_lim.h" 1 3=0A= # 36 "/usr/local/include/bits/local_lim.h" 3=0A= # 1 "/usr/local/include/linux/limits.h" 1 3=0A= # 37 "/usr/local/include/bits/local_lim.h" 2 3=0A= # 127 "/usr/local/include/bits/posix1_lim.h" 2 3=0A= # 145 "/usr/local/include/limits.h" 2 3=0A= =0A= =0A= =0A= # 1 "/usr/local/include/bits/posix2_lim.h" 1 3=0A= # 149 "/usr/local/include/limits.h" 2 3=0A= =0A= =0A= =0A= # 1 "/usr/local/include/bits/xopen_lim.h" 1 3=0A= # 34 "/usr/local/include/bits/xopen_lim.h" 3=0A= # 1 "/usr/local/include/bits/stdio_lim.h" 1 3=0A= # 35 "/usr/local/include/bits/xopen_lim.h" 2 3=0A= # 153 "/usr/local/include/limits.h" 2 3=0A= # 8 "../include/types.h" 2=0A= # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include/stddef.h" 1 3=0A= # 147 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include/stddef.h" 3=0A= typedef int ptrdiff_t;=0A= # 201 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include/stddef.h" 3=0A= typedef unsigned int size_t;=0A= # 9 "../include/types.h" 2=0A= =0A= =0A= =0A= =0A= =0A= =0A= typedef unsigned int Unsigned32;=0A= =0A= =0A= =0A= =0A= =0A= typedef Unsigned32 Number;=0A= typedef Unsigned32 Offset;=0A= typedef Unsigned32 Index;=0A= =0A= =0A= =0A= =0A= =0A= =0A= typedef unsigned short Char;=0A= =0A= =0A= =0A= typedef int Xchar;=0A= # 47 "../include/types.h"=0A= typedef Unsigned32 UnivChar;=0A= typedef Unsigned32 WideChar;=0A= =0A= =0A= =0A= =0A= typedef Unsigned32 SyntaxChar;=0A= =0A= typedef unsigned short CharClassIndex;=0A= =0A= typedef unsigned Token;=0A= =0A= =0A= typedef unsigned short EquivCode;=0A= # 8 "../include/StringC.h" 2=0A= # 1 "../include/StringOf.h" 1=0A= # 14 "../include/StringOf.h"=0A= # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include/stddef.h" 1 3=0A= # 15 "../include/StringOf.h" 2=0A= # 1 "/usr/local/include/string.h" 1 3=0A= # 28 "/usr/local/include/string.h" 3=0A= extern "C" {=0A= =0A= =0A= =0A= =0A= # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include/stddef.h" 1 3=0A= # 34 "/usr/local/include/string.h" 2 3=0A= =0A= =0A= =0A= extern void *memcpy (void *__restrict __dest,=0A= __const void *__restrict __src, size_t __n) throw = ();=0A= =0A= =0A= extern void *memmove (void *__dest, __const void *__src, size_t __n)=0A= throw ();=0A= =0A= =0A= =0A= =0A= =0A= extern void *memccpy (void *__restrict __dest, __const void *__restrict = __src,=0A= int __c, size_t __n)=0A= throw ();=0A= =0A= =0A= =0A= =0A= extern void *memset (void *__s, int __c, size_t __n) throw ();=0A= =0A= =0A= extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)=0A= throw () __attribute__ ((__pure__));=0A= =0A= =0A= extern void *memchr (__const void *__s, int __c, size_t __n)=0A= throw () __attribute__ ((__pure__));=0A= =0A= =0A= =0A= =0A= extern void *rawmemchr (__const void *__s, int __c) throw () = __attribute__ ((__pure__));=0A= =0A= =0A= extern void *memrchr (__const void *__s, int __c, size_t __n)=0A= throw () __attribute__ ((__pure__));=0A= =0A= =0A= =0A= =0A= extern char *strcpy (char *__restrict __dest, __const char *__restrict = __src)=0A= throw ();=0A= =0A= extern char *strncpy (char *__restrict __dest,=0A= __const char *__restrict __src, size_t __n) throw = ();=0A= =0A= =0A= extern char *strcat (char *__restrict __dest, __const char *__restrict = __src)=0A= throw ();=0A= =0A= extern char *strncat (char *__restrict __dest, __const char *__restrict = __src,=0A= size_t __n) throw ();=0A= =0A= =0A= extern int strcmp (__const char *__s1, __const char *__s2)=0A= throw () __attribute__ ((__pure__));=0A= =0A= extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)=0A= throw () __attribute__ ((__pure__));=0A= =0A= =0A= extern int strcoll (__const char *__s1, __const char *__s2)=0A= throw () __attribute__ ((__pure__));=0A= =0A= extern size_t strxfrm (char *__restrict __dest,=0A= __const char *__restrict __src, size_t __n) throw = ();=0A= =0A= =0A= =0A= =0A= =0A= # 1 "/usr/local/include/xlocale.h" 1 3=0A= # 28 "/usr/local/include/xlocale.h" 3=0A= typedef struct __locale_struct=0A= {=0A= =0A= struct locale_data *__locales[13];=0A= =0A= =0A= const unsigned short int *__ctype_b;=0A= const int *__ctype_tolower;=0A= const int *__ctype_toupper;=0A= } *__locale_t;=0A= # 109 "/usr/local/include/string.h" 2 3=0A= =0A= =0A= extern int __strcoll_l (__const char *__s1, __const char *__s2, = __locale_t __l)=0A= throw () __attribute__ ((__pure__));=0A= =0A= extern size_t __strxfrm_l (char *__dest, __const char *__src, size_t __n,=0A= __locale_t __l) throw ();=0A= =0A= =0A= =0A= =0A= extern char *strdup (__const char *__s) throw () __attribute__ = ((__malloc__));=0A= =0A= =0A= =0A= =0A= =0A= =0A= extern char *strndup (__const char *__string, size_t __n)=0A= throw () __attribute__ ((__malloc__));=0A= # 155 "/usr/local/include/string.h" 3=0A= extern char *strchr (__const char *__s, int __c) throw () __attribute__ = ((__pure__));=0A= =0A= extern char *strrchr (__const char *__s, int __c) throw () __attribute__ = ((__pure__));=0A= =0A= =0A= =0A= =0A= extern char *strchrnul (__const char *__s, int __c) throw () = __attribute__ ((__pure__));=0A= =0A= =0A= =0A= =0A= extern size_t strcspn (__const char *__s, __const char *__reject)=0A= throw () __attribute__ ((__pure__));=0A= =0A= =0A= extern size_t strspn (__const char *__s, __const char *__accept)=0A= throw () __attribute__ ((__pure__));=0A= =0A= extern char *strpbrk (__const char *__s, __const char *__accept)=0A= throw () __attribute__ ((__pure__));=0A= =0A= extern char *strstr (__const char *__haystack, __const char *__needle)=0A= throw () __attribute__ ((__pure__));=0A= =0A= =0A= =0A= extern char *strcasestr (__const char *__haystack, __const char = *__needle)=0A= throw () __attribute__ ((__pure__));=0A= =0A= =0A= =0A= extern char *strtok (char *__restrict __s, __const char *__restrict = __delim)=0A= throw ();=0A= =0A= =0A= =0A= extern char *__strtok_r (char *__restrict __s,=0A= __const char *__restrict __delim,=0A= char **__restrict __save_ptr) throw ();=0A= =0A= extern char *strtok_r (char *__restrict __s, __const char *__restrict = __delim,=0A= char **__restrict __save_ptr) throw ();=0A= =0A= =0A= =0A= =0A= =0A= =0A= extern void *memmem (__const void *__haystack, size_t __haystacklen,=0A= __const void *__needle, size_t __needlelen)=0A= throw () __attribute__ ((__pure__));=0A= =0A= =0A= =0A= extern void *__mempcpy (void *__restrict __dest,=0A= __const void *__restrict __src, size_t __n) = throw ();=0A= extern void *mempcpy (void *__restrict __dest,=0A= __const void *__restrict __src, size_t __n) throw = ();=0A= =0A= =0A= =0A= =0A= extern size_t strlen (__const char *__s) throw () __attribute__ = ((__pure__));=0A= =0A= =0A= =0A= =0A= extern size_t strnlen (__const char *__string, size_t __maxlen)=0A= throw () __attribute__ ((__pure__));=0A= =0A= =0A= =0A= =0A= extern char *strerror (int __errnum) throw ();=0A= =0A= =0A= =0A= extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) = throw ();=0A= =0A= =0A= =0A= =0A= extern void __bzero (void *__s, size_t __n) throw ();=0A= =0A= =0A= =0A= extern void bcopy (__const void *__src, void *__dest, size_t __n) throw = ();=0A= =0A= =0A= extern void bzero (void *__s, size_t __n) throw ();=0A= =0A= =0A= extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)=0A= throw () __attribute__ ((__pure__));=0A= =0A= =0A= extern char *index (__const char *__s, int __c) throw () __attribute__ = ((__pure__));=0A= =0A= =0A= extern char *rindex (__const char *__s, int __c) throw () __attribute__ = ((__pure__));=0A= =0A= =0A= =0A= extern int ffs (int __i) throw () __attribute__ ((__const__));=0A= =0A= =0A= =0A= =0A= extern int ffsl (long int __l) throw () __attribute__ ((__const__));=0A= =0A= __extension__ extern int ffsll (long long int __ll)=0A= throw () __attribute__ ((__const__));=0A= =0A= =0A= =0A= =0A= extern int strcasecmp (__const char *__s1, __const char *__s2)=0A= throw () __attribute__ ((__pure__));=0A= =0A= =0A= extern int strncasecmp (__const char *__s1, __const char *__s2, size_t = __n)=0A= throw () __attribute__ ((__pure__));=0A= =0A= =0A= =0A= =0A= =0A= extern int __strcasecmp_l (__const char *__s1, __const char *__s2,=0A= __locale_t __loc) throw () __attribute__ = ((__pure__));=0A= =0A= extern int __strncasecmp_l (__const char *__s1, __const char *__s2,=0A= size_t __n, __locale_t __loc)=0A= throw () __attribute__ ((__pure__));=0A= =0A= =0A= =0A= =0A= =0A= extern char *strsep (char **__restrict __stringp,=0A= __const char *__restrict __delim) throw ();=0A= =0A= =0A= =0A= =0A= extern int strverscmp (__const char *__s1, __const char *__s2)=0A= throw () __attribute__ ((__pure__));=0A= =0A= =0A= extern char *strsignal (int __sig) throw ();=0A= =0A= =0A= extern char *__stpcpy (char *__restrict __dest, __const char *__restrict = __src)=0A= throw ();=0A= extern char *stpcpy (char *__restrict __dest, __const char *__restrict = __src)=0A= throw ();=0A= =0A= =0A= =0A= extern char *__stpncpy (char *__restrict __dest,=0A= __const char *__restrict __src, size_t __n) = throw ();=0A= extern char *stpncpy (char *__restrict __dest,=0A= __const char *__restrict __src, size_t __n) throw = ();=0A= =0A= =0A= extern char *strfry (char *__string) throw ();=0A= =0A= =0A= extern void *memfrob (void *__s, size_t __n) throw ();=0A= =0A= =0A= =0A= =0A= =0A= =0A= extern char *basename (__const char *__filename) throw ();=0A= # 364 "/usr/local/include/string.h" 3=0A= }=0A= # 16 "../include/StringOf.h" 2=0A= =0A= =0A= =0A= =0A= =0A= =0A= template=0A= class String {=0A= public:=0A= typedef size_t size_type;=0A= typedef T *iterator;=0A= typedef const T *const_iterator;=0A= String();=0A= ~String() { if (ptr_) delete [] ptr_; }=0A= String(const T *, size_t);=0A= String(const String &);=0A= String &operator=3D(const String &);=0A= size_t size() const { return length_; }=0A= String &assign(const T *, size_t);=0A= String &insert(size_t i, const String &s);=0A= void swap(String &str);=0A= T operator[](size_t i) const { return ptr_[i]; }=0A= T &operator[](size_t i) { return ptr_[i]; }=0A= iterator begin() { return ptr_; }=0A= const_iterator begin() const { return ptr_; }=0A= const T *data() const { return ptr_; }=0A= String &operator+=3D(T c) {=0A= if (length_ >=3D alloc_)=0A= grow(1);=0A= ptr_[length_++] =3D c;=0A= return *this;=0A= }=0A= String &operator+=3D(const String &s) {=0A= append(s.ptr_, s.length_);=0A= return *this;=0A= }=0A= String &append(const T *, size_t);=0A= Boolean operator=3D=3D(const String &s) const {=0A= return (length_ =3D=3D s.length_=0A= && (length_ =3D=3D 0=0A= || (*ptr_ =3D=3D *s.ptr_=0A= && (memcmp(ptr_ + 1, s.ptr_ + 1, (length_ - = 1)*sizeof(T))=0A= =3D=3D 0))));=0A= }=0A= Boolean operator!=3D(const String &str) const {=0A= return !(*this =3D=3D str);=0A= }=0A= void resize(size_t n);=0A= private:=0A= void grow(size_t);=0A= T *ptr_;=0A= size_t length_;=0A= size_t alloc_;=0A= };=0A= # 9 "../include/StringC.h" 2=0A= =0A= =0A= =0A= =0A= =0A= typedef String StringC;=0A= # 13 "../include/CodingSystemKit.h" 2=0A= # 1 "../include/CodingSystem.h" 1=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= #pragma interface=0A= =0A= =0A= =0A= =0A= =0A= # 1 "../include/OutputByteStream.h" 1=0A= =0A= =0A= =0A= =0A= =0A= =0A= # 1 "../include/StringOf.h" 1=0A= # 8 "../include/OutputByteStream.h" 2=0A= =0A= =0A= =0A= =0A= =0A= =0A= class OutputByteStream {=0A= public:=0A= OutputByteStream();=0A= virtual ~OutputByteStream();=0A= virtual void flush() =3D 0;=0A= void sputc(char c);=0A= void sputn(const char *, size_t);=0A= OutputByteStream &operator<<(char);=0A= OutputByteStream &operator<<(unsigned char);=0A= OutputByteStream &operator<<(const char *);=0A= OutputByteStream &operator<<(int);=0A= OutputByteStream &operator<<(unsigned);=0A= OutputByteStream &operator<<(long);=0A= OutputByteStream &operator<<(unsigned long);=0A= OutputByteStream &operator<<(const String &);=0A= char *getBufferPtr() const;=0A= size_t getBufferSize() const;=0A= void usedBuffer(size_t);=0A= virtual void flushBuf(char) =3D 0;=0A= protected:=0A= char *ptr_;=0A= char *end_;=0A= };=0A= =0A= inline=0A= char *OutputByteStream::getBufferPtr() const=0A= {=0A= return ptr_;=0A= }=0A= =0A= inline=0A= size_t OutputByteStream::getBufferSize() const=0A= {=0A= return end_ - ptr_;=0A= }=0A= =0A= inline=0A= void OutputByteStream::usedBuffer(size_t n)=0A= {=0A= ptr_ +=3D n;=0A= }=0A= =0A= inline=0A= void OutputByteStream::sputc(char c)=0A= {=0A= if (ptr_ < end_)=0A= *ptr_++ =3D c;=0A= else=0A= flushBuf(c);=0A= }=0A= =0A= inline=0A= OutputByteStream &OutputByteStream::operator<<(char c)=0A= {=0A= sputc(c);=0A= return *this;=0A= }=0A= =0A= inline=0A= OutputByteStream &OutputByteStream::operator<<(unsigned char c)=0A= {=0A= sputc(char(c));=0A= return *this;=0A= }=0A= =0A= inline=0A= OutputByteStream &OutputByteStream::operator<<(int n)=0A= {=0A= return *this << long(n);=0A= }=0A= =0A= inline=0A= OutputByteStream &OutputByteStream::operator<<(unsigned n)=0A= {=0A= return *this << (unsigned long)n;=0A= }=0A= =0A= inline=0A= OutputByteStream &OutputByteStream::operator<<(const String &s)=0A= {=0A= sputn(s.data(), s.size());=0A= return *this;=0A= }=0A= =0A= class StrOutputByteStream : public OutputByteStream {=0A= public:=0A= StrOutputByteStream();=0A= void extractString(String &);=0A= protected:=0A= StrOutputByteStream(const StrOutputByteStream &);=0A= void operator=3D(const StrOutputByteStream &);=0A= void flush();=0A= void flushBuf(char);=0A= String buf_;=0A= };=0A= =0A= class FileOutputByteStream : public OutputByteStream {=0A= public:=0A= FileOutputByteStream();=0A= FileOutputByteStream(int fd, Boolean closeFd =3D 1);=0A= ~FileOutputByteStream();=0A= =0A= =0A= =0A= Boolean open(const char *);=0A= =0A= Boolean attach(int fd, Boolean closeFd =3D 1);=0A= Boolean close();=0A= private:=0A= FileOutputByteStream(const FileOutputByteStream &);=0A= void operator=3D(const FileOutputByteStream &);=0A= void flush();=0A= void flushBuf(char);=0A= String buf_;=0A= int fd_;=0A= Boolean closeFd_;=0A= };=0A= # 15 "../include/CodingSystem.h" 2=0A= =0A= # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include/stddef.h" 1 3=0A= # 17 "../include/CodingSystem.h" 2=0A= =0A= =0A= =0A= =0A= =0A= =0A= class Decoder {=0A= public:=0A= Decoder(unsigned minBytesPerChar =3D 1);=0A= virtual ~Decoder();=0A= virtual size_t decode(Char *, const char *, size_t, const char **) =3D = 0;=0A= virtual Boolean convertOffset(unsigned long &offset) const;=0A= =0A= =0A= unsigned minBytesPerChar() const;=0A= protected:=0A= unsigned minBytesPerChar_;=0A= };=0A= =0A= =0A= class Encoder {=0A= public:=0A= class Handler {=0A= public:=0A= virtual void handleUnencodable(Char, OutputByteStream *) =3D 0;=0A= };=0A= Encoder();=0A= virtual ~Encoder();=0A= virtual void output(const Char *, size_t, OutputByteStream *) =3D 0;=0A= =0A= virtual void startFile(OutputByteStream *);=0A= virtual void output(Char *, size_t, OutputByteStream *);=0A= virtual void setUnencodableHandler(Handler *);=0A= virtual void handleUnencodable(Char, OutputByteStream *);=0A= };=0A= =0A= class RecoveringEncoder : public Encoder {=0A= public:=0A= RecoveringEncoder();=0A= void setUnencodableHandler(Handler *);=0A= void handleUnencodable(Char, OutputByteStream *);=0A= private:=0A= Handler *unencodableHandler_;=0A= };=0A= =0A= class InputCodingSystem {=0A= public:=0A= virtual ~InputCodingSystem();=0A= virtual Decoder *makeDecoder() const =3D 0;=0A= StringC convertIn(const char *) const;=0A= virtual Boolean isIdentity() const;=0A= };=0A= =0A= class OutputCodingSystem {=0A= public:=0A= virtual ~OutputCodingSystem();=0A= virtual Encoder *makeEncoder() const =3D 0;=0A= virtual unsigned fixedBytesPerChar() const;=0A= String convertOut(const StringC &) const;=0A= };=0A= =0A= class CodingSystem : public InputCodingSystem, public OutputCodingSystem = {=0A= };=0A= =0A= inline=0A= unsigned Decoder::minBytesPerChar() const=0A= {=0A= return minBytesPerChar_;=0A= }=0A= # 14 "../include/CodingSystemKit.h" 2=0A= # 1 "../include/Resource.h" 1=0A= # 11 "../include/Resource.h"=0A= class Resource {=0A= public:=0A= Resource();=0A= Resource(const Resource &);=0A= int unref();=0A= void ref();=0A= int count() const;=0A= private:=0A= int count_;=0A= };=0A= =0A= inline=0A= Resource::Resource()=0A= : count_(0)=0A= {=0A= }=0A= =0A= inline=0A= Resource::Resource(const Resource &)=0A= : count_(0)=0A= {=0A= }=0A= =0A= inline=0A= int Resource::count() const=0A= {=0A= return count_;=0A= }=0A= =0A= inline=0A= int Resource::unref()=0A= {=0A= return --count_ <=3D 0;=0A= }=0A= =0A= inline=0A= void Resource::ref()=0A= {=0A= ++count_;=0A= }=0A= # 15 "../include/CodingSystemKit.h" 2=0A= # 1 "../include/CharsetInfo.h" 1=0A= =0A= =0A= =0A= =0A= =0A= =0A= #pragma interface=0A= =0A= =0A= # 1 "/usr/local/include/limits.h" 1 3=0A= # 11 "../include/CharsetInfo.h" 2=0A= # 1 "../include/UnivCharsetDesc.h" 1=0A= =0A= =0A= =0A= =0A= =0A= =0A= #pragma interface=0A= =0A= =0A= # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include/stddef.h" 1 3=0A= # 11 "../include/UnivCharsetDesc.h" 2=0A= =0A= # 1 "../include/CharMap.h" 1=0A= # 16 "../include/CharMap.h"=0A= class CharMapBits {=0A= public:=0A= enum { level1 =3D 8, level2 =3D 4, level3 =3D 4 };=0A= };=0A= =0A= template=0A= class CharMapColumn {=0A= public:=0A= CharMapColumn();=0A= CharMapColumn(const CharMapColumn &);=0A= void operator=3D(const CharMapColumn &);=0A= ~CharMapColumn();=0A= T *values;=0A= T value;=0A= };=0A= =0A= template=0A= class CharMapPage {=0A= public:=0A= CharMapPage();=0A= CharMapPage(const CharMapPage &);=0A= void operator=3D(const CharMapPage &);=0A= ~CharMapPage();=0A= void swap(CharMapPage &);=0A= CharMapColumn *values;=0A= T value;=0A= };=0A= =0A= =0A= template=0A= class CharMap {=0A= public:=0A= CharMap();=0A= CharMap(T);=0A= T operator[](Char) const;=0A= T getRange(Char from, Char &to) const;=0A= void swap(CharMap &);=0A= void setChar(Char, T);=0A= void setRange(Char from, Char to, T val);=0A= void setAll(T);=0A= private:=0A= =0A= CharMapPage pages_[1 << CharMapBits::level1];=0A= =0A= =0A= =0A= };=0A= =0A= template=0A= class CharMapResource : public CharMap, public Resource {=0A= public:=0A= CharMapResource() { }=0A= CharMapResource(T t) : CharMap(t) { }=0A= };=0A= =0A= =0A= =0A= template=0A= inline=0A= T CharMap::operator[](Char c) const=0A= {=0A= const CharMapPage &pg =3D pages_[c >> (CharMapBits::level2 + = CharMapBits::level3)];=0A= if (pg.values) {=0A= const CharMapColumn &column =3D pg.values[(c >> = CharMapBits::level3) & ((1 << CharMapBits::level2) - 1)];=0A= if (column.values)=0A= return column.values[c & ((1 << CharMapBits::level3) - 1)];=0A= else=0A= return column.value;=0A= }=0A= else=0A= return pg.value;=0A= }=0A= =0A= template=0A= inline=0A= T CharMap::getRange(Char c, Char &max) const=0A= {=0A= const CharMapPage &pg =3D pages_[c >> (CharMapBits::level2 + = CharMapBits::level3)];=0A= if (pg.values) {=0A= const CharMapColumn &column =3D pg.values[(c >> = CharMapBits::level3) & ((1 << CharMapBits::level2) - 1)];=0A= if (column.values) {=0A= max =3D c;=0A= return column.values[c & ((1 << CharMapBits::level3) - 1)];=0A= }=0A= else {=0A= max =3D (c & ~((1 << CharMapBits::level3) - 1)) + ((1 << = CharMapBits::level3) - 1);=0A= return column.value;=0A= }=0A= }=0A= else {=0A= max =3D (c & ~((1 << (CharMapBits::level2 + CharMapBits::level3)) - = 1)) + ((1 << (CharMapBits::level2 + CharMapBits::level2)) - 1);=0A= return pg.value;=0A= }=0A= }=0A= # 13 "../include/UnivCharsetDesc.h" 2=0A= # 1 "../include/RangeMap.h" 1=0A= =0A= =0A= =0A= =0A= =0A= =0A= # 1 "../include/Vector.h" 1=0A= =0A= =0A= =0A= =0A= =0A= =0A= # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include/stddef.h" 1 3=0A= # 8 "../include/Vector.h" 2=0A= # 1 "../include/xnew.h" 1=0A= # 20 "../include/xnew.h"=0A= # 1 "/usr/local/include/g++-v3/new" 1 3=0A= # 40 "/usr/local/include/g++-v3/new" 3=0A= # 1 "/usr/local/include/g++-v3/cstddef" 1 3=0A= # 31 "/usr/local/include/g++-v3/cstddef" 3=0A= # 1 "/usr/local/include/g++-v3/bits/std_cstddef.h" 1 3=0A= # 38 "/usr/local/include/g++-v3/bits/std_cstddef.h" 3=0A= # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include/stddef.h" 1 3=0A= # 39 "/usr/local/include/g++-v3/bits/std_cstddef.h" 2 3=0A= =0A= namespace std=0A= {=0A= using ::ptrdiff_t;=0A= using ::size_t;=0A= }=0A= # 32 "/usr/local/include/g++-v3/cstddef" 2 3=0A= # 41 "/usr/local/include/g++-v3/new" 2 3=0A= # 1 "/usr/local/include/g++-v3/exception" 1 3=0A= # 39 "/usr/local/include/g++-v3/exception" 3=0A= extern "C++" {=0A= =0A= namespace std=0A= {=0A= =0A= =0A= =0A= =0A= =0A= =0A= class exception=0A= {=0A= public:=0A= exception() throw() { }=0A= virtual ~exception() throw();=0A= =0A= =0A= virtual const char* what() const throw();=0A= };=0A= =0A= =0A= =0A= class bad_exception : public exception=0A= {=0A= public:=0A= bad_exception() throw() { }=0A= virtual ~bad_exception() throw();=0A= };=0A= =0A= =0A= typedef void (*terminate_handler) ();=0A= =0A= typedef void (*unexpected_handler) ();=0A= =0A= =0A= terminate_handler set_terminate(terminate_handler) throw();=0A= =0A= =0A= void terminate() __attribute__ ((__noreturn__));=0A= =0A= =0A= unexpected_handler set_unexpected(unexpected_handler) throw();=0A= =0A= =0A= void unexpected() __attribute__ ((__noreturn__));=0A= # 95 "/usr/local/include/g++-v3/exception" 3=0A= bool uncaught_exception() throw();=0A= }=0A= =0A= }=0A= # 42 "/usr/local/include/g++-v3/new" 2 3=0A= =0A= extern "C++" {=0A= =0A= namespace std=0A= {=0A= =0A= =0A= class bad_alloc : public exception=0A= {=0A= public:=0A= bad_alloc() throw() { }=0A= virtual ~bad_alloc() throw();=0A= };=0A= =0A= struct nothrow_t { };=0A= extern const nothrow_t nothrow;=0A= =0A= =0A= typedef void (*new_handler)();=0A= =0A= new_handler set_new_handler(new_handler);=0A= }=0A= # 76 "/usr/local/include/g++-v3/new" 3=0A= void *operator new(std::size_t) throw (std::bad_alloc);=0A= void *operator new[](std::size_t) throw (std::bad_alloc);=0A= void operator delete(void *) throw();=0A= void operator delete[](void *) throw();=0A= void *operator new(std::size_t, const std::nothrow_t&) throw();=0A= void *operator new[](std::size_t, const std::nothrow_t&) throw();=0A= void operator delete(void *, const std::nothrow_t&) throw();=0A= void operator delete[](void *, const std::nothrow_t&) throw();=0A= =0A= =0A= inline void *operator new(std::size_t, void *place) throw() { return = place; }=0A= inline void *operator new[](std::size_t, void *place) throw() { return = place; }=0A= =0A= }=0A= # 21 "../include/xnew.h" 2=0A= # 9 "../include/Vector.h" 2=0A= # 18 "../include/Vector.h"=0A= template=0A= class Vector {=0A= public:=0A= typedef size_t size_type;=0A= typedef T *iterator;=0A= typedef const T *const_iterator;=0A= Vector() : ptr_(0), size_(0), alloc_(0) { }=0A= Vector(size_t n) : ptr_(0), size_(0), alloc_(0) { append(n); }=0A= ~Vector();=0A= void resize(size_t n) {=0A= if (n < size_)=0A= erase(ptr_ + n, ptr_ + size_);=0A= else if (n > size_)=0A= append(n - size_);=0A= }=0A= =0A= Vector(size_t, const T &);=0A= Vector(const Vector &);=0A= Vector &operator=3D(const Vector &);=0A= void assign(size_t, const T &);=0A= void push_back(const T &t) {=0A= reserve(size_ + 1);=0A= (void)new (ptr_ + size_) T(t);=0A= size_++;=0A= }=0A= void insert(const_iterator p, size_t n, const T &t);=0A= void insert(const_iterator p, const_iterator q1, const_iterator q2);=0A= =0A= void swap(Vector &);=0A= void clear() { erase(ptr_, ptr_ + size_); }=0A= size_t size() const { return size_; }=0A= T &operator[](size_t i) { return ptr_[i]; }=0A= const T &operator[](size_t i) const { return ptr_[i]; }=0A= iterator begin() { return ptr_; }=0A= const_iterator begin() const { return ptr_; }=0A= T &back() { return ptr_[size_ - 1]; }=0A= const T &back() const { return ptr_[size_ - 1]; }=0A= void reserve(size_t n) { if (n > alloc_) reserve1(n); }=0A= iterator erase(const_iterator, const_iterator);=0A= private:=0A= =0A= =0A= =0A= =0A= void append(size_t);=0A= void reserve1(size_t);=0A= =0A= size_t size_;=0A= T *ptr_;=0A= size_t alloc_;=0A= };=0A= # 8 "../include/RangeMap.h" 2=0A= =0A= # 1 "../include/ISet.h" 1=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include/stddef.h" 1 3=0A= # 9 "../include/ISet.h" 2=0A= # 1 "../include/Vector.h" 1=0A= # 10 "../include/ISet.h" 2=0A= =0A= =0A= =0A= =0A= =0A= =0A= template class ISetIter;=0A= =0A= template=0A= struct ISetRange {=0A= T min;=0A= T max;=0A= };=0A= =0A= template=0A= class ISet {=0A= public:=0A= ISet();=0A= ISet(const T *, size_t);=0A= ~ISet();=0A= Boolean contains(T) const;=0A= void remove(T);=0A= void add(T x) { addRange(x, x); }=0A= void addRange(T, T);=0A= =0A= =0A= =0A= void check();=0A= void operator+=3D(T x) { addRange(x, x); }=0A= void clear();=0A= Boolean isSingleton() const {=0A= return r_.size() =3D=3D 1 && r_[0].min =3D=3D r_[0].max;=0A= }=0A= Boolean isEmpty() const { return r_.size() =3D=3D 0; }=0A= void swap(ISet &x) { r_.swap(x.r_); }=0A= friend class ISetIter;=0A= private:=0A= Vector > r_;=0A= };=0A= # 10 "../include/RangeMap.h" 2=0A= =0A= # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include/stddef.h" 1 3=0A= # 12 "../include/RangeMap.h" 2=0A= =0A= =0A= =0A= =0A= =0A= template=0A= struct RangeMapRange {=0A= From fromMin;=0A= From fromMax;=0A= To toMin;=0A= };=0A= =0A= template class RangeMapIter;=0A= =0A= template=0A= class RangeMap {=0A= public:=0A= RangeMap();=0A= Boolean map(From, To &, From &alsoMax) const;=0A= =0A= unsigned inverseMap(To, From &, ISet &, WideChar &count) = const;=0A= void addRange(From, From, To);=0A= private:=0A= Vector > ranges_;=0A= friend class RangeMapIter;=0A= };=0A= =0A= template=0A= class RangeMapIter {=0A= public:=0A= RangeMapIter(const RangeMap &map);=0A= Boolean next(From &fromMin, From &fromMax, To &toMin) {=0A= if (!count_)=0A= return 0;=0A= else {=0A= fromMin =3D ptr_->fromMin;=0A= fromMax =3D ptr_->fromMax;=0A= toMin =3D ptr_->toMin;=0A= ptr_++;=0A= count_--;=0A= return 1;=0A= }=0A= }=0A= private:=0A= size_t count_;=0A= Vector >::const_iterator ptr_;=0A= };=0A= # 14 "../include/UnivCharsetDesc.h" 2=0A= =0A= # 1 "../include/ISet.h" 1=0A= # 16 "../include/UnivCharsetDesc.h" 2=0A= # 1 "../include/constant.h" 1=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= const Char charMax =3D Char(-1);=0A= const WideChar wideCharMax =3D WideChar(-1);=0A= const UnivChar univCharMax =3D UnivChar(-1);=0A= const SyntaxChar syntaxCharMax =3D SyntaxChar(-1);=0A= # 17 "../include/UnivCharsetDesc.h" 2=0A= =0A= =0A= =0A= =0A= =0A= class UnivCharsetDesc {=0A= public:=0A= struct Range {=0A= WideChar descMin;=0A= =0A= =0A= unsigned long count;=0A= UnivChar univMin;=0A= };=0A= enum {=0A= zero =3D 48,=0A= A =3D 65,=0A= a =3D 97,=0A= tab =3D 9,=0A= rs =3D 10,=0A= re =3D 13,=0A= space =3D 32,=0A= exclamation =3D 33,=0A= lessThan =3D 60,=0A= greaterThan =3D 62=0A= };=0A= UnivCharsetDesc();=0A= UnivCharsetDesc(const Range *, size_t);=0A= void set(const Range *, size_t);=0A= Boolean descToUniv(WideChar from, UnivChar &to) const;=0A= Boolean descToUniv(WideChar from, UnivChar &to, WideChar &alsoMax) = const;=0A= =0A= unsigned univToDesc(UnivChar from, WideChar &to, ISet &toSet)=0A= const;=0A= unsigned univToDesc(UnivChar from, WideChar &to, ISet &toSet,=0A= WideChar &count)=0A= const;=0A= void addRange(WideChar descMin, WideChar descMax, UnivChar univMin);=0A= void addBaseRange(const UnivCharsetDesc &baseSet,=0A= WideChar descMin,=0A= WideChar descMax,=0A= WideChar baseMin,=0A= ISet &baseMissing);=0A= private:=0A= static Boolean noDesc(Unsigned32 n) {=0A= return (n & (unsigned(1) << 31));=0A= }=0A= static UnivChar extractChar(Unsigned32 n, Char ch) {=0A= return UnivChar((n + ch) & ((unsigned(1) << 31) - 1));=0A= }=0A= static Unsigned32 wrapChar(UnivChar univ, Char ch) {=0A= return Unsigned32((univ - ch) & ((unsigned(1) << 31) - 1));=0A= }=0A= =0A= CharMap charMap_;=0A= =0A= RangeMap rangeMap_;=0A= friend class UnivCharsetDescIter;=0A= };=0A= =0A= class UnivCharsetDescIter {=0A= public:=0A= UnivCharsetDescIter(const UnivCharsetDesc &);=0A= Boolean next(WideChar &descMin, WideChar &descMax, UnivChar &univMin);=0A= void skipTo(WideChar);=0A= private:=0A= const CharMap *charMap_;=0A= Char nextChar_;=0A= Boolean doneCharMap_;=0A= RangeMapIter rangeMapIter_;=0A= };=0A= =0A= inline=0A= Boolean UnivCharsetDesc::descToUniv(WideChar from, UnivChar &to) const=0A= {=0A= if (from > charMax) {=0A= WideChar tem;=0A= return rangeMap_.map(from, to, tem);=0A= }=0A= else {=0A= Unsigned32 tem =3D charMap_[from];=0A= if (noDesc(tem))=0A= return 0;=0A= else {=0A= to =3D extractChar(tem, from);=0A= return 1;=0A= }=0A= }=0A= }=0A= =0A= inline=0A= Boolean UnivCharsetDesc::descToUniv(WideChar from, UnivChar &to,=0A= WideChar &alsoMax) const=0A= {=0A= if (from > charMax)=0A= return rangeMap_.map(from, to, alsoMax);=0A= else {=0A= Char max;=0A= Unsigned32 tem =3D charMap_.getRange(from, max);=0A= alsoMax =3D max;=0A= if (noDesc(tem))=0A= return 0;=0A= else {=0A= to =3D extractChar(tem, from);=0A= return 1;=0A= }=0A= }=0A= }=0A= =0A= inline=0A= unsigned UnivCharsetDesc::univToDesc(UnivChar from, WideChar &to,=0A= ISet &toSet) const=0A= {=0A= WideChar tem;=0A= return univToDesc(from, to, toSet, tem);=0A= }=0A= =0A= inline=0A= void UnivCharsetDescIter::skipTo(WideChar ch)=0A= {=0A= if (ch > charMax)=0A= doneCharMap_ =3D 1;=0A= else=0A= nextChar_ =3D ch;=0A= }=0A= # 12 "../include/CharsetInfo.h" 2=0A= =0A= =0A= =0A= # 1 "../include/ISet.h" 1=0A= # 16 "../include/CharsetInfo.h" 2=0A= # 1 "../include/CharMap.h" 1=0A= # 17 "../include/CharsetInfo.h" 2=0A= =0A= =0A= =0A= =0A= =0A= class CharsetInfo {=0A= public:=0A= CharsetInfo();=0A= CharsetInfo(const UnivCharsetDesc &);=0A= void set(const UnivCharsetDesc &);=0A= =0A= =0A= =0A= Char execToDesc(char) const;=0A= StringC execToDesc(const char *s) const;=0A= Boolean descToUniv(WideChar from, UnivChar &to) const;=0A= Boolean descToUniv(WideChar from, UnivChar &to, WideChar &alsoMax) = const;=0A= =0A= =0A= =0A= unsigned univToDesc(UnivChar from, WideChar &to, ISet &toSet)=0A= const;=0A= unsigned univToDesc(UnivChar from, WideChar &to, ISet &toSet,=0A= WideChar &count)=0A= const;=0A= void getDescSet(ISet &) const;=0A= int digitWeight(Char) const;=0A= int hexDigitWeight(Char) const;=0A= const UnivCharsetDesc &desc() const;=0A= private:=0A= void init();=0A= UnivCharsetDesc desc_;=0A= CharMap inverse_;=0A= Char execToDesc_[255 + 1];=0A= };=0A= =0A= inline=0A= unsigned CharsetInfo::univToDesc(UnivChar from, WideChar &to,=0A= ISet &toSet)=0A= const=0A= {=0A= if (from <=3D Char(-1)) {=0A= Unsigned32 n =3D inverse_[from];=0A= if (n =3D=3D Unsigned32(-1))=0A= return 0;=0A= if (n !=3D Unsigned32(-2)) {=0A= to =3D ((n + from) & ((Unsigned32(1) << 31) - 1));=0A= return 1;=0A= }=0A= }=0A= return desc_.univToDesc(from, to, toSet);=0A= }=0A= =0A= inline=0A= unsigned CharsetInfo::univToDesc(UnivChar from, WideChar &to,=0A= ISet &toSet, WideChar &count)=0A= const=0A= {=0A= if (from <=3D Char(-1)) {=0A= Char fromMax;=0A= Unsigned32 n =3D inverse_.getRange(from, fromMax);=0A= if (n =3D=3D Unsigned32(-1)) {=0A= count =3D (fromMax - from) + 1;=0A= return 0;=0A= }=0A= if (n !=3D Unsigned32(-2)) {=0A= to =3D ((n + from) & ((Unsigned32(1) << 31) - 1));=0A= count =3D (fromMax - from) + 1;=0A= return 1;=0A= }=0A= }=0A= return desc_.univToDesc(from, to, toSet, count);=0A= }=0A= =0A= inline=0A= Boolean CharsetInfo::descToUniv(UnivChar from, WideChar &to) const=0A= {=0A= return desc_.descToUniv(from, to);=0A= }=0A= =0A= inline=0A= Char CharsetInfo::execToDesc(char c) const=0A= {=0A= return execToDesc_[(unsigned char)c];=0A= }=0A= =0A= inline=0A= Boolean CharsetInfo::descToUniv(WideChar from, UnivChar &to,=0A= WideChar &alsoMax) const=0A= {=0A= return desc_.descToUniv(from, to, alsoMax);=0A= }=0A= =0A= inline=0A= const UnivCharsetDesc &CharsetInfo::desc() const=0A= {=0A= return desc_;=0A= }=0A= # 16 "../include/CodingSystemKit.h" 2=0A= =0A= =0A= =0A= =0A= =0A= class InputCodingSystemKit : public Resource {=0A= public:=0A= virtual ~InputCodingSystemKit();=0A= =0A= virtual const InputCodingSystem *=0A= identityInputCodingSystem() const =3D 0;=0A= virtual const InputCodingSystem *=0A= makeInputCodingSystem(const StringC &,=0A= const CharsetInfo &,=0A= Boolean isBctf,=0A= const char *&staticName) const =3D 0;=0A= virtual Char replacementChar() const =3D 0;=0A= const CharsetInfo &systemCharset() const;=0A= protected:=0A= CharsetInfo systemCharset_;=0A= };=0A= =0A= class CodingSystemKit : public InputCodingSystemKit {=0A= public:=0A= virtual CodingSystemKit *copy() const =3D 0;=0A= virtual const CodingSystem *=0A= identityCodingSystem() const =3D 0;=0A= virtual const CodingSystem *=0A= makeCodingSystem(const char *, Boolean isBctf) const =3D 0;=0A= static CodingSystemKit *make(const char *);=0A= };=0A= =0A= inline=0A= const CharsetInfo &InputCodingSystemKit::systemCharset() const=0A= {=0A= return systemCharset_;=0A= }=0A= # 10 "CodingSystemKit.cxx" 2=0A= # 1 "../include/TranslateCodingSystem.h" 1=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= # 1 "../include/Ptr.h" 1=0A= # 16 "../include/Ptr.h"=0A= template=0A= class Ptr {=0A= public:=0A= Ptr() : ptr_(0) { }=0A= Ptr(T *ptr);=0A= ~Ptr();=0A= Ptr(const Ptr &);=0A= Ptr &operator=3D(const Ptr &);=0A= Ptr &operator=3D(T *);=0A= T *pointer() const { return ptr_; }=0A= T *operator->() const { return ptr_; }=0A= T &operator*() const { return *ptr_; }=0A= void swap(Ptr &p) {=0A= T *tem =3D p.ptr_;=0A= p.ptr_ =3D ptr_;=0A= ptr_ =3D tem;=0A= }=0A= Boolean isNull() const { return ptr_ =3D=3D 0; }=0A= =0A= void clear();=0A= Boolean operator=3D=3D(const Ptr &p) const {=0A= return ptr_ =3D=3D p.ptr_;=0A= }=0A= Boolean operator!=3D(const Ptr &p) const {=0A= return ptr_ !=3D p.ptr_;=0A= }=0A= Boolean operator=3D=3D(const T *p) const {=0A= return ptr_ =3D=3D p;=0A= }=0A= Boolean operator!=3D(const T *p) const {=0A= return ptr_ !=3D p;=0A= }=0A= private:=0A= T *ptr_;=0A= };=0A= =0A= template=0A= class ConstPtr : private Ptr {=0A= public:=0A= ConstPtr() { }=0A= ConstPtr(T *ptr) : Ptr(ptr) { }=0A= ConstPtr(const Ptr &p) : Ptr(p) { }=0A= ConstPtr(const ConstPtr &p) : Ptr(p) { }=0A= ConstPtr &operator=3D(const Ptr &p) {=0A= Ptr::operator=3D(p); return *this;=0A= }=0A= ConstPtr &operator=3D(const ConstPtr &p) {=0A= Ptr::operator=3D(p); return *this;=0A= }=0A= ConstPtr &operator=3D(T *p) {=0A= Ptr::operator=3D(p); return *this;=0A= }=0A= const T *pointer() const { return Ptr::pointer(); }=0A= const T *operator->() const { return Ptr::pointer(); }=0A= const T &operator*() const { return *Ptr::pointer(); }=0A= void swap(ConstPtr &p) { Ptr::swap(p); }=0A= Ptr::isNull;=0A= Ptr::clear;=0A= Boolean operator=3D=3D(const Ptr &p) const { return = Ptr::operator=3D=3D(p); }=0A= Boolean operator!=3D(const Ptr &p) const { return = Ptr::operator!=3D(p); }=0A= Boolean operator=3D=3D(const ConstPtr &p) const {=0A= return Ptr::operator=3D=3D(p);=0A= }=0A= Boolean operator!=3D(const ConstPtr &p) const {=0A= return Ptr::operator!=3D(p);=0A= }=0A= };=0A= # 9 "../include/TranslateCodingSystem.h" 2=0A= # 1 "../include/CharMap.h" 1=0A= # 10 "../include/TranslateCodingSystem.h" 2=0A= # 1 "../include/CharsetRegistry.h" 1=0A= =0A= =0A= =0A= =0A= =0A= =0A= #pragma interface=0A= # 19 "../include/CharsetRegistry.h"=0A= class CharsetRegistry {=0A= public:=0A= class Iter {=0A= public:=0A= virtual ~Iter();=0A= virtual Boolean next(WideChar &min, WideChar &max, UnivChar &) =3D 0;=0A= };=0A= enum ISORegistrationNumber {=0A= UNREGISTERED =3D 0,=0A= ISO646_ASCII_G0 =3D 6,=0A= ISO646_C0 =3D 1,=0A= ISO6429 =3D 77,=0A= ISO8859_1 =3D 100,=0A= ISO8859_2 =3D 101,=0A= ISO8859_3 =3D 109,=0A= ISO8859_4 =3D 110,=0A= ISO8859_5 =3D 144,=0A= ISO8859_6 =3D 127,=0A= ISO8859_7 =3D 126,=0A= ISO8859_8 =3D 138,=0A= ISO8859_9 =3D 148,=0A= ISO646_JIS_G0 =3D 14,=0A= JIS0201 =3D 13,=0A= JIS0208 =3D 168,=0A= JIS0212 =3D 159,=0A= KSC5601 =3D 149,=0A= GB2312 =3D 58,=0A= ISO10646_UCS2 =3D 176,=0A= ISO10646_UCS4 =3D 177,=0A= BIG5 =3D 65535=0A= };=0A= static ISORegistrationNumber getRegistrationNumber(const StringC = &desig,=0A= const CharsetInfo = &);=0A= static Iter *makeIter(ISORegistrationNumber);=0A= };=0A= # 11 "../include/TranslateCodingSystem.h" 2=0A= =0A= =0A= =0A= =0A= =0A= =0A= class TranslateCodingSystem : public CodingSystem {=0A= public:=0A= struct Desc {=0A= CharsetRegistry::ISORegistrationNumber number;=0A= =0A= Char add;=0A= };=0A= =0A= =0A= =0A= =0A= =0A= =0A= TranslateCodingSystem(const CodingSystem *codingSystem,=0A= const Desc *desc,=0A= const CharsetInfo *charset,=0A= Char illegalChar,=0A= Char replacementChar);=0A= Decoder *makeDecoder() const;=0A= Encoder *makeEncoder() const;=0A= unsigned fixedBytesPerChar() const;=0A= private:=0A= ConstPtr > decodeMap_;=0A= ConstPtr > encodeMap_;=0A= const CodingSystem *sub_;=0A= const Desc *desc_;=0A= const CharsetInfo *charset_;=0A= Char illegalChar_;=0A= Char replacementChar_;=0A= };=0A= # 11 "CodingSystemKit.cxx" 2=0A= =0A= # 1 "../include/UTF8CodingSystem.h" 1=0A= # 13 "../include/UTF8CodingSystem.h"=0A= class UTF8CodingSystem : public CodingSystem {=0A= public:=0A= Decoder *makeDecoder() const;=0A= Encoder *makeEncoder() const;=0A= };=0A= # 13 "CodingSystemKit.cxx" 2=0A= # 1 "../include/Fixed2CodingSystem.h" 1=0A= # 13 "../include/Fixed2CodingSystem.h"=0A= class Fixed2CodingSystem : public CodingSystem {=0A= public:=0A= Decoder *makeDecoder() const;=0A= Encoder *makeEncoder() const;=0A= unsigned fixedBytesPerChar() const;=0A= };=0A= # 14 "CodingSystemKit.cxx" 2=0A= # 1 "../include/UnicodeCodingSystem.h" 1=0A= # 13 "../include/UnicodeCodingSystem.h"=0A= class UnicodeCodingSystem : public CodingSystem {=0A= public:=0A= UnicodeCodingSystem(const InputCodingSystem *sub =3D 0);=0A= Decoder *makeDecoder() const;=0A= Encoder *makeEncoder() const;=0A= unsigned fixedBytesPerChar() const;=0A= private:=0A= const InputCodingSystem *sub_;=0A= };=0A= # 15 "CodingSystemKit.cxx" 2=0A= # 1 "../include/XMLCodingSystem.h" 1=0A= # 13 "../include/XMLCodingSystem.h"=0A= class InputCodingSystemKit;=0A= =0A= class XMLCodingSystem : public CodingSystem {=0A= public:=0A= XMLCodingSystem(const InputCodingSystemKit *);=0A= Decoder *makeDecoder() const;=0A= Encoder *makeEncoder() const;=0A= private:=0A= const InputCodingSystemKit *kit_;=0A= };=0A= # 16 "CodingSystemKit.cxx" 2=0A= # 1 "../include/EUCJPCodingSystem.h" 1=0A= # 13 "../include/EUCJPCodingSystem.h"=0A= class EUCJPCodingSystem : public CodingSystem {=0A= public:=0A= Decoder *makeDecoder() const;=0A= Encoder *makeEncoder() const;=0A= };=0A= # 17 "CodingSystemKit.cxx" 2=0A= # 1 "../include/SJISCodingSystem.h" 1=0A= # 13 "../include/SJISCodingSystem.h"=0A= class SJISCodingSystem : public CodingSystem {=0A= public:=0A= Decoder *makeDecoder() const;=0A= Encoder *makeEncoder() const;=0A= };=0A= # 18 "CodingSystemKit.cxx" 2=0A= # 1 "../include/Big5CodingSystem.h" 1=0A= # 13 "../include/Big5CodingSystem.h"=0A= class Big5CodingSystem : public CodingSystem {=0A= public:=0A= Decoder *makeDecoder() const;=0A= Encoder *makeEncoder() const;=0A= };=0A= # 19 "CodingSystemKit.cxx" 2=0A= =0A= =0A= =0A= =0A= # 1 "../include/IdentityCodingSystem.h" 1=0A= # 13 "../include/IdentityCodingSystem.h"=0A= class IdentityCodingSystem : public CodingSystem {=0A= public:=0A= IdentityCodingSystem();=0A= Decoder *makeDecoder() const;=0A= Encoder *makeEncoder() const;=0A= Boolean isIdentity() const;=0A= };=0A= # 24 "CodingSystemKit.cxx" 2=0A= # 1 "../include/Owner.h" 1=0A= # 15 "../include/Owner.h"=0A= template=0A= class Owner {=0A= public:=0A= Owner() : p_(0) { }=0A= Owner(T *p) : p_(p) { }=0A= ~Owner();=0A= void operator=3D(T *p) {=0A= if (p_) del();=0A= p_ =3D p;=0A= }=0A= operator int() const { return p_ !=3D 0; }=0A= T *pointer() const { return p_; }=0A= T *operator->() const { return p_; }=0A= T &operator*() const { return *p_; }=0A= void swap(Owner &x) {=0A= T *tem =3D p_;=0A= p_ =3D x.p_;=0A= x.p_ =3D tem;=0A= }=0A= T *extract() {=0A= T *tem =3D p_;=0A= p_ =3D 0;=0A= return tem;=0A= }=0A= void clear() {=0A= if (p_) {=0A= del();=0A= p_ =3D 0;=0A= }=0A= }=0A= private:=0A= Owner(const Owner &);=0A= void operator=3D(const Owner &o);=0A= void del();=0A= T *p_;=0A= };=0A= # 25 "CodingSystemKit.cxx" 2=0A= =0A= # 1 "/usr/local/include/ctype.h" 1 3=0A= # 27 "/usr/local/include/ctype.h" 3=0A= # 1 "/usr/local/include/bits/types.h" 1 3=0A= # 29 "/usr/local/include/bits/types.h" 3=0A= # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include/stddef.h" 1 3=0A= # 30 "/usr/local/include/bits/types.h" 2 3=0A= =0A= =0A= typedef unsigned char __u_char;=0A= typedef unsigned short __u_short;=0A= typedef unsigned int __u_int;=0A= typedef unsigned long __u_long;=0A= =0A= __extension__ typedef unsigned long long int __u_quad_t;=0A= __extension__ typedef long long int __quad_t;=0A= # 49 "/usr/local/include/bits/types.h" 3=0A= typedef signed char __int8_t;=0A= typedef unsigned char __uint8_t;=0A= typedef signed short int __int16_t;=0A= typedef unsigned short int __uint16_t;=0A= typedef signed int __int32_t;=0A= typedef unsigned int __uint32_t;=0A= =0A= __extension__ typedef signed long long int __int64_t;=0A= __extension__ typedef unsigned long long int __uint64_t;=0A= =0A= typedef __quad_t *__qaddr_t;=0A= =0A= typedef __u_quad_t __dev_t;=0A= typedef __u_int __uid_t;=0A= typedef __u_int __gid_t;=0A= typedef __u_long __ino_t;=0A= typedef __u_int __mode_t;=0A= typedef __u_int __nlink_t;=0A= typedef long int __off_t;=0A= typedef __quad_t __loff_t;=0A= typedef int __pid_t;=0A= typedef int __ssize_t;=0A= typedef __u_long __rlim_t;=0A= typedef __u_quad_t __rlim64_t;=0A= typedef __u_int __id_t;=0A= =0A= typedef struct=0A= {=0A= int __val[2];=0A= } __fsid_t;=0A= =0A= =0A= typedef int __daddr_t;=0A= typedef char *__caddr_t;=0A= typedef long int __time_t;=0A= typedef unsigned int __useconds_t;=0A= typedef long int __suseconds_t;=0A= typedef long int __swblk_t;=0A= =0A= typedef long int __clock_t;=0A= =0A= =0A= typedef int __clockid_t;=0A= =0A= =0A= typedef int __timer_t;=0A= =0A= =0A= =0A= =0A= =0A= =0A= typedef int __key_t;=0A= =0A= =0A= typedef unsigned short int __ipc_pid_t;=0A= =0A= =0A= =0A= typedef long int __blksize_t;=0A= =0A= =0A= =0A= =0A= typedef long int __blkcnt_t;=0A= typedef __quad_t __blkcnt64_t;=0A= =0A= =0A= typedef __u_long __fsblkcnt_t;=0A= typedef __u_quad_t __fsblkcnt64_t;=0A= =0A= =0A= typedef __u_long __fsfilcnt_t;=0A= typedef __u_quad_t __fsfilcnt64_t;=0A= =0A= =0A= typedef __u_quad_t __ino64_t;=0A= =0A= =0A= typedef __loff_t __off64_t;=0A= =0A= =0A= typedef long int __t_scalar_t;=0A= typedef unsigned long int __t_uscalar_t;=0A= =0A= =0A= typedef int __intptr_t;=0A= =0A= =0A= typedef unsigned int __socklen_t;=0A= =0A= =0A= =0A= =0A= # 1 "/usr/local/include/bits/pthreadtypes.h" 1 3=0A= # 23 "/usr/local/include/bits/pthreadtypes.h" 3=0A= # 1 "/usr/local/include/bits/sched.h" 1 3=0A= # 68 "/usr/local/include/bits/sched.h" 3=0A= struct __sched_param=0A= {=0A= int __sched_priority;=0A= };=0A= # 24 "/usr/local/include/bits/pthreadtypes.h" 2 3=0A= =0A= =0A= struct _pthread_fastlock=0A= {=0A= long int __status;=0A= int __spinlock;=0A= =0A= };=0A= =0A= =0A= =0A= typedef struct _pthread_descr_struct *_pthread_descr;=0A= =0A= =0A= =0A= =0A= =0A= typedef struct __pthread_attr_s=0A= {=0A= int __detachstate;=0A= int __schedpolicy;=0A= struct __sched_param __schedparam;=0A= int __inheritsched;=0A= int __scope;=0A= size_t __guardsize;=0A= int __stackaddr_set;=0A= void *__stackaddr;=0A= size_t __stacksize;=0A= } pthread_attr_t;=0A= =0A= =0A= =0A= typedef struct=0A= {=0A= struct _pthread_fastlock __c_lock;=0A= _pthread_descr __c_waiting;=0A= } pthread_cond_t;=0A= =0A= =0A= =0A= typedef struct=0A= {=0A= int __dummy;=0A= } pthread_condattr_t;=0A= =0A= =0A= typedef unsigned int pthread_key_t;=0A= =0A= =0A= =0A= =0A= =0A= typedef struct=0A= {=0A= int __m_reserved;=0A= int __m_count;=0A= _pthread_descr __m_owner;=0A= int __m_kind;=0A= struct _pthread_fastlock __m_lock;=0A= } pthread_mutex_t;=0A= =0A= =0A= =0A= typedef struct=0A= {=0A= int __mutexkind;=0A= } pthread_mutexattr_t;=0A= =0A= =0A= =0A= typedef int pthread_once_t;=0A= =0A= =0A= =0A= =0A= typedef struct _pthread_rwlock_t=0A= {=0A= struct _pthread_fastlock __rw_lock;=0A= int __rw_readers;=0A= _pthread_descr __rw_writer;=0A= _pthread_descr __rw_read_waiting;=0A= _pthread_descr __rw_write_waiting;=0A= int __rw_kind;=0A= int __rw_pshared;=0A= } pthread_rwlock_t;=0A= =0A= =0A= =0A= typedef struct=0A= {=0A= int __lockkind;=0A= int __pshared;=0A= } pthread_rwlockattr_t;=0A= =0A= =0A= =0A= =0A= typedef volatile int pthread_spinlock_t;=0A= =0A= =0A= typedef struct {=0A= struct _pthread_fastlock __ba_lock;=0A= int __ba_required;=0A= int __ba_present;=0A= _pthread_descr __ba_waiting;=0A= } pthread_barrier_t;=0A= =0A= =0A= typedef struct {=0A= int __pshared;=0A= } pthread_barrierattr_t;=0A= =0A= =0A= =0A= =0A= =0A= typedef unsigned long int pthread_t;=0A= # 144 "/usr/local/include/bits/types.h" 2 3=0A= # 28 "/usr/local/include/ctype.h" 2 3=0A= =0A= extern "C" {=0A= # 40 "/usr/local/include/ctype.h" 3=0A= # 1 "/usr/local/include/endian.h" 1 3=0A= # 37 "/usr/local/include/endian.h" 3=0A= # 1 "/usr/local/include/bits/endian.h" 1 3=0A= # 38 "/usr/local/include/endian.h" 2 3=0A= # 41 "/usr/local/include/ctype.h" 2 3=0A= =0A= =0A= =0A= =0A= =0A= =0A= enum=0A= {=0A= _ISupper =3D ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),=0A= _ISlower =3D ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),=0A= _ISalpha =3D ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),=0A= _ISdigit =3D ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),=0A= _ISxdigit =3D ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),=0A= _ISspace =3D ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),=0A= _ISprint =3D ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),=0A= _ISgraph =3D ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),=0A= _ISblank =3D ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),=0A= _IScntrl =3D ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),=0A= _ISpunct =3D ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),=0A= _ISalnum =3D ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))=0A= };=0A= # 75 "/usr/local/include/ctype.h" 3=0A= extern __const unsigned short int *__ctype_b;=0A= extern __const __int32_t *__ctype_tolower;=0A= extern __const __int32_t *__ctype_toupper;=0A= # 91 "/usr/local/include/ctype.h" 3=0A= extern int isalnum (int) throw ();=0A= extern int isalpha (int) throw ();=0A= extern int iscntrl (int) throw ();=0A= extern int isdigit (int) throw ();=0A= extern int islower (int) throw ();=0A= extern int isgraph (int) throw ();=0A= extern int isprint (int) throw ();=0A= extern int ispunct (int) throw ();=0A= extern int isspace (int) throw ();=0A= extern int isupper (int) throw ();=0A= extern int isxdigit (int) throw ();=0A= =0A= =0A= extern int isblank (int) throw ();=0A= =0A= =0A= =0A= =0A= extern int tolower (int __c) throw ();=0A= =0A= =0A= extern int toupper (int __c) throw ();=0A= =0A= =0A= =0A= =0A= =0A= =0A= extern int isascii (int __c) throw ();=0A= =0A= =0A= =0A= extern int toascii (int __c) throw ();=0A= =0A= =0A= =0A= extern int _toupper (int) throw ();=0A= extern int _tolower (int) throw ();=0A= # 167 "/usr/local/include/ctype.h" 3=0A= extern __inline int=0A= tolower (int __c) throw ()=0A= {=0A= return __c >=3D -128 && __c < 256 ? __ctype_tolower[__c] : __c;=0A= }=0A= =0A= extern __inline int=0A= toupper (int __c) throw ()=0A= {=0A= return __c >=3D -128 && __c < 256 ? __ctype_toupper[__c] : __c;=0A= }=0A= # 223 "/usr/local/include/ctype.h" 3=0A= extern int __isalnum_l (int, __locale_t) throw ();=0A= extern int __isalpha_l (int, __locale_t) throw ();=0A= extern int __iscntrl_l (int, __locale_t) throw ();=0A= extern int __isdigit_l (int, __locale_t) throw ();=0A= extern int __islower_l (int, __locale_t) throw ();=0A= extern int __isgraph_l (int, __locale_t) throw ();=0A= extern int __isprint_l (int, __locale_t) throw ();=0A= extern int __ispunct_l (int, __locale_t) throw ();=0A= extern int __isspace_l (int, __locale_t) throw ();=0A= extern int __isupper_l (int, __locale_t) throw ();=0A= extern int __isxdigit_l (int, __locale_t) throw ();=0A= =0A= extern int __isblank_l (int, __locale_t) throw ();=0A= =0A= =0A= =0A= extern int __tolower_l (int __c, __locale_t __l) throw ();=0A= =0A= =0A= extern int __toupper_l (int __c, __locale_t __l) throw ();=0A= # 276 "/usr/local/include/ctype.h" 3=0A= }=0A= # 27 "CodingSystemKit.cxx" 2=0A= =0A= =0A= =0A= =0A= =0A= =0A= const Char unicodeReplaceChar =3D 0xfffd;=0A= =0A= =0A= class CodingSystemKitImpl : public CodingSystemKit {=0A= public:=0A= CodingSystemKitImpl(const TranslateCodingSystem::Desc *);=0A= CodingSystemKit *copy() const;=0A= Char replacementChar() const;=0A= const CodingSystem *=0A= identityCodingSystem() const;=0A= const InputCodingSystem *=0A= identityInputCodingSystem() const;=0A= const InputCodingSystem *=0A= makeInputCodingSystem(const StringC &,=0A= const CharsetInfo &,=0A= Boolean isBctf,=0A= const char *&) const;=0A= const CodingSystem *=0A= makeCodingSystem(const char *, Boolean isBctf) const;=0A= enum CodingSystemId {=0A= identity,=0A= fixed2,=0A= utf8,=0A= unicode,=0A= eucjp,=0A= euccn,=0A= euckr,=0A= sjisBctf,=0A= eucBctf,=0A= sjis,=0A= big5,=0A= big5Bctf,=0A= ansi,=0A= oem,=0A= maybeUnicode,=0A= xml,=0A= iso8859_1,=0A= iso8859_2,=0A= iso8859_3,=0A= iso8859_4,=0A= iso8859_5,=0A= iso8859_6,=0A= iso8859_7,=0A= iso8859_8,=0A= iso8859_9=0A= };=0A= struct Entry {=0A= const char *name;=0A= CodingSystemId id;=0A= };=0A= static Boolean match(const StringC &s,=0A= const CharsetInfo &charset,=0A= const char *key);=0A= static Boolean match(const char *s,=0A= const char *key);=0A= private:=0A= const CodingSystem *=0A= makeCodingSystem(CodingSystemId) const;=0A= const Entry *firstEntry(Boolean isBctf) const;=0A= =0A= UTF8CodingSystem utf8CodingSystem_;=0A= Fixed2CodingSystem fixed2CodingSystem_;=0A= UnicodeCodingSystem unicodeCodingSystem_;=0A= XMLCodingSystem xmlCodingSystem_;=0A= EUCJPCodingSystem eucBctf_;=0A= SJISCodingSystem sjisBctf_;=0A= Big5CodingSystem big5Bctf_;=0A= TranslateCodingSystem eucjpCodingSystem_;=0A= TranslateCodingSystem euccnCodingSystem_;=0A= TranslateCodingSystem euckrCodingSystem_;=0A= TranslateCodingSystem sjisCodingSystem_;=0A= TranslateCodingSystem big5CodingSystem_;=0A= TranslateCodingSystem iso8859_1CodingSystem_;=0A= TranslateCodingSystem iso8859_2CodingSystem_;=0A= TranslateCodingSystem iso8859_3CodingSystem_;=0A= TranslateCodingSystem iso8859_4CodingSystem_;=0A= TranslateCodingSystem iso8859_5CodingSystem_;=0A= TranslateCodingSystem iso8859_6CodingSystem_;=0A= TranslateCodingSystem iso8859_7CodingSystem_;=0A= TranslateCodingSystem iso8859_8CodingSystem_;=0A= TranslateCodingSystem iso8859_9CodingSystem_;=0A= =0A= =0A= =0A= =0A= =0A= =0A= IdentityCodingSystem identityCodingSystem_;=0A= const TranslateCodingSystem::Desc *systemCharsetDesc_;=0A= static const Entry bctfTable_[];=0A= enum { nEncodingsRequireUnicode =3D 8 };=0A= static const Entry encodingTable_[];=0A= };=0A= =0A= =0A= static const TranslateCodingSystem::Desc iso10646Desc[] =3D {=0A= { CharsetRegistry::ISO10646_UCS2, 0x0 },=0A= { CharsetRegistry::UNREGISTERED, 0x0 },=0A= };=0A= =0A= =0A= =0A= static const TranslateCodingSystem::Desc jisDesc[] =3D {=0A= { CharsetRegistry::ISO646_C0, 0x0 },=0A= { CharsetRegistry::ISO646_JIS_G0, 0x0 },=0A= { CharsetRegistry::ISO6429, 0x80 },=0A= { CharsetRegistry::JIS0201, 0x80 },=0A= { CharsetRegistry::JIS0208, 0x8080 },=0A= { CharsetRegistry::UNREGISTERED, 0x0 }=0A= };=0A= =0A= static const TranslateCodingSystem::Desc jis2Desc[] =3D {=0A= { CharsetRegistry::ISO646_C0, 0x0 },=0A= { CharsetRegistry::ISO646_JIS_G0, 0x0 },=0A= { CharsetRegistry::ISO6429, 0x80 },=0A= { CharsetRegistry::JIS0201, 0x80 },=0A= { CharsetRegistry::JIS0208, 0x8080 },=0A= { CharsetRegistry::JIS0212, 0x8000 },=0A= { CharsetRegistry::UNREGISTERED, 0x0 }=0A= };=0A= =0A= static const TranslateCodingSystem::Desc gbDesc[] =3D {=0A= { CharsetRegistry::ISO646_C0, 0x0 },=0A= { CharsetRegistry::ISO646_ASCII_G0, 0x0 },=0A= { CharsetRegistry::ISO6429, 0x80 },=0A= { CharsetRegistry::GB2312, 0x8080 },=0A= { CharsetRegistry::UNREGISTERED, 0x0 }=0A= };=0A= =0A= static const TranslateCodingSystem::Desc big5Desc[] =3D {=0A= { CharsetRegistry::ISO646_C0, 0x0 },=0A= { CharsetRegistry::ISO646_ASCII_G0, 0x0 },=0A= { CharsetRegistry::BIG5, 0x0 },=0A= { CharsetRegistry::UNREGISTERED, 0x0 }=0A= };=0A= =0A= static const TranslateCodingSystem::Desc kscDesc[] =3D {=0A= { CharsetRegistry::ISO646_C0, 0x0 },=0A= { CharsetRegistry::ISO646_ASCII_G0, 0x0 },=0A= { CharsetRegistry::ISO6429, 0x80 },=0A= { CharsetRegistry::KSC5601, 0x8080 },=0A= { CharsetRegistry::UNREGISTERED, 0x0 }=0A= };=0A= =0A= static const TranslateCodingSystem::Desc iso8859_1Desc[] =3D {=0A= { CharsetRegistry::ISO646_C0, 0x0 },=0A= { CharsetRegistry::ISO646_ASCII_G0, 0x0 },=0A= { CharsetRegistry::ISO6429, 0x80 },=0A= { CharsetRegistry::ISO8859_1, 0x80 },=0A= { CharsetRegistry::UNREGISTERED, 0x0 }=0A= };=0A= =0A= static const TranslateCodingSystem::Desc iso8859_2Desc[] =3D {=0A= { CharsetRegistry::ISO646_C0, 0x0 },=0A= { CharsetRegistry::ISO646_ASCII_G0, 0x0 },=0A= { CharsetRegistry::ISO6429, 0x80 },=0A= { CharsetRegistry::ISO8859_2, 0x80 },=0A= { CharsetRegistry::UNREGISTERED, 0x0 }=0A= };=0A= =0A= static const TranslateCodingSystem::Desc iso8859_3Desc[] =3D {=0A= { CharsetRegistry::ISO646_C0, 0x0 },=0A= { CharsetRegistry::ISO646_ASCII_G0, 0x0 },=0A= { CharsetRegistry::ISO6429, 0x80 },=0A= { CharsetRegistry::ISO8859_3, 0x80 },=0A= { CharsetRegistry::UNREGISTERED, 0x0 }=0A= };=0A= =0A= static const TranslateCodingSystem::Desc iso8859_4Desc[] =3D {=0A= { CharsetRegistry::ISO646_C0, 0x0 },=0A= { CharsetRegistry::ISO646_ASCII_G0, 0x0 },=0A= { CharsetRegistry::ISO6429, 0x80 },=0A= { CharsetRegistry::ISO8859_4, 0x80 },=0A= { CharsetRegistry::UNREGISTERED, 0x0 }=0A= };=0A= =0A= static const TranslateCodingSystem::Desc iso8859_5Desc[] =3D {=0A= { CharsetRegistry::ISO646_C0, 0x0 },=0A= { CharsetRegistry::ISO646_ASCII_G0, 0x0 },=0A= { CharsetRegistry::ISO6429, 0x80 },=0A= { CharsetRegistry::ISO8859_5, 0x80 },=0A= { CharsetRegistry::UNREGISTERED, 0x0 }=0A= };=0A= =0A= static const TranslateCodingSystem::Desc iso8859_6Desc[] =3D {=0A= { CharsetRegistry::ISO646_C0, 0x0 },=0A= { CharsetRegistry::ISO646_ASCII_G0, 0x0 },=0A= { CharsetRegistry::ISO6429, 0x80 },=0A= { CharsetRegistry::ISO8859_6, 0x80 },=0A= { CharsetRegistry::UNREGISTERED, 0x0 }=0A= };=0A= =0A= static const TranslateCodingSystem::Desc iso8859_7Desc[] =3D {=0A= { CharsetRegistry::ISO646_C0, 0x0 },=0A= { CharsetRegistry::ISO646_ASCII_G0, 0x0 },=0A= { CharsetRegistry::ISO6429, 0x80 },=0A= { CharsetRegistry::ISO8859_7, 0x80 },=0A= { CharsetRegistry::UNREGISTERED, 0x0 }=0A= };=0A= =0A= static const TranslateCodingSystem::Desc iso8859_8Desc[] =3D {=0A= { CharsetRegistry::ISO646_C0, 0x0 },=0A= { CharsetRegistry::ISO646_ASCII_G0, 0x0 },=0A= { CharsetRegistry::ISO6429, 0x80 },=0A= { CharsetRegistry::ISO8859_8, 0x80 },=0A= { CharsetRegistry::UNREGISTERED, 0x0 }=0A= };=0A= =0A= static const TranslateCodingSystem::Desc iso8859_9Desc[] =3D {=0A= { CharsetRegistry::ISO646_C0, 0x0 },=0A= { CharsetRegistry::ISO646_ASCII_G0, 0x0 },=0A= { CharsetRegistry::ISO6429, 0x80 },=0A= { CharsetRegistry::ISO8859_9, 0x80 },=0A= { CharsetRegistry::UNREGISTERED, 0x0 }=0A= };=0A= =0A= =0A= =0A= const CodingSystemKitImpl::Entry CodingSystemKitImpl::bctfTable_[] =3D {=0A= { "IDENTITY", identity },=0A= =0A= { "FIXED-2", fixed2 },=0A= { "UTF-8", utf8 },=0A= { "EUC", eucBctf },=0A= { "SJIS", sjisBctf },=0A= { "BIG5", big5Bctf },=0A= =0A= { 0, identity },=0A= };=0A= =0A= const CodingSystemKitImpl::Entry CodingSystemKitImpl::encodingTable_[] = =3D {=0A= =0A= { "UTF-8", utf8 },=0A= { "UCS-2", fixed2 },=0A= { "ISO-10646-UCS-2", fixed2 },=0A= { "UNICODE", unicode },=0A= =0A= =0A= { "UTF-16", unicode },=0A= { "WINDOWS", ansi },=0A= { "MS-DOS", oem },=0A= { "WUNICODE", maybeUnicode },=0A= { "XML", xml },=0A= =0A= { "IS8859-1", iso8859_1 },=0A= { "ISO-8859-1", iso8859_1 },=0A= { "IS8859-2", iso8859_2 },=0A= { "ISO-8859-2", iso8859_2 },=0A= { "IS8859-3", iso8859_3 },=0A= { "ISO-8859-3", iso8859_3 },=0A= { "IS8859-4", iso8859_4 },=0A= { "ISO-8859-4", iso8859_4 },=0A= { "IS8859-5", iso8859_5 },=0A= { "ISO-8859-5", iso8859_5 },=0A= { "IS8859-6", iso8859_6 },=0A= { "ISO-8859-6", iso8859_6 },=0A= { "IS8859-7", iso8859_7 },=0A= { "ISO-8859-7", iso8859_7 },=0A= { "IS8859-8", iso8859_8 },=0A= { "ISO-8859-8", iso8859_8 },=0A= { "IS8859-9", iso8859_9 },=0A= { "ISO-8859-9", iso8859_9 },=0A= { "EUC-JP", eucjp },=0A= { "EUC-CN", euccn },=0A= { "GB2312", euccn },=0A= { "CN-GB", euccn },=0A= { "EUC-KR", euckr },=0A= { "SJIS", sjis },=0A= { "SHIFT_JIS", sjis },=0A= { "BIG5", big5 },=0A= { "CN-BIG5", big5 },=0A= =0A= { 0, identity },=0A= };=0A= =0A= CodingSystemKitImpl::CodingSystemKitImpl(const = TranslateCodingSystem::Desc *systemCharsetDesc)=0A= : systemCharsetDesc_(systemCharsetDesc)=0A= =0A= ,=0A= =0A= =0A= =0A= =0A= =0A= xmlCodingSystem_(this),=0A= iso8859_1CodingSystem_(&identityCodingSystem_, iso8859_1Desc, = &systemCharset_, 0x100, unicodeReplaceChar),=0A= iso8859_2CodingSystem_(&identityCodingSystem_, iso8859_2Desc, = &systemCharset_, 0x100, unicodeReplaceChar),=0A= iso8859_3CodingSystem_(&identityCodingSystem_, iso8859_3Desc, = &systemCharset_, 0x100, unicodeReplaceChar),=0A= iso8859_4CodingSystem_(&identityCodingSystem_, iso8859_4Desc, = &systemCharset_, 0x100, unicodeReplaceChar),=0A= iso8859_5CodingSystem_(&identityCodingSystem_, iso8859_5Desc, = &systemCharset_, 0x100, unicodeReplaceChar),=0A= iso8859_6CodingSystem_(&identityCodingSystem_, iso8859_6Desc, = &systemCharset_, 0x100, unicodeReplaceChar),=0A= iso8859_7CodingSystem_(&identityCodingSystem_, iso8859_7Desc, = &systemCharset_, 0x100, unicodeReplaceChar),=0A= iso8859_8CodingSystem_(&identityCodingSystem_, iso8859_8Desc, = &systemCharset_, 0x100, unicodeReplaceChar),=0A= iso8859_9CodingSystem_(&identityCodingSystem_, iso8859_9Desc, = &systemCharset_, 0x100, unicodeReplaceChar),=0A= eucjpCodingSystem_(&eucBctf_, jis2Desc, &systemCharset_, 0x8000, = unicodeReplaceChar),=0A= euccnCodingSystem_(&eucBctf_, gbDesc, &systemCharset_, 0x8000, = unicodeReplaceChar),=0A= euckrCodingSystem_(&eucBctf_, kscDesc, &systemCharset_, 0x8000, = unicodeReplaceChar),=0A= sjisCodingSystem_(&sjisBctf_, jisDesc, &systemCharset_, 0x8000, = unicodeReplaceChar),=0A= big5CodingSystem_(&big5Bctf_, big5Desc, &systemCharset_, 0x0080, = unicodeReplaceChar)=0A= =0A= {=0A= UnivCharsetDesc desc;=0A= for (const TranslateCodingSystem::Desc *p =3D systemCharsetDesc_;=0A= p->number !=3D CharsetRegistry::UNREGISTERED;=0A= p++) {=0A= Owner = iter(CharsetRegistry::makeIter(p->number));=0A= if (iter) {=0A= WideChar min;=0A= WideChar max;=0A= UnivChar univ;=0A= while (iter->next(min, max, univ)) {=0A= min +=3D p->add;=0A= max +=3D p->add;=0A= if (min <=3D charMax) {=0A= if (max > charMax)=0A= max =3D charMax;=0A= desc.addRange(min, max, univ);=0A= }=0A= }=0A= }=0A= }=0A= systemCharset_.set(desc);=0A= }=0A= =0A= CodingSystemKit *CodingSystemKitImpl::copy() const=0A= {=0A= return new CodingSystemKitImpl(systemCharsetDesc_);=0A= }=0A= =0A= const CodingSystemKitImpl::Entry = *CodingSystemKitImpl::firstEntry(Boolean isBctf) const=0A= {=0A= if (isBctf)=0A= return bctfTable_;=0A= =0A= else if (systemCharsetDesc_ !=3D iso10646Desc)=0A= return encodingTable_ + nEncodingsRequireUnicode;=0A= =0A= else=0A= return encodingTable_;=0A= }=0A= =0A= const InputCodingSystem *=0A= CodingSystemKitImpl::makeInputCodingSystem(const StringC &s,=0A= const CharsetInfo &charset,=0A= Boolean isBctf,=0A= const char *&key) const=0A= {=0A= for (const Entry *p =3D firstEntry(isBctf); p->name; p++)=0A= if (match(s, charset, p->name)) {=0A= key =3D p->name;=0A= return makeCodingSystem(p->id);=0A= }=0A= return 0;=0A= }=0A= =0A= Boolean=0A= CodingSystemKitImpl::match(const StringC &s,=0A= const CharsetInfo &charset,=0A= const char *key)=0A= {=0A= for (size_t i =3D 0; i < s.size(); i++) {=0A= if (key[i] =3D=3D '\0')=0A= return 0;=0A= if (charset.execToDesc(toupper(key[i])) !=3D s[i]=0A= && charset.execToDesc(tolower(key[i])) !=3D s[i])=0A= return 0;=0A= }=0A= return key[s.size()] =3D=3D '\0';=0A= }=0A= =0A= const CodingSystem *=0A= CodingSystemKitImpl::makeCodingSystem(const char *s,=0A= Boolean isBctf)=0A= const=0A= {=0A= for (const Entry *p =3D firstEntry(isBctf); p->name; p++)=0A= if (match(s, p->name))=0A= return makeCodingSystem(p->id);=0A= return 0;=0A= }=0A= =0A= Boolean=0A= CodingSystemKitImpl::match(const char *s,=0A= const char *key)=0A= {=0A= for (; toupper(*key) =3D=3D *s || tolower(*key) =3D=3D *s; s++, key++) = {=0A= if (*s =3D=3D '\0')=0A= return 1;=0A= }=0A= return 0;=0A= }=0A= =0A= const CodingSystem *=0A= CodingSystemKitImpl::makeCodingSystem(CodingSystemId id) const=0A= {=0A= switch (id) {=0A= case identity:=0A= return &identityCodingSystem_;=0A= =0A= case fixed2:=0A= return &fixed2CodingSystem_;=0A= case utf8:=0A= return &utf8CodingSystem_;=0A= case unicode:=0A= return &unicodeCodingSystem_;=0A= case eucBctf:=0A= return &eucBctf_;=0A= case sjisBctf:=0A= return &sjisBctf_;=0A= case big5Bctf:=0A= return &big5Bctf_;=0A= case eucjp:=0A= return &eucjpCodingSystem_;=0A= case euccn:=0A= return &euccnCodingSystem_;=0A= case euckr:=0A= return &euckrCodingSystem_;=0A= case sjis:=0A= return &sjisCodingSystem_;=0A= case big5:=0A= return &big5CodingSystem_;=0A= case iso8859_1:=0A= if (systemCharsetDesc_ =3D=3D iso10646Desc)=0A= return &identityCodingSystem_;=0A= else=0A= return &iso8859_1CodingSystem_;=0A= case iso8859_2:=0A= return &iso8859_2CodingSystem_;=0A= case iso8859_3:=0A= return &iso8859_3CodingSystem_;=0A= case iso8859_4:=0A= return &iso8859_4CodingSystem_;=0A= case iso8859_5:=0A= return &iso8859_5CodingSystem_;=0A= case iso8859_6:=0A= return &iso8859_6CodingSystem_;=0A= case iso8859_7:=0A= return &iso8859_7CodingSystem_;=0A= case iso8859_8:=0A= return &iso8859_8CodingSystem_;=0A= case iso8859_9:=0A= return &iso8859_9CodingSystem_;=0A= case xml:=0A= return &xmlCodingSystem_;=0A= # 486 "CodingSystemKit.cxx"=0A= default:=0A= break;=0A= }=0A= return 0;=0A= }=0A= =0A= const InputCodingSystem *=0A= CodingSystemKitImpl::identityInputCodingSystem() const=0A= {=0A= return &identityCodingSystem_;=0A= }=0A= =0A= const CodingSystem *=0A= CodingSystemKitImpl::identityCodingSystem() const=0A= {=0A= return &identityCodingSystem_;=0A= }=0A= =0A= Char CodingSystemKitImpl::replacementChar() const=0A= {=0A= =0A= =0A= return unicodeReplaceChar;=0A= =0A= =0A= =0A= }=0A= =0A= CodingSystemKit *=0A= CodingSystemKit::make(const char *systemCharsetName)=0A= {=0A= =0A= if (systemCharsetName && CodingSystemKitImpl::match(systemCharsetName, = "JIS"))=0A= return new CodingSystemKitImpl(jis2Desc);=0A= =0A= return new CodingSystemKitImpl(iso10646Desc);=0A= }=0A= =0A= InputCodingSystemKit::~InputCodingSystemKit()=0A= {=0A= }=0A= ------=_NextPart_000_0029_01C145FA.D57A7F00--