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

📄 genflags.c

📁 libiconv是一个很不错的字符集转换库。程序接口也很简单
💻 C
字号:
/* Copyright (C) 2000-2002 Free Software Foundation, Inc.   This file is part of the GNU LIBICONV Library.   The GNU LIBICONV Library is free software; you can redistribute it   and/or modify it under the terms of the GNU Library General Public   License as published by the Free Software Foundation; either version 2   of the License, or (at your option) any later version.   The GNU LIBICONV Library is distributed in the hope that it will be   useful, but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   Library General Public License for more details.   You should have received a copy of the GNU Library General Public   License along with the GNU LIBICONV Library; see the file COPYING.LIB.   If not, write to the Free Software Foundation, Inc., 59 Temple Place -   Suite 330, Boston, MA 02111-1307, USA.  *//* Creates the flags.h include file. */#include <stdio.h>#include <stdlib.h>/* Consider all encodings, including the system dependent ones. */#define USE_AIX#define USE_OSF1#define USE_DOS#define USE_EXTRAstruct loop_funcs {};#include "converters.h"static void emit_encoding (struct wctomb_funcs * ofuncs, const char* c_name){  /* Prepare a converter struct. */  struct conv_struct conv;  memset(&conv,'\0',sizeof(conv));  conv.ofuncs = *ofuncs;  {    /* See whether the encoding can encode the accents and quotation marks. */    ucs4_t probe[6] = { 0x0060, 0x00b4, 0x2018, 0x2019, 0x3131, 0x3163, };    int res[6];    int i;    for (i = 0; i < 6; i++) {      unsigned char buf[10];      memset(&conv.ostate,'\0',sizeof(state_t));      res[i] = (conv.ofuncs.xxx_wctomb(&conv,buf,probe[i],sizeof(buf)) != RET_ILUNI);    }    printf("#define ei_%s_oflags (",c_name);    {      int first = 1;      if (res[0] && res[1]) {        printf("HAVE_ACCENTS");        first = 0;      }      if (res[2] && res[3]) {        if (!first) printf(" | ");        printf("HAVE_QUOTATION_MARKS");        first = 0;      }      if (res[4] && res[5]) {        if (!first) printf(" | ");        printf("HAVE_HANGUL_JAMO");        first = 0;      }      if (first) printf("0");    }    printf(")\n");  }}int main (){  int bitmask = 1;  printf("/* Generated automatically by genflags. */\n");  printf("\n");  printf("/* Set if the encoding can encode\n");  printf("   the acute and grave accents U+00B4 and U+0060. */\n");  printf("#define HAVE_ACCENTS %d\n",bitmask);  printf("\n");  bitmask = bitmask << 1;  printf("/* Set if the encoding can encode\n");  printf("   the single quotation marks U+2018 and U+2019. */\n");  printf("#define HAVE_QUOTATION_MARKS %d\n",bitmask);  printf("\n");  bitmask = bitmask << 1;  printf("/* Set if the encoding can encode\n");  printf("   the double-width Hangul letters (Jamo) U+3131 to U+3163. */\n");  printf("#define HAVE_HANGUL_JAMO %d\n",bitmask);  printf("\n");#define DEFENCODING(xxx_names,xxx,xxx_ifuncs1,xxx_ifuncs2,xxx_ofuncs1,xxx_ofuncs2) \  {                                                       \    struct wctomb_funcs ofuncs = xxx_ofuncs1,xxx_ofuncs2; \    emit_encoding(&ofuncs,#xxx);                          \  }/* Consider all encodings, including the system dependent ones. */#include "encodings.def"#include "encodings_aix.def"#include "encodings_osf1.def"#include "encodings_dos.def"#include "encodings_extra.def"#undef DEFENCODING  fflush(stdout);  if (ferror(stdout))    exit(1);  exit(0);}

⌨️ 快捷键说明

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