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

📄 charsetinfo.h

📁 SP是一个基于GNU C++编译器
💻 H
字号:
// Copyright (c) 1994, 1997 James Clark// See the file COPYING for copying permission.#ifndef CharsetInfo_INCLUDED#define CharsetInfo_INCLUDED 1#ifdef __GNUG__#pragma interface#endif#include <limits.h>#include "UnivCharsetDesc.h"#include "Boolean.h"#include "types.h"#include "StringC.h"#include "ISet.h"#include "CharMap.h"#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endifclass SP_API CharsetInfo {public:  CharsetInfo();  CharsetInfo(const UnivCharsetDesc &);  void set(const UnivCharsetDesc &);  // Use only for characters guaranteed to me in the C basic execution  // character set and which have been verified to be in this  // character set.  Char execToDesc(char) const;  StringC execToDesc(const char *s) const;  Boolean descToUniv(WideChar from, UnivChar &to) const;  Boolean descToUniv(WideChar from, UnivChar &to, WideChar &alsoMax) const;  // Return 0 for no matches, 1 for 1, 2 for more than 1  // to gets the first character; toSet gets all the characters  // if there's more than 1.  unsigned univToDesc(UnivChar from, WideChar &to, ISet<WideChar> &toSet)       const;  unsigned univToDesc(UnivChar from, WideChar &to, ISet<WideChar> &toSet,		      WideChar &count)       const;  void getDescSet(ISet<Char> &) const;  int digitWeight(Char) const;  int hexDigitWeight(Char) const;  const UnivCharsetDesc &desc() const;private:  void init();  UnivCharsetDesc desc_;  CharMap<Unsigned32> inverse_;  Char execToDesc_[UCHAR_MAX + 1];};inlineunsigned CharsetInfo::univToDesc(UnivChar from, WideChar &to,				 ISet<WideChar> &toSet)     const{  if (from <= Char(-1)) {    Unsigned32 n = inverse_[from];    if (n == Unsigned32(-1))      return 0;    if (n != Unsigned32(-2)) {      to = ((n + from) & ((Unsigned32(1) << 31) - 1));      return 1;    }  }  return desc_.univToDesc(from, to, toSet);}inlineunsigned CharsetInfo::univToDesc(UnivChar from, WideChar &to,				 ISet<WideChar> &toSet, WideChar &count)     const{  if (from <= Char(-1)) {    Char fromMax;    Unsigned32 n = inverse_.getRange(from, fromMax);    if (n == Unsigned32(-1)) {      count = (fromMax - from) + 1;      return 0;    }    if (n != Unsigned32(-2)) {      to = ((n + from) & ((Unsigned32(1) << 31) - 1));      count = (fromMax - from) + 1;      return 1;    }  }  return desc_.univToDesc(from, to, toSet, count);}inlineBoolean CharsetInfo::descToUniv(UnivChar from, WideChar &to) const{  return desc_.descToUniv(from, to);}inlineChar CharsetInfo::execToDesc(char c) const{  return execToDesc_[(unsigned char)c];}inlineBoolean CharsetInfo::descToUniv(WideChar from, UnivChar &to,				WideChar &alsoMax) const{  return desc_.descToUniv(from, to, alsoMax);}inlineconst UnivCharsetDesc &CharsetInfo::desc() const{  return desc_;}#ifdef SP_NAMESPACE}#endif#endif /* not CharsetInfo_INCLUDED */

⌨️ 快捷键说明

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