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

📄 tag_dll.awk

📁 sip协议栈
💻 AWK
字号:
#! /usr/bin/env awk## Create reference tags and WIN32 initialization functions for tags.## --------------------------------------------------------------------## This file is part of the Sofia-SIP package## Copyright (C) 2005 Nokia Corporation.## Contact: Pekka Pessi <pekka.pessi@nokia.com>## This library is free software; you can redistribute it and/or# modify it under the terms of the GNU Lesser General Public License# as published by the Free Software Foundation; either version 2.1 of# the License, or (at your option) any later version.## This 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# Lesser General Public License for more details.## You should have received a copy of the GNU Lesser General Public# License along with this library; if not, write to the Free Software# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA# 02110-1301 USA## --------------------------------------------------------------------## Author: Pekka Pessi <Pekka.Pessi@nokia.com>## Created: Tue Feb 26 14:11:25 2002 ppessi#BEGIN {  DEFS = 0;  HEADER = 1;}HEADER {  HEADER = 0;  if (OUTNAME != "") {    fn = OUTNAME;  } else {    fn = FILENAME;  }  DLL = fn;  sub(/[.]c(at)?/, "_dll.c", DLL);  if (NODLL) DLL = "/dev/null";  base = fn;  sub(/.*\//, "", base);  printf("#ifdef _WIN32\n"\	 "/*\n" \	 " * PLEASE NOTE: \n" \	 " * \n" \	 " * This file is automatically generated by tag_dll.awk.\n"\	 " * It contains magic required by Win32 DLLs to initialize\n"\	 " * tag_typedef_t variables.\n"\	 " * \n"\	 " * Do not, repeat, do not edit this file. Edit '%s' instead.\n"\	 " * \n"\	 " */\n\n"\	 "#define EXPORT __declspec(dllexport)\n\n", base) > DLL;  if (DLLREF) {    print \      "#include \"config.h\"\n\n" \      "#include <sofia-sip/su_tag_class.h>\n\n" > DLL;  }  REF = fn;  sub(/[.]c(at)?/, "_ref.c", REF);  printf("/*\n" \	 " * PLEASE NOTE: \n" \	 " * \n" \	 " * This file is automatically generated by tag_dll.awk.\n"\	 " * It contains tag_typedef_t for tag references.\n"\	 " * \n"\	 " * Do not, repeat, do not edit this file. Edit '%s' instead.\n"\	 " * \n"\	 " */\n\n"\	 "#include \"config.h\"\n\n"\	 "#include <sofia-sip/su_tag_class.h>\n"\	 "\n"\	 "#ifdef _WIN32\n"\	 "#define EXPORT __declspec(dllexport)\n"\	 "#else\n"\	 "#define EXPORT\n"\	 "#endif\n\n",	 base) > REF;  if (LIST) {    print "#include <stddef.h>" >REF;  }  print "" > REF;}/^#define TAG_NAMESPACE/ {   print "#undef TAG_NAMESPACE" > REF;   print $0 > REF;   print "" > REF;  print "#undef TAG_NAMESPACE" > DLL;   print $0 > DLL;   print "" > DLL;}!DEFS && /^tag_typedef_t/ { DEFS = 1; }DEFS && /tag_typedef_t/ {  tag = $2;  typedefs[tag] = $0;  if ($0 !~ /NSTAG_TYPEDEF/) {    print "extern tag_typedef_t "tag";" > REF;    print "EXPORT tag_typedef_t "tag"_ref;" > DLL;    print "EXPORT tag_typedef_t "tag"_ref = \n  REFTAG_TYPEDEF("tag");" > REF;  }  gsub(/ = .*$/, ";");}!DLLREF { print $0 > DLL; }END {  if (LIST) {    print "\nEXPORT tag_type_t " LIST "[] =\n{" > REF;    print "\nEXPORT tag_type_t " LIST "[] =\n{" > DLL;     for (tag in typedefs) {      if (typedefs[tag] !~ /NSTAG_TYPEDEF/) {        print "  " tag "," > REF;        print "  " tag "," > DLL;      }    }    print "  NULL\n};" > REF;    print "  NULL\n};" > DLL;  }  printf("\n" \	 "#include <windows.h>\n"\	 "\n"\	 "BOOL WINAPI DllMain(HINSTANCE hInst, DWORD fwdReason, LPVOID fImpLoad)\n"\	 "{\n") > DLL;   for (tag in typedefs) {     def = typedefs[tag];     if (!DLLREF) {       sub(/^tag_typedef_t /, "  tag_typedef_t _", def);       print def > DLL;     }     else {       print "  extern tag_typedef_t "tag";" > DLL;     }     print "  tag_typedef_t _"tag"_ref =\n    REFTAG_TYPEDEF("tag");" > DLL;   }   print "" > DLL;   for (tag in typedefs) {     if (!DLLREF) {       print "  *(struct tag_type_s *)" tag " = *_" tag ";" > DLL;     }     print "  *(struct tag_type_s *)" tag "_ref = *_" tag "_ref;" > DLL;   }   print "\n  return TRUE;" > DLL;   print "}" > DLL;   print "\n#endif" > DLL;}

⌨️ 快捷键说明

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