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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? parser.pm

?? wireshark 0.99.7 最新源碼
?? PM
?? 第 1 頁 / 共 5 頁
字號:
		if (ref($l->{DATA_TYPE}) eq "HASH") {			$t = "$l->{DATA_TYPE}->{TYPE}_$l->{DATA_TYPE}->{NAME}";		} else {			$t = $l->{DATA_TYPE};		}						# strings are passed by value rather than reference		if (not Parse::Pidl::Typelist::is_scalar($t) or 			Parse::Pidl::Typelist::scalar_is_reference($t)) {			$var_name = get_pointer_to($var_name);		}		my $ndr_flags = CalcNdrFlags($l, $primitives, $deferred);		$self->pidl("NDR_CHECK(ndr_push_$t($ndr, $ndr_flags, $var_name));");	} else {		$self->ParseTypePush($l->{DATA_TYPE}, $var_name, $primitives, $deferred);	}}sub CalcNdrFlags($$$){	my ($l,$primitives,$deferred) = @_;	my $scalars = 0;	my $buffers = 0;	# Add NDR_SCALARS if this one is deferred 	# and deferreds may be pushed	$scalars = 1 if ($l->{IS_DEFERRED} and $deferred);	# Add NDR_SCALARS if this one is not deferred and 	# primitives may be pushed	$scalars = 1 if (!$l->{IS_DEFERRED} and $primitives);		# Add NDR_BUFFERS if this one contains deferred stuff	# and deferreds may be pushed	$buffers = 1 if ($l->{CONTAINS_DEFERRED} and $deferred);	return "NDR_SCALARS|NDR_BUFFERS" if ($scalars and $buffers);	return "NDR_SCALARS" if ($scalars);	return "NDR_BUFFERS" if ($buffers);	return undef;}sub ParseMemCtxPullStart($$$$){	my ($self, $e, $l, $ptr_name) = @_;	my $mem_r_ctx = "_mem_save_$e->{NAME}_$l->{LEVEL_INDEX}";	my $mem_c_ctx = $ptr_name;	my $mem_c_flags = "0";	return if ($l->{TYPE} eq "ARRAY" and $l->{IS_FIXED});	if (($l->{TYPE} eq "POINTER") and ($l->{POINTER_TYPE} eq "ref")) {		my $nl = GetNextLevel($e, $l);		my $next_is_array = ($nl->{TYPE} eq "ARRAY");		my $next_is_string = (($nl->{TYPE} eq "DATA") and 					($nl->{DATA_TYPE} eq "string"));		if ($next_is_array or $next_is_string) {			return;		} else {			$mem_c_flags = "LIBNDR_FLAG_REF_ALLOC";		}	}	$self->pidl("$mem_r_ctx = NDR_PULL_GET_MEM_CTX(ndr);");	$self->pidl("NDR_PULL_SET_MEM_CTX(ndr, $mem_c_ctx, $mem_c_flags);");}sub ParseMemCtxPullEnd($$$){	my ($self, $e, $l) = @_;	my $mem_r_ctx = "_mem_save_$e->{NAME}_$l->{LEVEL_INDEX}";	my $mem_r_flags = "0";	return if ($l->{TYPE} eq "ARRAY" and $l->{IS_FIXED});	if (($l->{TYPE} eq "POINTER") and ($l->{POINTER_TYPE} eq "ref")) {		my $nl = GetNextLevel($e, $l);		my $next_is_array = ($nl->{TYPE} eq "ARRAY");		my $next_is_string = (($nl->{TYPE} eq "DATA") and 					($nl->{DATA_TYPE} eq "string"));		if ($next_is_array or $next_is_string) {			return;		} else {			$mem_r_flags = "LIBNDR_FLAG_REF_ALLOC";		}	}	$self->pidl("NDR_PULL_SET_MEM_CTX(ndr, $mem_r_ctx, $mem_r_flags);");}sub CheckStringTerminator($$$$$){	my ($self,$ndr,$e,$l,$length) = @_;	my $nl = GetNextLevel($e, $l);	# Make sure last element is zero!	$self->pidl("NDR_CHECK(ndr_check_string_terminator($ndr, $length, sizeof($nl->{DATA_TYPE}_t)));");}sub ParseElementPullLevel{	my($self,$e,$l,$ndr,$var_name,$env,$primitives,$deferred) = @_;	my $ndr_flags = CalcNdrFlags($l, $primitives, $deferred);	if ($l->{TYPE} eq "ARRAY" and ($l->{IS_VARYING} or $l->{IS_CONFORMANT})) {		$var_name = get_pointer_to($var_name);	}	# Only pull something if there's actually something to be pulled	if (defined($ndr_flags)) {		if ($l->{TYPE} eq "SUBCONTEXT") {			my $subndr = $self->ParseSubcontextPullStart($e, $l, $ndr, $env);			$self->ParseElementPullLevel($e, GetNextLevel($e,$l), $subndr, $var_name, $env, 1, 1);			$self->ParseSubcontextPullEnd($e, $l, $ndr, $env);		} elsif ($l->{TYPE} eq "ARRAY") {			my $length = $self->ParseArrayPullHeader($e, $l, $ndr, $var_name, $env);			my $nl = GetNextLevel($e, $l);			if (is_charset_array($e,$l)) {				if ($l->{IS_ZERO_TERMINATED}) {					$self->CheckStringTerminator($ndr, $e, $l, $length);				}				$self->pidl("NDR_CHECK(ndr_pull_charset($ndr, $ndr_flags, ".get_pointer_to($var_name).", $length, sizeof(" . mapTypeName($nl->{DATA_TYPE}) . "), CH_$e->{PROPERTIES}->{charset}));");				return;			} elsif (has_fast_array($e, $l)) {				if ($l->{IS_ZERO_TERMINATED}) {					$self->CheckStringTerminator($ndr,$e,$l,$length);				}				$self->pidl("NDR_CHECK(ndr_pull_array_$nl->{DATA_TYPE}($ndr, $ndr_flags, $var_name, $length));");				return;			}		} elsif ($l->{TYPE} eq "POINTER") {			$self->ParsePtrPull($e, $l, $ndr, $var_name);		} elsif ($l->{TYPE} eq "SWITCH") {			$self->ParseSwitchPull($e, $l, $ndr, $var_name, $env);		} elsif ($l->{TYPE} eq "DATA") {			$self->ParseDataPull($e, $l, $ndr, $var_name, $primitives, $deferred);		}	}	# add additional constructions	if ($l->{TYPE} eq "POINTER" and $deferred) {		if ($l->{POINTER_TYPE} ne "ref") {			$self->pidl("if ($var_name) {");			$self->indent;			if ($l->{POINTER_TYPE} eq "relative") {				$self->pidl("uint32_t _relative_save_offset;");				$self->pidl("_relative_save_offset = ndr->offset;");				$self->pidl("NDR_CHECK(ndr_pull_relative_ptr2(ndr, $var_name));");			}		}		$self->ParseMemCtxPullStart($e, $l, $var_name);		$var_name = get_value_of($var_name);		$self->ParseElementPullLevel($e, GetNextLevel($e,$l), $ndr, $var_name, $env, 1, 1);		$self->ParseMemCtxPullEnd($e,$l);		if ($l->{POINTER_TYPE} ne "ref") {    			if ($l->{POINTER_TYPE} eq "relative") {				$self->pidl("ndr->offset = _relative_save_offset;");			}			$self->deindent;			$self->pidl("}");		}	} elsif ($l->{TYPE} eq "ARRAY" and 			not has_fast_array($e,$l) and not is_charset_array($e, $l)) {		my $length = ParseExpr($l->{LENGTH_IS}, $env, $e->{ORIGINAL});		my $counter = "cntr_$e->{NAME}_$l->{LEVEL_INDEX}";		my $array_name = $var_name;		$var_name = $var_name . "[$counter]";		$self->ParseMemCtxPullStart($e, $l, $array_name);		if (($primitives and not $l->{IS_DEFERRED}) or ($deferred and $l->{IS_DEFERRED})) {			my $nl = GetNextLevel($e,$l);			if ($l->{IS_ZERO_TERMINATED}) {				$self->CheckStringTerminator($ndr,$e,$l,$length);			}			$self->pidl("for ($counter = 0; $counter < $length; $counter++) {");			$self->indent;			$self->ParseElementPullLevel($e, $nl, $ndr, $var_name, $env, 1, 0);			$self->deindent;			$self->pidl("}");		}		if ($deferred and ContainsDeferred($e, $l)) {			$self->pidl("for ($counter = 0; $counter < $length; $counter++) {");			$self->indent;			$self->ParseElementPullLevel($e,GetNextLevel($e,$l), $ndr, $var_name, $env, 0, 1);			$self->deindent;			$self->pidl("}");		}		$self->ParseMemCtxPullEnd($e, $l);	} elsif ($l->{TYPE} eq "SWITCH") {		$self->ParseElementPullLevel($e, GetNextLevel($e,$l), $ndr, $var_name, $env, $primitives, $deferred);	}}###################################################################### parse scalars in a structure element - pull sizesub ParseElementPull($$$$$$){	my($self,$e,$ndr,$env,$primitives,$deferred) = @_;	my $var_name = $env->{$e->{NAME}};	my $represent_name;	my $transmit_name;	return unless $primitives or ($deferred and ContainsDeferred($e, $e->{LEVELS}[0]));	if ($e->{REPRESENTATION_TYPE} ne $e->{TYPE}) {		$self->pidl("{");		$self->indent;		$represent_name = $var_name;		$transmit_name = "_transmit_$e->{NAME}";		$var_name = $transmit_name;		$self->pidl(mapTypeName($e->{TYPE})." $var_name;");	}	$var_name = append_prefix($e, $var_name);	$self->start_flags($e);	$self->ParseElementPullLevel($e,$e->{LEVELS}[0],$ndr,$var_name,$env,$primitives,$deferred);	$self->end_flags($e);	# Representation type is different from transmit_as	if ($e->{REPRESENTATION_TYPE} ne $e->{TYPE}) {		$self->pidl("NDR_CHECK(ndr_$e->{TYPE}_to_$e->{REPRESENTATION_TYPE}($transmit_name, ".get_pointer_to($represent_name)."));");		$self->deindent;		$self->pidl("}");	}}###################################################################### parse a pointer in a struct element or functionsub ParsePtrPull($$$$$){	my($self, $e,$l,$ndr,$var_name) = @_;	my $nl = GetNextLevel($e, $l);	my $next_is_array = ($nl->{TYPE} eq "ARRAY");	my $next_is_string = (($nl->{TYPE} eq "DATA") and 						 ($nl->{DATA_TYPE} eq "string"));	if ($l->{POINTER_TYPE} eq "ref") {		if ($l->{LEVEL} eq "EMBEDDED") {			$self->pidl("NDR_CHECK(ndr_pull_ref_ptr($ndr, &_ptr_$e->{NAME}));");		}		if (!$next_is_array and !$next_is_string) {			$self->pidl("if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {");			$self->pidl("\tNDR_PULL_ALLOC($ndr, $var_name);"); 			$self->pidl("}");		}				return;	} elsif (($l->{POINTER_TYPE} eq "unique") or 		 ($l->{POINTER_TYPE} eq "relative") or		 ($l->{POINTER_TYPE} eq "full")) {		$self->pidl("NDR_CHECK(ndr_pull_generic_ptr($ndr, &_ptr_$e->{NAME}));");		$self->pidl("if (_ptr_$e->{NAME}) {");		$self->indent;	} else {		die("Unhandled pointer type $l->{POINTER_TYPE}");	}	# Don't do this for arrays, they're allocated at the actual level 	# of the array	unless ($next_is_array or $next_is_string) { 		$self->pidl("NDR_PULL_ALLOC($ndr, $var_name);"); 	} else {		# FIXME: Yes, this is nasty.		# We allocate an array twice		# - once just to indicate that it's there,		# - then the real allocation...		$self->pidl("NDR_PULL_ALLOC($ndr, $var_name);");	}	#$self->pidl("memset($var_name, 0, sizeof($var_name));");	if ($l->{POINTER_TYPE} eq "relative") {		$self->pidl("NDR_CHECK(ndr_pull_relative_ptr1($ndr, $var_name, _ptr_$e->{NAME}));");	}	$self->deindent;	$self->pidl("} else {");	$self->pidl("\t$var_name = NULL;");	$self->pidl("}");}sub ParseStructPushPrimitives($$$$){	my ($self, $struct, $varname, $env) = @_;	# see if the structure contains a conformant array. If it	# does, then it must be the last element of the structure, and	# we need to push the conformant length early, as it fits on	# the wire before the structure (and even before the structure	# alignment)	if (defined($struct->{SURROUNDING_ELEMENT})) {		my $e = $struct->{SURROUNDING_ELEMENT};		if (defined($e->{LEVELS}[0]) and 			$e->{LEVELS}[0]->{TYPE} eq "ARRAY") {			my $size;						if ($e->{LEVELS}[0]->{IS_ZERO_TERMINATED}) {				if (has_property($e, "charset")) {					$size = "ndr_charset_length($varname->$e->{NAME}, CH_$e->{PROPERTIES}->{charset})";				} else {					$size = "ndr_string_length($varname->$e->{NAME}, sizeof(*$varname->$e->{NAME}))";				}			} else {				$size = ParseExpr($e->{LEVELS}[0]->{SIZE_IS}, $env, $e->{ORIGINAL});			}			$self->pidl("NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, $size));");		} else {			$self->pidl("NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_string_array_size(ndr, $varname->$e->{NAME})));");		}	}	$self->pidl("NDR_CHECK(ndr_push_align(ndr, $struct->{ALIGN}));");	if (defined($struct->{PROPERTIES}{relative_base})) {		# set the current offset as base for relative pointers		# and store it based on the toplevel struct/union		$self->pidl("NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, $varname, ndr->offset));");	}	$self->ParseElementPush($_, "ndr", $env, 1, 0) foreach (@{$struct->{ELEMENTS}});}sub ParseStructPushDeferred($$$){	my ($self, $struct, $varname, $env) = @_;	if (defined($struct->{PROPERTIES}{relative_base})) {		# retrieve the current offset as base for relative pointers		# based on the toplevel struct/union		$self->pidl("NDR_CHECK(ndr_push_setup_relative_base_offset2(ndr, $varname));");	}	$self->ParseElementPush($_, "ndr", $env, 0, 1) foreach (@{$struct->{ELEMENTS}});}###################################################################### parse a structsub ParseStructPush($$$){	my ($self, $struct, $varname) = @_;		return unless defined($struct->{ELEMENTS});	my $env = GenerateStructEnv($struct, $varname);	EnvSubstituteValue($env, $struct);	$self->DeclareArrayVariables($_) foreach (@{$struct->{ELEMENTS}});	$self->start_flags($struct);	$self->pidl("if (ndr_flags & NDR_SCALARS) {");	$self->indent;	$self->ParseStructPushPrimitives($struct, $varname, $env);	$self->deindent;	$self->pidl("}");	$self->pidl("if (ndr_flags & NDR_BUFFERS) {");	$self->indent;	$self->ParseStructPushDeferred($struct, $varname, $env);	$self->deindent;	$self->pidl("}");	$self->end_flags($struct);}###################################################################### generate a push function for an enumsub ParseEnumPush($$$){	my($self,$enum,$varname) = @_;	my($type_fn) = $enum->{BASE_TYPE};	$self->start_flags($enum);	$self->pidl("NDR_CHECK(ndr_push_$type_fn(ndr, NDR_SCALARS, $varname));");	$self->end_flags($enum);}###################################################################### generate a pull function for an enumsub ParseEnumPull($$$){	my($self,$enum,$varname) = @_;	my($type_fn) = $enum->{BASE_TYPE};	my($type_v_decl) = mapTypeName($type_fn);	$self->pidl("$type_v_decl v;");	$self->start_flags($enum);	$self->pidl("NDR_CHECK(ndr_pull_$type_fn(ndr, NDR_SCALARS, &v));");	$self->pidl("*$varname = v;");	$self->end_flags($enum);}###################################################################### generate a print function for an enumsub ParseEnumPrint($$$$){	my($self,$enum,$name,$varname) = @_;	$self->pidl("const char *val = NULL;");	$self->pidl("");	$self->start_flags($enum);	$self->pidl("switch ($varname) {");	$self->indent;	my $els = \@{$enum->{ELEMENTS}};	foreach my $i (0 .. $#{$els}) {		my $e = ${$els}[$i];		chomp $e;		if ($e =~ /^(.*)=/) {			$e = $1;		}		$self->pidl("case $e: val = \"$e\"; break;");	}	$self->deindent;	$self->pidl("}");		$self->pidl("ndr_print_enum(ndr, name, \"$enum->{TYPE}\", val, $varname);");	$self->end_flags($enum);}sub DeclEnum($$$$){	my ($e,$t,$name,$varname) = @_;	return "enum $name " . 		($t eq "pull"?"*":"") . $varname;}$typefamily{ENUM} = {	DECL => \&DeclEnum,	PUSH_FN_BODY => \&ParseEnumPush,	PULL_FN_BODY => \&ParseEnumPull,	PRINT_FN_BODY => \&ParseEnumPrint,};###################################################################### generate a push function for a bitmapsub ParseBitmapPush($$$){	my($self,$bitmap,$varname) = @_;	my($type_fn) = $bitmap->{BASE_TYPE};	$self->start_flags($bitmap);	$self->pidl("NDR_CHECK(ndr_push_$type_fn(ndr, NDR_SCALARS, $varname));");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu久久天堂性欧美| 亚洲精品亚洲人成人网| 亚洲人成精品久久久久| 青青青爽久久午夜综合久久午夜| 成人精品免费看| 精品成人一区二区三区四区| 亚洲一区二区精品视频| 99久久久无码国产精品| 国产欧美综合色| 青青草精品视频| 欧美日韩国产高清一区二区三区 | 伊人一区二区三区| 国产一区二区三区av电影| 欧美电影在哪看比较好| 夜夜精品浪潮av一区二区三区| 成人午夜看片网址| 国产清纯白嫩初高生在线观看91| 久久国产精品免费| 日韩午夜小视频| 日韩电影在线一区二区| 欧美日韩日日夜夜| 亚洲1区2区3区视频| 欧美四级电影网| 亚洲精选视频免费看| av高清不卡在线| 国产精品少妇自拍| www.99精品| 亚洲婷婷国产精品电影人久久| 成人av动漫在线| 国产精品超碰97尤物18| 成人av动漫网站| 国产精品福利一区| 99精品久久99久久久久| 亚洲色图在线视频| 在线免费观看日本一区| 一区二区三区四区在线播放| 欧美在线不卡视频| 丝袜亚洲另类欧美综合| 91精品国产免费久久综合| 久久精品国产一区二区三| 精品国产99国产精品| 国产91精品一区二区| 中文字幕一区av| 欧美在线不卡视频| 强制捆绑调教一区二区| xnxx国产精品| 成人自拍视频在线| 亚洲精品一二三区| 91精品欧美久久久久久动漫| 麻豆传媒一区二区三区| 欧美激情一区二区三区不卡| 91麻豆精品在线观看| 视频一区视频二区中文字幕| 精品国产乱码久久久久久1区2区| 国产成人免费在线观看不卡| 最近中文字幕一区二区三区| 欧美日韩精品一区二区三区四区| 久久精品国内一区二区三区| 国产精品天干天干在观线| 色八戒一区二区三区| 麻豆精品视频在线观看免费| 国产精品久久久久久亚洲毛片| 欧美无人高清视频在线观看| 国产一区不卡精品| 亚洲午夜视频在线观看| 2020国产成人综合网| 一本色道亚洲精品aⅴ| 蜜桃一区二区三区在线观看| 1000精品久久久久久久久| 欧美日韩激情一区| 成人黄色av电影| 免费成人在线播放| 亚洲精品日产精品乱码不卡| 欧美成人猛片aaaaaaa| 91污片在线观看| 国产在线播精品第三| 亚洲成人免费电影| 国产精品全国免费观看高清| 91精品一区二区三区在线观看| eeuss鲁片一区二区三区| 久久疯狂做爰流白浆xx| 一区二区三区四区激情| 久久久精品国产免大香伊| 欧美午夜在线观看| voyeur盗摄精品| 国产在线精品一区二区不卡了 | 五月婷婷激情综合网| 国产蜜臀97一区二区三区| 欧美精品第1页| 91福利精品第一导航| 国产成a人无v码亚洲福利| 免费成人小视频| 亚洲bt欧美bt精品777| 亚洲男人的天堂一区二区| 国产日韩欧美综合在线| 精品国产一区久久| 欧美精品xxxxbbbb| 欧美色窝79yyyycom| 91免费看片在线观看| 国产成a人亚洲精品| 国产一区二区三区四区在线观看| 青青草原综合久久大伊人精品优势| 一区二区三区不卡视频在线观看| 国产精品盗摄一区二区三区| 亚洲国产高清不卡| 国产三级精品在线| 国产欧美日韩在线| 国产午夜亚洲精品羞羞网站| 2023国产精品自拍| 久久精品视频免费| 久久精品亚洲一区二区三区浴池 | 久久国产欧美日韩精品| 天天综合网 天天综合色| 一区二区免费看| 亚洲成人在线网站| 亚洲午夜一二三区视频| 香蕉久久一区二区不卡无毒影院| 一级日本不卡的影视| 亚洲午夜av在线| 亚洲超丰满肉感bbw| 日韩精品欧美精品| 久99久精品视频免费观看| 精品在线视频一区| 国产精品 欧美精品| 成人一区二区三区视频| aaa欧美大片| 91福利社在线观看| 日韩一区二区三区在线观看| 欧美电影精品一区二区| 国产欧美日韩视频一区二区 | 久久久欧美精品sm网站| 久久久国际精品| 中文字幕在线观看不卡| 亚洲精品老司机| 天堂在线亚洲视频| 国产精品99久久久久久宅男| kk眼镜猥琐国模调教系列一区二区| 91麻豆视频网站| 日韩一本二本av| 欧美激情在线一区二区| 亚洲综合在线免费观看| 免费观看在线色综合| 高清视频一区二区| 在线观看区一区二| 精品日韩一区二区三区| 亚洲欧洲中文日韩久久av乱码| 丝袜美腿成人在线| 国产精品一区二区你懂的| 色94色欧美sute亚洲线路一久 | 亚洲国产成人午夜在线一区| 亚洲最大成人综合| 韩国女主播一区| 91色porny在线视频| 精品国产区一区| 一区二区日韩电影| 国产精品亚洲а∨天堂免在线| 在线视频你懂得一区二区三区| 精品88久久久久88久久久| 亚洲欧美视频在线观看视频| 韩国v欧美v亚洲v日本v| 欧美亚一区二区| 国产精品网站在线| 六月丁香综合在线视频| 91福利在线观看| 日本一区二区三级电影在线观看 | 亚洲欧洲成人精品av97| 卡一卡二国产精品 | 91猫先生在线| 久久久蜜桃精品| 免费人成在线不卡| 欧美羞羞免费网站| 国产精品超碰97尤物18| 国产伦精品一区二区三区视频青涩| 欧美日韩一区二区三区四区五区 | 精品国产凹凸成av人导航| 亚洲福利电影网| 一本大道久久a久久综合婷婷| 国产性做久久久久久| 另类小说欧美激情| 欧美精品久久天天躁| 亚洲人成在线播放网站岛国| 国产成a人亚洲精品| 久久久综合九色合综国产精品| 视频一区欧美日韩| 欧美欧美午夜aⅴ在线观看| 一区在线观看视频| 懂色一区二区三区免费观看| 久久久蜜臀国产一区二区| 国模一区二区三区白浆| 日韩欧美激情一区| 麻豆精品久久久| 日韩一区国产二区欧美三区| 日韩成人精品在线观看| 欧美伦理电影网| 视频一区欧美日韩| 日韩一区二区免费在线电影| 毛片av一区二区三区| 欧美sm极限捆绑bd| 国产一区二区三区美女| 国产午夜亚洲精品理论片色戒|