⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 big5codingsystem.cxx

📁 SP是一个基于GNU C++编译器
💻 CXX
字号:
// Copyright (c) 1997 James Clark// See the file COPYING for copying permission.#include "splib.h"#ifdef SP_MULTI_BYTE#include "Big5CodingSystem.h"#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endifclass Big5Decoder : public Decoder {public:  Big5Decoder() { }  size_t decode(Char *, const char *, size_t, const char **);private:};class Big5Encoder : public Encoder {public:  Big5Encoder() { }  void output(const Char *, size_t, OutputByteStream *);};Decoder *Big5CodingSystem::makeDecoder() const{  return new Big5Decoder;}Encoder *Big5CodingSystem::makeEncoder() const{  return new Big5Encoder;}size_t Big5Decoder::decode(Char *to, const char *s,			   size_t slen, const char **rest){  Char *start = to;  const unsigned char *us = (const unsigned char *)s;  while (slen > 0) {    if (!(*us & 0x80)) {      *to++ = *us++;      slen--;    }    else {      if (slen < 2)	break;      slen -= 2;      unsigned short n = *us++ << 8;      n |= *us++;      *to++ = n;    }  }  *rest = (const char *)us;  return to - start;}void Big5Encoder::output(const Char *s, size_t n, OutputByteStream *sb){  for (; n > 0; s++, n--) {    Char c = *s;    if (c < 0x80)      sb->sputc((unsigned char)c);    else if (c & 0x8000) {      sb->sputc((unsigned char)(c >> 8));      sb->sputc((unsigned char)(c & 0xff));    }    else      handleUnencodable(c, sb);  }}#ifdef SP_NAMESPACE}#endif#else /* not SP_MULTI_BYTE */#ifndef __GNUG__static char non_empty_translation_unit;	// sigh#endif#endif /* not SP_MULTI_BYTE */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -