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

📄 makeenums.awk

📁 gtk是linux一款强大的夸平台的图形化开发工具
💻 AWK
字号:
BEGIN {  type_name = "";	# GtkEnumType  type_macro = "";	# GTK_TYPE_ENUM_TYPE  type_ident = "";	# _gtk_enum_type  type_flags = 0;  type_counter = 0;  delete value_names;	# GTK_ENUM_VALUE  delete value_nicks;	# enum-value  VI = 0;  gen_arrays = 0;  gen_defs = 0;  comment_file = "";    for (i = 1; i < ARGC; i++)    {      if (ARGV[i] == "arrays")	gen_arrays = 1;      else if (ARGV[i] == "defs")	gen_defs = 1;      ARGV[i] = "";    }    if (gen_arrays)    printf ("/* generated by makeenums.awk */\n\n");  else if (gen_defs)    printf (";; generated by makeenums.awk  ; -*- scheme -*-\n\n");  else    {      printf ("hm? what do you want me to do?\n") > "/dev/stderr";      exit 1;    }}function set_type (set_type_1){  type_name = set_type_1;  type_macro = "GTK_TYPE";  type_ident = "";  for (i = 0; i < length (type_name); i++)    {      ch = substr (type_name, i + 1, 1);      Ch = toupper (ch);      if (Ch == ch)	{	  type_macro = type_macro "_" Ch;	  type_ident = type_ident "_" tolower (ch);	}      else	{	  type_macro = type_macro Ch;	  type_ident = type_ident ch;	}    }}function set_value (set_value_1, set_value_2){  value_names[VI] = set_value_1;  value_nicks[VI] = tolower (set_value_2);  while (match (value_nicks[VI], "_"))    sub ("_", "-", value_nicks[VI]);}function generate_arrays (){  if (gen_arrays)    {      printf ("static GtkEnumValue %s_values[] = {\n", type_ident);      for (i = 0; i < VI; i++)	{	  printf ("  { %s, \"%s\", \"%s\" },\n",		  value_names[i], value_names[i], value_nicks[i]);	}      printf ("  { 0, NULL, NULL }\n");      printf ("};\n");    }}function generate_defs (){  if (gen_defs)    {      if (comment_file != "")	{	  printf ("\n; enumerations from \"%s\"\n", comment_file);	  comment_file = "";	}            printf ("\n(define-%s %s",	      type_flags ? "flags" : "enum",	      type_name);      for (i = 0; i < VI; i++)	{	  printf ("\n  (%s %s)",		  value_nicks[i], value_names[i]);	}      printf (")\n");    }}function basename (basename_1){  sub ("\"", "", basename_1);  while (match (basename_1, "/"))    sub (".*/", "", basename_1);  sub ("\"", "", basename_1);  return basename_1;}# parse keywords/G_ENUM_E/ {  if ($3 != "+" || $5 != "+")    printf ("huh? G_ENUM_E keyword without arg?\n") > "/dev/stderr";  else    set_type($4);  type_flags = 0;  generate_defs();  generate_arrays();  VI = 0;}/G_ENUM_F/ {  if ($3 != "+" || $5 != "+")    printf ("huh? G_ENUM_F keyword without arg?\n") > "/dev/stderr";  else    set_type($4);  type_flags = 1;  generate_defs();  generate_arrays();  VI = 0;}/G_ENUM_V/ {  if ($2 != "+" || $4 != "+" || $6 != "+")    printf ("huh? G_ENUM_V keyword without arg?\n") > "/dev/stderr";  else    set_value($3, $5);  VI += 1;}# feature per file comments/# / {  comment_file = basename($3);}END {  printf("\n");}

⌨️ 快捷键说明

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