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

📄 maketypes.awk

📁 gtk是linux一款强大的夸平台的图形化开发工具
💻 AWK
字号:
BEGIN {  type_name = "";	# GtkEnumType  type_macro = "";	# GTK_TYPE_ENUM_TYPE  type_ident = "";	# _gtk_enum_type  type_counter = 0;  gen_macros = 0;  gen_entries = 0;  gen_vars = 0;    for (i = 2; i < ARGC; i++)    {      if (ARGV[i] == "macros")	gen_macros = 1;      else if (ARGV[i] == "entries")	gen_entries = 1;      else if (ARGV[i] == "variables")	gen_vars = 1;      ARGV[i] = "";    }    if (gen_macros)    printf ("/* type macros, generated by maketypes.awk */\n\n");  else if (gen_entries)    printf ("/* type entries, generated by maketypes.awk */\n\n");  else if (gen_vars)    printf ("/* type variables, generated by maketypes.awk */\n\n");  else    {      printf ("hm? what do you want me to do?\n") > "/dev/stderr";      exit 1;    }}function set_type (set_type_1){  type_counter += 1;  type_name = set_type_1;  type_macro = "GTK_TYPE_";    tmp = type_name;# OK, the following is ridiculous, and sed s///g would be far easier  gsub ("[A-Z]", "@&", tmp);  gsub ("[^A-Z]@", "&_", tmp);  gsub ("@", "", tmp);  gsub ("[A-Z][A-Z][A-Z][0-9a-z]", "@&", tmp);  gsub ("@..", "&_", tmp);  gsub ("@", "", tmp);  type_macro = type_macro toupper (tmp);  type_ident = "_" tolower (tmp);  sub ("^GTK_TYPE_GTK_", "GTK_TYPE_", type_macro);}function generate (generate_1){  if (gen_macros)    {      printf ("extern GtkType %s;\n", type_macro);    }  if (gen_entries)    {      printf ("  { \"%s\", &%s,\n", type_name, type_macro);      if (generate_1 == "BOXED")	printf ("    GTK_TYPE_%s, NULL },\n", generate_1);      else	printf ("    GTK_TYPE_%s, %s_values },\n", generate_1, type_ident);    }  if (gen_vars)    {      printf ("GtkType %s = 0;\n", type_macro);    }}# skip scheme comments";" {  sub (";.*", "");}# parse keywords/\(define-enum/ {  if ($2 == "")    printf ("huh? define-enum keyword without arg?\n") > "/dev/stderr";  else    {      set_type($2);      generate("ENUM");    }}/\(define-flags/ {  if ($2 == "")    printf ("huh? define-flags keyword without arg?\n") > "/dev/stderr";  else    {      set_type($2);      generate("FLAGS");    }}/\(define-boxed/ {  if ($2 == "")    printf ("huh? define-boxed keyword without arg?\n") > "/dev/stderr";  else    {      set_type($2);      generate("BOXED");    }}END {  if (gen_macros)    printf("\n#define\tGTK_TYPE_NUM_BUILTINS\t(%u)\n", type_counter);}

⌨️ 快捷键说明

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