📄 big5codingsystem.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 + -