fixmidlheaders.pl
来自「linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自Web」· PL 代码 · 共 77 行
PL
77 行
#! /usr/bin/perl -w# Copyright (C) 2007 Apple Inc. All rights reserved.## Redistribution and use in source and binary forms, with or without# modification, are permitted provided that the following conditions# are met:## 1. Redistributions of source code must retain the above copyright# notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright# notice, this list of conditions and the following disclaimer in the# documentation and/or other materials provided with the distribution. # 3. Neither the name of Apple puter, Inc. ("Apple") nor the names of# its contributors may be used to endorse or promote products derived# from this software without specific prior written permission. ## THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.# This script cleans up the headers that MIDL (Microsoft's IDL Parser/Generator)# outputs to only #include the parent interface avoiding circular dependencies# that MIDL creates.use File::Find;use strict;use warnings;my $dir = $ARGV[0];$dir = `cygpath -u '$dir'`;chomp($dir);find(\&finder, $dir);sub finder{ my $fileName = $_; return unless ($fileName =~ /IGEN_DOM(.*)\.h/); open(IN, "<", $fileName); my @contents = <IN>; close(IN); open(OUT, ">", $fileName); my $state = 0; foreach my $line (@contents) { if ($line =~ /^\/\* header files for imported files \*\//) { $state = 1; } elsif ($line =~ /^#include "oaidl\.h"/) { die "#include \"oaidl.h\" did not come second" if $state != 1; $state = 2; } elsif ($line =~ /^#include "ocidl\.h"/) { die "#include \"ocidl.h\" did not come third" if $state != 2; $state = 3; } elsif ($line =~ /^#include "IGEN_DOM/ && $state == 3) { $state = 4; } elsif ($line =~ /^#include "(IGEN_DOM.*)\.h"/ && $state == 4) { next; } print OUT $line; } close(OUT);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?