Win32CodingSystem.cxx revision 7c478bd95313f5f23a4c958a745db2134aa03244
// Copyright (c) 1996 James Clark
// See the file COPYING for copying permission.
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __GNUG__
#pragma implementation
#endif
#include "splib.h"
#ifdef SP_MULTI_BYTE
#include <windows.h>
#include <io.h>
#include "Win32CodingSystem.h"
#include "Boolean.h"
#include "macros.h"
#ifdef SP_NAMESPACE
namespace SP_NAMESPACE {
#endif
class SingleByteWin32Decoder : public Decoder {
public:
const char **rest);
private:
};
class MultiByteWin32Decoder : public Decoder {
public:
unsigned char *leadByte);
const char **rest);
private:
unsigned int codePage_;
};
class Win32Encoder : public Encoder {
public:
Win32Encoder(unsigned int codePage);
~Win32Encoder();
private:
char *buf_;
unsigned int codePage_;
};
{
}
{
if (codePage == codePageAnsi)
else
}
{
return IsValidCodePage(codePage_);
}
{
return new Win32Encoder(codePage_);
}
{
else
}
{
for (int i = 0; i < 256; i++) {
char c = i;
map_[i] = defaultChar;
}
}
{
return fromLen;
}
{
return 1;
}
unsigned char *leadByte)
{
for (int i = 0; i < 256; i++)
isLeadByte_[i] = 0;
for (int i = 0; i < MAX_LEADBYTES; i += 2) {
break;
isLeadByte_[j] = 1;
}
}
{
size_t i;
for (i = fromLen; i > 0; i--)
break;
if ((fromLen - i) & 1)
fromLen--;
if (count) {
return count;
}
// Try it character by character.
while (fromLen > 0) {
*to = defaultChar_;
to++;
}
}
{
}
{
delete [] buf_;
}
{
if (n == 0)
return;
if (n*2 > bufLen_) {
delete [] buf_;
bufLen_ = n*2;
}
0,
s,
n,
buf_,
0,
0);
if (nBytes)
}
#ifdef SP_NAMESPACE
}
#endif
#else /* not SP_MULTI_BYTE */
#ifndef __GNUG__
static char non_empty_translation_unit; // sigh
#endif
#endif /* not SP_MULTI_BYTE */