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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? header.pm

?? wireshark 0.99.7 最新源碼
?? PM
字號:
#################################################### create C header files for an IDL structure# Copyright tridge@samba.org 2000# Copyright jelmer@samba.org 2005# released under the GNU GPLpackage Parse::Pidl::Samba4::Header;use strict;use Parse::Pidl qw(fatal);use Parse::Pidl::Typelist qw(mapTypeName scalar_is_reference);use Parse::Pidl::Util qw(has_property is_constant unmake_str);use Parse::Pidl::Samba4 qw(is_intree ElementStars ArrayBrackets choose_header);use vars qw($VERSION);$VERSION = '0.01';my($res);my($tab_depth);sub pidl($) { $res .= shift; }sub tabs(){	my $res = "";	$res .="\t" foreach (1..$tab_depth);	return $res;}###################################################################### parse a properties listsub HeaderProperties($$){	my($props,$ignores) = @_;	my $ret = "";	foreach my $d (keys %{$props}) {		next if (grep(/^$d$/, @$ignores));		if($props->{$d} ne "1") {			$ret.= "$d($props->{$d}),";		} else {			$ret.="$d,";		}	}	if ($ret) {		pidl "/* [" . substr($ret, 0, -1) . "] */";	}}###################################################################### parse a structure elementsub HeaderElement($){	my($element) = shift;	pidl tabs();	if (has_property($element, "represent_as")) {		pidl mapTypeName($element->{PROPERTIES}->{represent_as})." ";	} else {		if (ref($element->{TYPE}) eq "HASH") {			HeaderType($element, $element->{TYPE}, $element->{TYPE}->{NAME});		} else {			HeaderType($element, $element->{TYPE}, "");		}		pidl " ".ElementStars($element);	}	pidl $element->{NAME};	pidl ArrayBrackets($element);	pidl ";";	if (defined $element->{PROPERTIES}) {		HeaderProperties($element->{PROPERTIES}, ["in", "out"]);	}	pidl "\n";}###################################################################### parse a structsub HeaderStruct($$){	my($struct,$name) = @_;	pidl "struct $name";	return if (not defined($struct->{ELEMENTS}));	pidl " {\n";	$tab_depth++;	my $el_count=0;	foreach (@{$struct->{ELEMENTS}}) {		HeaderElement($_);		$el_count++;	}	if ($el_count == 0) {		# some compilers can't handle empty structures		pidl tabs()."char _empty_;\n";	}	$tab_depth--;	pidl tabs()."}";	if (defined $struct->{PROPERTIES}) {		HeaderProperties($struct->{PROPERTIES}, []);	}}###################################################################### parse a enumsub HeaderEnum($$){	my($enum,$name) = @_;	my $first = 1;	pidl "#ifndef USE_UINT_ENUMS\n";	pidl "enum $name {\n";	$tab_depth++;	if (defined($enum->{ELEMENTS})) {		foreach my $e (@{$enum->{ELEMENTS}}) {			unless ($first) { pidl ",\n"; }			$first = 0;			pidl tabs();			pidl $e;		}	}	pidl "\n";	$tab_depth--;	pidl "}\n";	pidl "#else\n";	my $count = 0;	pidl "enum $name { __donnot_use_enum_$name=0x7FFFFFFF}\n";	my $with_val = 0;	my $without_val = 0;	if (defined($enum->{ELEMENTS})) {		foreach my $e (@{$enum->{ELEMENTS}}) {			my $t = "$e";			my $name;			my $value;			if ($t =~ /(.*)=(.*)/) {				$name = $1;				$value = $2;				$with_val = 1;				fatal($e->{ORIGINAL}, "you can't mix enum member with values and without values!")					unless ($without_val == 0);			} else {				$name = $t;				$value = $count++;				$without_val = 1;				fatal($e->{ORIGINAL}, "you can't mix enum member with values and without values!")					unless ($with_val == 0);			}			pidl "#define $name ( $value )\n";		}	}	pidl "#endif\n";}###################################################################### parse a bitmapsub HeaderBitmap($$){	my($bitmap,$name) = @_;	return unless defined($bitmap->{ELEMENTS});	pidl "/* bitmap $name */\n";	pidl "#define $_\n" foreach (@{$bitmap->{ELEMENTS}});	pidl "\n";}###################################################################### parse a unionsub HeaderUnion($$){	my($union,$name) = @_;	my %done = ();	pidl "union $name";	return if (not defined($union->{ELEMENTS}));	pidl " {\n";	$tab_depth++;	foreach my $e (@{$union->{ELEMENTS}}) {		if ($e->{TYPE} ne "EMPTY") {			if (! defined $done{$e->{NAME}}) {				HeaderElement($e);			}			$done{$e->{NAME}} = 1;		}	}	$tab_depth--;	pidl "}";	if (defined $union->{PROPERTIES}) {		HeaderProperties($union->{PROPERTIES}, []);	}}###################################################################### parse a typesub HeaderType($$$){	my($e,$data,$name) = @_;	if (ref($data) eq "HASH") {		($data->{TYPE} eq "ENUM") && HeaderEnum($data, $name);		($data->{TYPE} eq "BITMAP") && HeaderBitmap($data, $name);		($data->{TYPE} eq "STRUCT") && HeaderStruct($data, $name);		($data->{TYPE} eq "UNION") && HeaderUnion($data, $name);		return;	}	if (has_property($e, "charset")) {		pidl "const char";	} else {		pidl mapTypeName($e->{TYPE});	}}###################################################################### parse a typedefsub HeaderTypedef($){	my($typedef) = shift;	HeaderType($typedef, $typedef->{DATA}, $typedef->{NAME});}###################################################################### parse a constsub HeaderConst($){	my($const) = shift;	if (!defined($const->{ARRAY_LEN}[0])) {		pidl "#define $const->{NAME}\t( $const->{VALUE} )\n";	} else {		pidl "#define $const->{NAME}\t $const->{VALUE}\n";	}}sub ElementDirection($){	my ($e) = @_;	return "inout" if (has_property($e, "in") and has_property($e, "out"));	return "in" if (has_property($e, "in"));	return "out" if (has_property($e, "out"));	return "inout";}###################################################################### parse a functionsub HeaderFunctionInOut($$){	my($fn,$prop) = @_;	return unless defined($fn->{ELEMENTS});	foreach my $e (@{$fn->{ELEMENTS}}) {		HeaderElement($e) if (ElementDirection($e) eq $prop);	}}###################################################################### determine if we need an "in" or "out" sectionsub HeaderFunctionInOut_needed($$){	my($fn,$prop) = @_;	return 1 if ($prop eq "out" && defined($fn->{RETURN_TYPE}));	return undef unless defined($fn->{ELEMENTS});	foreach my $e (@{$fn->{ELEMENTS}}) {		return 1 if (ElementDirection($e) eq $prop);	}	return undef;}my %headerstructs;###################################################################### parse a functionsub HeaderFunction($){	my($fn) = shift;	return if ($headerstructs{$fn->{NAME}});	$headerstructs{$fn->{NAME}} = 1;	pidl "\nstruct $fn->{NAME} {\n";	$tab_depth++;	my $needed = 0;	if (HeaderFunctionInOut_needed($fn, "in") or	    HeaderFunctionInOut_needed($fn, "inout")) {		pidl tabs()."struct {\n";		$tab_depth++;		HeaderFunctionInOut($fn, "in");		HeaderFunctionInOut($fn, "inout");		$tab_depth--;		pidl tabs()."} in;\n\n";		$needed++;	}	if (HeaderFunctionInOut_needed($fn, "out") or	    HeaderFunctionInOut_needed($fn, "inout")) {		pidl tabs()."struct {\n";		$tab_depth++;		HeaderFunctionInOut($fn, "out");		HeaderFunctionInOut($fn, "inout");		if (defined($fn->{RETURN_TYPE})) {			pidl tabs().mapTypeName($fn->{RETURN_TYPE}) . " result;\n";		}		$tab_depth--;		pidl tabs()."} out;\n\n";		$needed++;	}	if (!$needed) {		# sigh - some compilers don't like empty structures		pidl tabs()."int _dummy_element;\n";	}	$tab_depth--;	pidl "};\n\n";}sub HeaderImport{	my @imports = @_;	foreach (@imports) {		s/\.idl\"$//;		s/^\"//;		pidl choose_header("librpc/gen_ndr/$_\.h", "gen_ndr/$_.h") . "\n";	}}sub HeaderInclude{	my @includes = @_;	foreach (@includes) {		pidl "#include $_\n";	}}###################################################################### parse the interface definitionssub HeaderInterface($){	my($interface) = shift;	pidl "#ifndef _HEADER_$interface->{NAME}\n";	pidl "#define _HEADER_$interface->{NAME}\n\n";	foreach my $c (@{$interface->{CONSTS}}) {		HeaderConst($c);	}	foreach my $t (@{$interface->{TYPES}}) {		HeaderTypedef($t) if ($t->{TYPE} eq "TYPEDEF");		HeaderStruct($t, $t->{NAME}) if ($t->{TYPE} eq "STRUCT");		HeaderUnion($t, $t->{NAME}) if ($t->{TYPE} eq "UNION");		HeaderEnum($t, $t->{NAME}) if ($t->{TYPE} eq "ENUM");		HeaderBitmap($t, $t->{NAME}) if ($t->{TYPE} eq "BITMAP");		pidl ";\n\n" if ($t->{TYPE} eq "BITMAP" or 				 $t->{TYPE} eq "STRUCT" or 				 $t->{TYPE} eq "TYPEDEF" or 				 $t->{TYPE} eq "UNION" or 				 $t->{TYPE} eq "ENUM");	}	foreach my $fn (@{$interface->{FUNCTIONS}}) {		HeaderFunction($fn);	}	pidl "#endif /* _HEADER_$interface->{NAME} */\n";}sub HeaderQuote($){	my($quote) = shift;	pidl unmake_str($quote->{DATA}) . "\n";}###################################################################### parse a parsed IDL into a C headersub Parse($){	my($ndr) = shift;	$tab_depth = 0;	$res = "";	%headerstructs = ();	pidl "/* header auto-generated by pidl */\n\n";	if (!is_intree()) {		pidl "#include <util/data_blob.h>\n";	}	pidl "#include <stdint.h>\n";	pidl "\n";	foreach (@{$ndr}) {		($_->{TYPE} eq "CPP_QUOTE") && HeaderQuote($_);		($_->{TYPE} eq "INTERFACE") && HeaderInterface($_);		($_->{TYPE} eq "IMPORT") && HeaderImport(@{$_->{PATHS}});		($_->{TYPE} eq "INCLUDE") && HeaderInclude(@{$_->{PATHS}});	}	return $res;}1;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
最新国产の精品合集bt伙计| 一本大道久久a久久精品综合| 欧美日韩成人高清| 夜夜揉揉日日人人青青一国产精品| 91免费看`日韩一区二区| 最新欧美精品一区二区三区| 91捆绑美女网站| 亚洲一区二区三区四区在线观看| 欧美午夜寂寞影院| 日韩1区2区日韩1区2区| 欧美岛国在线观看| 成人精品亚洲人成在线| 亚洲三级久久久| 欧美欧美午夜aⅴ在线观看| 日韩不卡一区二区| 国产午夜久久久久| 色综合久久久久久久久| 亚洲成av人**亚洲成av**| 91精品国产综合久久精品app| 欧洲av一区二区嗯嗯嗯啊| 一区二区三区欧美| 日韩欧美色综合网站| 国产+成+人+亚洲欧洲自线| 亚洲精品亚洲人成人网在线播放| 欧美日韩一区二区不卡| 激情综合一区二区三区| 国产精品久久久久影院老司| 欧美性一二三区| 国产一区二区在线视频| 亚洲欧美日韩系列| 日韩一区二区三区视频在线| 成人精品视频一区二区三区尤物| 一区二区三区不卡在线观看| 精品久久久久久久久久久院品网| 99久久国产免费看| 六月丁香综合在线视频| 1000部国产精品成人观看| 日韩午夜小视频| 91女厕偷拍女厕偷拍高清| 看片的网站亚洲| 一区二区三区欧美| 国产片一区二区| 欧美一区二区三区不卡| 97久久精品人人澡人人爽| 日日摸夜夜添夜夜添精品视频 | 97精品国产露脸对白| 天涯成人国产亚洲精品一区av| 久久久99精品免费观看| 777奇米四色成人影色区| 成人99免费视频| 国产最新精品免费| 亚洲.国产.中文慕字在线| 国产精品―色哟哟| 欧美精品一区二| 亚洲欧美激情视频在线观看一区二区三区| 91精品一区二区三区在线观看| 91亚洲午夜精品久久久久久| 经典一区二区三区| 日本不卡一二三| 亚洲高清不卡在线观看| 国产精品免费丝袜| 久久精品亚洲麻豆av一区二区| 91精品婷婷国产综合久久竹菊| 91久久精品网| 91免费看片在线观看| 成人动漫一区二区在线| 国产精品99久久久久久宅男| 日本欧洲一区二区| 日日噜噜夜夜狠狠视频欧美人| 一区二区三区四区中文字幕| 国产精品三级电影| 久久久久久久久久电影| 精品对白一区国产伦| 欧美一区二区三区在线电影| 欧美日韩高清在线| 欧美日韩免费不卡视频一区二区三区| 91丨九色丨国产丨porny| 92国产精品观看| 国产成人av电影免费在线观看| 久久91精品国产91久久小草| 麻豆成人av在线| 久久99精品久久只有精品| 久久99精品国产麻豆婷婷| 奇米精品一区二区三区在线观看| 日韩1区2区日韩1区2区| 美女脱光内衣内裤视频久久影院| 奇米一区二区三区av| 日本午夜精品视频在线观看| 日韩激情一二三区| 蜜臀久久99精品久久久久宅男| 久久国产精品第一页| 国精产品一区一区三区mba视频 | 狠狠色丁香久久婷婷综合丁香| 奇米777欧美一区二区| 裸体一区二区三区| 国产成人av一区二区三区在线 | 日韩高清在线电影| 老司机精品视频线观看86| 精品一区二区三区蜜桃| 国产不卡高清在线观看视频| 成人一区二区三区视频在线观看| 99国产欧美另类久久久精品| 色999日韩国产欧美一区二区| 欧美性生活久久| 精品少妇一区二区三区免费观看 | 国产精品一区二区三区99| 成人污污视频在线观看| 色乱码一区二区三区88| 欧美日韩成人一区二区| 久久久久久久久久久黄色| 国产精品视频九色porn| 午夜视频久久久久久| 久久99久久99| 色婷婷av一区二区三区大白胸| 欧美巨大另类极品videosbest | 日本不卡一区二区| 不卡av免费在线观看| 欧美精品一级二级三级| 久久久综合视频| 一区二区三区日韩在线观看| 日本va欧美va欧美va精品| 波多野结衣91| 欧美一区二区三区成人| 中文字幕一区二区不卡| 日本视频一区二区| 91亚洲大成网污www| 日韩欧美你懂的| 一区二区三区在线不卡| 国产一区二区三区久久久| 91黄色激情网站| 久久久午夜精品| 丝袜诱惑亚洲看片| av激情成人网| 精品成人一区二区| 亚洲成av人片在线| 99久久久久久| 久久久不卡网国产精品一区| 亚洲国产精品综合小说图片区| 成人性视频免费网站| 日韩欧美一区中文| 午夜亚洲福利老司机| av日韩在线网站| 国产免费成人在线视频| 久久国产福利国产秒拍| 欧美午夜在线一二页| 亚洲欧洲美洲综合色网| 国产一区二区三区免费在线观看| 69堂精品视频| 一区二区三区精品视频在线| av一二三不卡影片| 国产网站一区二区三区| 国模娜娜一区二区三区| 日韩午夜电影在线观看| 午夜精品久久久久久久久| jiyouzz国产精品久久| 国产日韩欧美综合一区| 精品一区二区日韩| 日韩一区二区电影在线| 日本不卡免费在线视频| 91麻豆精品国产自产在线观看一区 | 精品福利一区二区三区| 日韩一区欧美二区| 91精品一区二区三区在线观看| 亚洲国产一区视频| 欧美性大战久久| 午夜一区二区三区在线观看| 91福利国产成人精品照片| 伊人夜夜躁av伊人久久| 色欧美88888久久久久久影院| 亚洲欧美日本韩国| 色哟哟日韩精品| 亚洲综合区在线| 欧美日韩一级片在线观看| 亚洲成人激情综合网| 欧美美女喷水视频| 蜜臀久久久99精品久久久久久| 日韩美女在线视频| 国产激情一区二区三区四区 | jiyouzz国产精品久久| 亚洲欧洲日韩综合一区二区| 色综合夜色一区| 亚洲影视在线播放| 欧美一区二区久久久| 精品伊人久久久久7777人| 久久久久久久久岛国免费| 成人的网站免费观看| 亚洲精品中文在线观看| 欧美日韩精品二区第二页| 日本成人超碰在线观看| 精品国产凹凸成av人网站| 成人av免费在线观看| 一区二区免费在线| 3d成人动漫网站| 国产精品69毛片高清亚洲| 最好看的中文字幕久久| 4438x亚洲最大成人网| 国产一区福利在线| 亚洲免费在线电影| 日韩一区二区精品| eeuss鲁片一区二区三区在线看|