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

📄 messagetable.cxx

📁 SP是一个基于GNU C++编译器
💻 CXX
字号:
// Copyright (c) 1996 James Clark// See the file COPYING for copying permission.#ifdef __GNUG__#pragma implementation#endif#include "splib.h"#include "MessageTable.h"#ifdef SP_NO_MESSAGE_TEXT// Windows only#define WIN32_LEAN_AND_MEAN#define STRICT#include "windows.h"static HINSTANCE dllInstanceHandle = NULL;#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endifclass WinMessageTable : public MessageTable {public:  Boolean getText(const MessageFragment &,		  String<SP_TCHAR> &) const;  };Boolean WinMessageTable::getText(const MessageFragment &frag,				 String<SP_TCHAR> &str) const{  static const int bufSize = 4096;  SP_TCHAR buf[bufSize];#ifdef SP_WIDE_SYSTEM  int len = LoadStringW(frag.module() == MessageFragment::libModule		       ? dllInstanceHandle		       : 0,		       frag.number(),		       buf,		       bufSize);  if (len == 0 && GetLastError() != 0) {    char bufmb[bufSize*2];    len = LoadStringA(frag.module() == MessageFragment::libModule		      ? dllInstanceHandle		      : 0,		      frag.number(),		      bufmb,		      bufSize*2);    if (len != 0) {      len = MultiByteToWideChar(CP_ACP, 0, bufmb, len, buf, bufSize);      if (len == 0 && GetLastError() != 0)	return 0;    }    else if (GetLastError() != 0)      return 0;  }#else /* not SP_WIDE_SYSTEM */  int len = LoadStringA(frag.module() == MessageFragment::libModule		        ? dllInstanceHandle		        : 0,		        frag.number(),		        buf,		        bufSize);  if (len == 0 && GetLastError() != 0)    return 0;#endif /* not SP_WIDE_SYSTEM */  if (len == 0) {    str.resize(0);    return 1;  }  str.assign(buf, len);  return 1;}static WinMessageTable theMessageTable;#ifdef SP_NAMESPACE}#endif#ifdef SP_USE_DLLextern "C"BOOL WINAPI DllMain(HINSTANCE inst, ULONG reason, LPVOID){  if (reason == DLL_PROCESS_ATTACH)    dllInstanceHandle = inst;  return TRUE;}#endif#else /* not SP_NO_MESSAGE_TEXT */#ifdef SP_HAVE_GETTEXTextern "C" {extern char *dgettext(const char *, const char *);extern char *gettext(const char *);extern char *textdomain(const char *);extern char *bindtextdomain(const char *, const char *);}#include <stdlib.h>#ifndef MESSAGE_DOMAIN#define MESSAGE_DOMAIN "sp"#endif#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endifclass GettextMessageTable : public MessageTable {public:  GettextMessageTable();  Boolean getText(const MessageFragment &, String<SP_TCHAR> &) const;  };GettextMessageTable::GettextMessageTable(){  const char *dir = getenv("TEXTDOMAINDIR");  if (dir)    bindtextdomain(MESSAGE_DOMAIN, dir);}Boolean GettextMessageTable::getText(const MessageFragment &frag,				     String<SP_TCHAR> &str) const{  const char *s = frag.text();  if (!s)    return 0;  s = dgettext(MESSAGE_DOMAIN, s);  if (!s)    return 0;  str.assign(s, strlen(s));  return 1;}static GettextMessageTable theMessageTable;#ifdef SP_NAMESPACE}#endif#else /* not SP_HAVE_GETTEXT */#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endifclass DefaultMessageTable : public MessageTable {public:  Boolean getText(const MessageFragment &, String<SP_TCHAR> &) const;};Boolean DefaultMessageTable::getText(const MessageFragment &frag,				     String<SP_TCHAR> &str) const{  if (!frag.text())    return 0;  str.resize(0);  for (const char *s = frag.text(); *s; s++)    str += SP_TCHAR((unsigned char)*s);  return 1;}static DefaultMessageTable theMessageTable;#ifdef SP_NAMESPACE}#endif#endif /* not SP_HAVE_GETTEXT */#endif /* not SP_NO_MESSAGE_TEXT */#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endifconst MessageTable *MessageTable::instance(){  return &theMessageTable;}#ifdef SP_NAMESPACE}#endif

⌨️ 快捷键说明

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