亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? apinames.c

?? 奇趣公司比較新的qt/emd版本
?? C
字號:
/* * This little program is used to parse the FreeType headers and * find the declaration of all public APIs.  This is easy, because * they all look like the following: * *   FT_EXPORT( return_type ) *   function_name( function arguments ); * * You must pass the list of header files as arguments.  Wildcards are * accepted if you are using GCC for compilation (and probably by * other compilers too). * * Author: David Turner, 2005, 2006 * * This code is explicitly placed into the public domain. * */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#define  PROGRAM_NAME     "apinames"#define  PROGRAM_VERSION  "0.1"#define  LINEBUFF_SIZE  1024typedef enum{  OUTPUT_LIST = 0,      /* output the list of names, one per line             */  OUTPUT_WINDOWS_DEF,   /* output a Windows .DEF file for Visual C++ or Mingw */  OUTPUT_BORLAND_DEF,   /* output a Windows .DEF file for Borland C++         */  OUTPUT_WATCOM_LBC     /* output a Watcom Linker Command File                */} OutputFormat;static voidpanic( const char*  message ){  fprintf( stderr, "PANIC: %s\n", message );  exit(2);}typedef struct{  char*         name;  unsigned int  hash;} NameRec, *Name;static Name  the_names;static int   num_names;static int   max_names;static voidnames_add( const char*  name,           const char*  end ){  int   nn, len, h;  Name  nm;  if ( end <= name )    return;  /* compute hash value */  len = (int)(end - name);  h   = 0;  for ( nn = 0; nn < len; nn++ )    h = h*33 + name[nn];  /* check for an pre-existing name */  for ( nn = 0; nn < num_names; nn++ )  {    nm = the_names + nn;    if ( (int)nm->hash                 == h &&         memcmp( name, nm->name, len ) == 0 &&         nm->name[len]                 == 0 )      return;  }  /* add new name */  if ( num_names >= max_names )  {    max_names += (max_names >> 1) + 4;    the_names  = (NameRec*)realloc( the_names, sizeof(the_names[0])*max_names );    if ( the_names == NULL )      panic( "not enough memory" );  }  nm = &the_names[num_names++];  nm->hash = h;  nm->name = (char*)malloc( len+1 );  if ( nm->name == NULL )    panic( "not enough memory" );  memcpy( nm->name, name, len );  nm->name[len] = 0;}static intname_compare( const void*  name1,              const void*  name2 ){  Name  n1 = (Name)name1;  Name  n2 = (Name)name2;  return strcmp( n1->name, n2->name );}static voidnames_sort( void ){  qsort( the_names, (size_t)num_names, sizeof(the_names[0]), name_compare );}static voidnames_dump( FILE*         out,            OutputFormat  format,            const char*   dll_name ){  int  nn;  switch ( format )  {    case OUTPUT_WINDOWS_DEF:      if ( dll_name )        fprintf( out, "LIBRARY %s\n", dll_name );      fprintf( out, "DESCRIPTION  FreeType 2 DLL\n" );      fprintf( out, "EXPORTS\n" );      for ( nn = 0; nn < num_names; nn++ )        fprintf( out, "  %s\n", the_names[nn].name );      break;    case OUTPUT_BORLAND_DEF:      if ( dll_name )        fprintf( out, "LIBRARY %s\n", dll_name );      fprintf( out, "DESCRIPTION  FreeType 2 DLL\n" );      fprintf( out, "EXPORTS\n" );      for ( nn = 0; nn < num_names; nn++ )        fprintf( out, "  _%s\n", the_names[nn].name );      break;    case OUTPUT_WATCOM_LBC:      {        /* we must omit the .dll suffix from the library name */        char   temp[512];        char*  dot;        if ( dll_name == NULL )        {          fprintf( stderr,                   "you must provide a DLL name with the -d option !!\n" );          exit(4);        }        dot = strchr( dll_name, '.' );        if ( dot != NULL )        {          int  len = (dot - dll_name);          if ( len > (int)(sizeof(temp)-1) )            len = sizeof(temp)-1;          memcpy( temp, dll_name, len );          temp[len] = 0;          dll_name = (const char*)temp;        }        for ( nn = 0; nn < num_names; nn++ )          fprintf( out, "++_%s.%s.%s\n", the_names[nn].name, dll_name,                        the_names[nn].name );      }      break;    default:  /* LIST */      for ( nn = 0; nn < num_names; nn++ )        fprintf( out, "%s\n", the_names[nn].name );  }}/* states of the line parser */typedef enum{  STATE_START = 0,  /* waiting for FT_EXPORT keyword and return type */  STATE_TYPE        /* type was read, waiting for function name      */} State;static intread_header_file( FILE*  file, int  verbose ){  static char  buff[ LINEBUFF_SIZE+1 ];  State        state = STATE_START;  while ( !feof( file ) )  {    char*  p;    if ( !fgets( buff, LINEBUFF_SIZE, file ) )      break;    p = buff;    while ( *p && (*p == ' ' || *p == '\\') )  /* skip leading whitespace */      p++;    if ( *p == '\n' || *p == '\r' )  /* skip empty lines */      continue;    switch ( state )    {      case STATE_START:        {          if ( memcmp( p, "FT_EXPORT(", 10 ) != 0 )            break;          p += 10;          for (;;)          {            if ( *p == 0 || *p == '\n' || *p == '\r' )              goto NextLine;            if ( *p == ')' )            {              p++;              break;            }            p++;          }          state = STATE_TYPE;         /* sometimes, the name is just after the FT_EXPORT(...), so          * skip whitespace, and fall-through if we find an alphanumeric          * character          */          while ( *p == ' ' || *p == '\t' )            p++;          if ( !isalpha(*p) )            break;        }        /* fall-through */      case STATE_TYPE:        {          char*   name = p;          while ( isalnum(*p) || *p == '_' )            p++;          if ( p > name )          {            if ( verbose )              fprintf( stderr, ">>> %.*s\n", p-name, name );            names_add( name, p );          }          state = STATE_START;        }        break;      default:        ;    }  NextLine:    ;  }  return 0;}static voidusage( void ){  static const char* const  format =   "%s %s: extract FreeType API names from header files\n\n"   "this program is used to extract the list of public FreeType API\n"   "functions. It receives the list of header files as argument and\n"   "generates a sorted list of unique identifiers\n\n"   "usage: %s header1 [options] [header2 ...]\n\n"   "options:   -      : parse the content of stdin, ignore arguments\n"   "           -v     : verbose mode, output sent to standard error\n"   "           -oFILE : write output to FILE instead of standard output\n"   "           -dNAME : indicate DLL file name, 'freetype.dll' by default\n"   "           -w     : output .DEF file for Visual C++ and Mingw\n"   "           -wB    : output .DEF file for Borland C++\n"   "           -wW    : output Watcom Linker Response File\n"   "\n";  fprintf( stderr,           format,           PROGRAM_NAME,           PROGRAM_VERSION,           PROGRAM_NAME           );  exit(1);}int  main( int argc, const char* const*  argv ){  int           from_stdin = 0;  int           verbose = 0;  OutputFormat  format = OUTPUT_LIST;  /* the default */  FILE*         out    = stdout;  const char*   library_name = NULL;  if ( argc < 2 )    usage();  /* '-' used as a single argument means read source file from stdin */  while ( argc > 1 && argv[1][0] == '-' )  {    const char*  arg = argv[1];    switch ( arg[1] )    {      case 'v':        verbose = 1;        break;      case 'o':        if ( arg[2] == 0 )        {          if ( argc < 2 )            usage();          arg = argv[2];          argv++;          argc--;        }        else          arg += 2;        out = fopen( arg, "wt" );        if ( out == NULL )        {          fprintf( stderr, "could not open '%s' for writing\n", argv[2] );          exit(3);        }        break;      case 'd':        if ( arg[2] == 0 )        {          if ( argc < 2 )            usage();          arg = argv[2];          argv++;          argc--;        }        else          arg += 2;        library_name = arg;        break;      case 'w':        format = OUTPUT_WINDOWS_DEF;        switch ( arg[2] )        {          case 'B':            format = OUTPUT_BORLAND_DEF;            break;          case 'W':            format = OUTPUT_WATCOM_LBC;            break;          case 0:            break;          default:            usage();        }        break;      case 0:        from_stdin = 1;        break;      default:        usage();    }    argc--;    argv++;  }  if ( from_stdin )  {    read_header_file( stdin, verbose );  }  else  {    for ( --argc, argv++; argc > 0; argc--, argv++ )    {      FILE*  file = fopen( argv[0], "rb" );      if ( file == NULL )        fprintf( stderr, "unable to open '%s'\n", argv[0] );      else      {        if ( verbose )          fprintf( stderr, "opening '%s'\n", argv[0] );        read_header_file( file, verbose );        fclose( file );      }    }  }  if ( num_names == 0 )    panic( "could not find exported functions !!\n" );  names_sort();  names_dump( out, format, library_name );  if ( out != stdout )    fclose( out );  return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久久久久漫画 | 欧美一区二区成人| 日韩一区二区三区av| 自拍偷拍欧美精品| 国产一区美女在线| 欧美日韩亚洲综合在线| 亚洲国产精品黑人久久久| 免费成人在线影院| 欧美美女网站色| 亚洲视频资源在线| 成人精品国产福利| 国产日韩欧美制服另类| 久久激情综合网| 欧美精品乱人伦久久久久久| 日韩理论电影院| 不卡av在线免费观看| 久久久久久**毛片大全| 免费观看在线综合色| 欧美三级电影精品| 亚洲综合在线第一页| 在线欧美日韩国产| 亚洲色图欧美激情| 99精品国产视频| 中文字幕欧美日本乱码一线二线| 国内成人精品2018免费看| 日韩视频一区二区三区 | 欧美日韩黄色影视| 亚洲国产日韩精品| 在线国产亚洲欧美| 亚洲自拍偷拍欧美| 3d动漫精品啪啪| 看国产成人h片视频| 欧美成人猛片aaaaaaa| 韩国精品一区二区| 国产无一区二区| 成人做爰69片免费看网站| 国产精品―色哟哟| 99久久精品国产一区| 一区二区三区日本| 欧美日韩精品专区| 国内不卡的二区三区中文字幕| 久久亚洲精华国产精华液 | 国产一区美女在线| 国产精品每日更新在线播放网址| 成人免费视频caoporn| 亚洲视频在线一区二区| 欧美图区在线视频| 精品综合免费视频观看| 国产精品久久夜| 在线视频欧美精品| 久久99国内精品| 国产精品乱码久久久久久| 91免费视频观看| 日本一不卡视频| 国产精品久久久久久久久免费相片| 色综合一个色综合| 理论片日本一区| 18欧美亚洲精品| 欧美日韩高清不卡| 国产福利91精品| 亚洲综合在线五月| 日韩欧美国产不卡| 色婷婷精品久久二区二区蜜臂av| 天天综合色天天| 日本一区二区三区四区| 欧美日韩免费电影| 成人h精品动漫一区二区三区| 首页国产丝袜综合| 国产精品久久三区| 日韩三级在线免费观看| 99精品视频在线播放观看| 久久精品免费看| 亚洲一区二区av在线| 国产日韩欧美精品一区| 69堂亚洲精品首页| 99精品视频一区二区三区| 老汉av免费一区二区三区| 亚洲综合色自拍一区| 国产日本欧洲亚洲| 日韩一级大片在线观看| 欧美怡红院视频| 成人免费看黄yyy456| 久久精品国产第一区二区三区| 亚洲麻豆国产自偷在线| 国产香蕉久久精品综合网| 欧美视频中文字幕| 91在线云播放| 成人免费观看视频| 久久99深爱久久99精品| 一区二区理论电影在线观看| 国产亲近乱来精品视频| 3d动漫精品啪啪1区2区免费| 欧美伊人久久久久久午夜久久久久| 国产成人综合自拍| 久久精品国产亚洲一区二区三区| 一区二区三区免费观看| 中文字幕一区二区在线播放| www国产精品av| 91麻豆精品国产91久久久使用方法| 91美女片黄在线| 99这里只有久久精品视频| 国产成人精品午夜视频免费| 国产在线精品免费| 精品一区免费av| 精品无人区卡一卡二卡三乱码免费卡| 亚洲国产精品一区二区www在线| 夜夜夜精品看看| 亚洲综合成人网| 香蕉影视欧美成人| 爽好久久久欧美精品| 五月激情六月综合| 日韩福利电影在线观看| 喷白浆一区二区| 免费观看在线色综合| 精品一区二区三区欧美| 久久精品国产澳门| 国产曰批免费观看久久久| 国产精品资源网站| 国产91精品免费| 91亚洲精品一区二区乱码| 99国内精品久久| 欧美性猛交xxxx乱大交退制版| 欧亚一区二区三区| 欧美精品少妇一区二区三区| 日韩三级伦理片妻子的秘密按摩| 欧美r级电影在线观看| 国产午夜一区二区三区| 日韩一区中文字幕| 亚洲国产精品尤物yw在线观看| 日韩精品91亚洲二区在线观看| 日本欧美大码aⅴ在线播放| 国内精品免费**视频| 本田岬高潮一区二区三区| 91网站在线观看视频| 欧美日韩国产大片| 久久亚洲一区二区三区四区| 亚洲视频中文字幕| 免费av网站大全久久| 国产成人精品免费| 91免费版在线看| 日韩一区二区三区免费看| 中文字幕欧美三区| 日韩精品成人一区二区在线| 国产99久久精品| 欧美性色黄大片| 国产日韩欧美制服另类| 夜夜精品视频一区二区 | 婷婷夜色潮精品综合在线| 韩国欧美国产1区| 色女孩综合影院| 精品国产人成亚洲区| 亚洲女厕所小便bbb| 麻豆精品一二三| 一本久久a久久免费精品不卡| 777xxx欧美| 最新成人av在线| 美女视频一区二区| 白白色 亚洲乱淫| 日韩一区二区三区免费看 | 综合久久一区二区三区| 免费人成精品欧美精品| 99久久精品费精品国产一区二区| 欧美一区二区三区色| 亚洲欧洲中文日韩久久av乱码| 精品一区二区三区在线播放视频| 99riav久久精品riav| 久久女同性恋中文字幕| 午夜精品福利在线| 91在线国产福利| 国产亚洲欧美日韩日本| 六月丁香婷婷久久| 欧美丰满美乳xxx高潮www| 国产欧美日韩卡一| 久色婷婷小香蕉久久| 欧美精三区欧美精三区| 一区二区三区丝袜| 色94色欧美sute亚洲13| 国产精品久久看| 国产精品911| 欧美成人一区二区三区片免费| 亚洲国产精品久久一线不卡| 99热国产精品| 国产精品女同一区二区三区| 国产精品99久久久| 久久色成人在线| 国产米奇在线777精品观看| 欧美成人一级视频| 精品影院一区二区久久久| 日韩欧美国产电影| 极品少妇xxxx偷拍精品少妇| 欧美一级精品大片| 蜜臀久久99精品久久久久久9| 欧美日韩国产大片| 青青草原综合久久大伊人精品优势 | 91国产免费观看| 尤物在线观看一区| 欧美在线观看18| 亚洲一区二区av在线| 欧美日韩国产精品成人| 五月天丁香久久|