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

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

?? python.pm

?? samba最新軟件
?? PM
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
#################################################### Python function wrapper generator# Copyright jelmer@samba.org 2007-2008# released under the GNU GPLpackage Parse::Pidl::Samba4::Python;use Exporter;@ISA = qw(Exporter);use strict;use Parse::Pidl::Typelist qw(hasType resolveType getType mapTypeName expandAlias);use Parse::Pidl::Util qw(has_property ParseExpr);use Parse::Pidl::NDR qw(GetPrevLevel GetNextLevel ContainsDeferred is_charset_array);use Parse::Pidl::CUtil qw(get_value_of get_pointer_to);use Parse::Pidl::Samba4::Header qw(GenerateFunctionInEnv GenerateFunctionOutEnv EnvSubstituteValue GenerateStructEnv);use vars qw($VERSION);$VERSION = '0.01';sub new($) {	my ($class) = @_;	my $self = { res => "", res_hdr => "", tabs => "", constants => {},	             module_methods => [], module_objects => [], ready_types => [],			 	 readycode => [] };	bless($self, $class);}sub pidl_hdr ($$){	my $self = shift;	$self->{res_hdr} .= shift;}sub pidl($$){	my ($self, $d) = @_;	if ($d) {		$self->{res} .= $self->{tabs};		$self->{res} .= $d;	}	$self->{res} .= "\n";}sub indent($){	my ($self) = @_;	$self->{tabs} .= "\t";}sub deindent($){	my ($self) = @_;	$self->{tabs} = substr($self->{tabs}, 0, -1);}sub Import{	my $self = shift;	my @imports = @_;	foreach (@imports) {		s/\.idl\"$//;		s/^\"//;		$self->pidl_hdr("#include \"librpc/gen_ndr/py_$_\.h\"\n");	}}sub Const($$){    my ($self, $const) = @_;	$self->register_constant($const->{NAME}, $const->{DTYPE}, $const->{VALUE});}sub register_constant($$$$){	my ($self, $name, $type, $value) = @_;	$self->{constants}->{$name} = [$type, $value];}sub EnumAndBitmapConsts($$$){	my ($self, $name, $d) = @_;	return unless (defined($d->{ELEMENTS}));	foreach my $e (@{$d->{ELEMENTS}}) {		$e =~ /^([A-Za-z0-9_]+)/;		my $cname = $1;				$self->register_constant($cname, $d, $cname);	}}sub FromUnionToPythonFunction($$$$){	my ($self, $mem_ctx, $type, $switch, $name) = @_;	$self->pidl("PyObject *ret;");	$self->pidl("");	$self->pidl("switch ($switch) {");	$self->indent;	foreach my $e (@{$type->{ELEMENTS}}) {		$self->pidl("$e->{CASE}:");		$self->indent;		if ($e->{NAME}) {			$self->ConvertObjectToPython($mem_ctx, {}, $e, "$name->$e->{NAME}", "ret", "return NULL;");		} else {			$self->pidl("ret = Py_None;");		}		$self->pidl("return ret;");		$self->pidl("");		$self->deindent;	}	$self->deindent;	$self->pidl("}");	$self->pidl("PyErr_SetString(PyExc_TypeError, \"unknown union level\");");	$self->pidl("return NULL;");}sub FromPythonToUnionFunction($$$$$){	my ($self, $type, $typename, $switch, $mem_ctx, $name) = @_;	my $has_default = 0;	$self->pidl("$typename *ret = talloc_zero($mem_ctx, $typename);");	$self->pidl("switch ($switch) {");	$self->indent;	foreach my $e (@{$type->{ELEMENTS}}) {		$self->pidl("$e->{CASE}:");		if ($e->{CASE} eq "default") { $has_default = 1; }		$self->indent;		if ($e->{NAME}) {			$self->ConvertObjectFromPython({}, $mem_ctx, $e, $name, "ret->$e->{NAME}", "talloc_free(ret); return NULL;");		}		$self->pidl("break;");		$self->deindent;		$self->pidl("");	}	if (!$has_default) {		$self->pidl("default:");		$self->indent;		$self->pidl("PyErr_SetString(PyExc_TypeError, \"invalid union level value\");");		$self->pidl("talloc_free(ret);");		$self->pidl("ret = NULL;");		$self->deindent;	}	$self->deindent;	$self->pidl("}");	$self->pidl("");	$self->pidl("return ret;");}sub PythonStruct($$$$$$){	my ($self, $modulename, $prettyname, $name, $cname, $d) = @_;	my $env = GenerateStructEnv($d, "object");	$self->pidl("");	my $getsetters = "NULL";	if ($#{$d->{ELEMENTS}} > -1) {		foreach my $e (@{$d->{ELEMENTS}}) {			my $varname = "object->$e->{NAME}";			$self->pidl("static PyObject *py_$name\_get_$e->{NAME}(PyObject *obj, void *closure)");			$self->pidl("{");			$self->indent;			$self->pidl("$cname *object = py_talloc_get_ptr(obj);");			$self->pidl("PyObject *py_$e->{NAME};");			$self->ConvertObjectToPython("py_talloc_get_mem_ctx(obj)", $env, $e, $varname, "py_$e->{NAME}", "return NULL;");			$self->pidl("return py_$e->{NAME};");			$self->deindent;			$self->pidl("}");			$self->pidl("");			$self->pidl("static int py_$name\_set_$e->{NAME}(PyObject *py_obj, PyObject *value, void *closure)");			$self->pidl("{");			$self->indent;			$self->pidl("$cname *object = py_talloc_get_ptr(py_obj);");			my $mem_ctx = "py_talloc_get_mem_ctx(py_obj)";			my $l = $e->{LEVELS}[0];			my $nl = GetNextLevel($e, $l);			if ($l->{TYPE} eq "POINTER" and 				not ($nl->{TYPE} eq "ARRAY" and ($nl->{IS_FIXED} or is_charset_array($e, $nl))) and				not ($nl->{TYPE} eq "DATA" and Parse::Pidl::Typelist::scalar_is_reference($nl->{DATA_TYPE}))) {				$self->pidl("talloc_free($varname);");			}			$self->ConvertObjectFromPython($env, $mem_ctx, $e, "value", $varname, "return -1;");			$self->pidl("return 0;");			$self->deindent;			$self->pidl("}");			$self->pidl("");		}		$getsetters = "py_$name\_getsetters";		$self->pidl("static PyGetSetDef ".$getsetters."[] = {");		$self->indent;		foreach my $e (@{$d->{ELEMENTS}}) {			$self->pidl("{ discard_const_p(char, \"$e->{NAME}\"), py_$name\_get_$e->{NAME}, py_$name\_set_$e->{NAME} },");		}		$self->pidl("{ NULL }");		$self->deindent;		$self->pidl("};");		$self->pidl("");	}	$self->pidl("static PyObject *py_$name\_new(PyTypeObject *self, PyObject *args, PyObject *kwargs)");	$self->pidl("{");	$self->indent;	$self->pidl("$cname *ret = talloc_zero(NULL, $cname);");	$self->pidl("return py_talloc_import(&$name\_Type, ret);");	$self->deindent;	$self->pidl("}");	$self->pidl("");	my $py_methods = "NULL";	# If the struct is not public there ndr_pull/ndr_push functions will 	# be static so not callable from here	if (has_property($d, "public")) {		$self->pidl("static PyObject *py_$name\_ndr_pack(PyObject *py_obj)");		$self->pidl("{");		$self->indent;		$self->pidl("$cname *object = py_talloc_get_ptr(py_obj);");		$self->pidl("DATA_BLOB blob;");		$self->pidl("enum ndr_err_code err;");		$self->pidl("err = ndr_push_struct_blob(&blob, py_talloc_get_mem_ctx(py_obj), NULL, object, (ndr_push_flags_fn_t)ndr_push_$name);");		$self->pidl("if (err != NDR_ERR_SUCCESS) {");		$self->indent;		$self->pidl("PyErr_SetNdrError(err);");		$self->pidl("return NULL;");		$self->deindent;		$self->pidl("}");		$self->pidl("");		$self->pidl("return PyString_FromStringAndSize((char *)blob.data, blob.length);");		$self->deindent;		$self->pidl("}");		$self->pidl("");		$self->pidl("static PyObject *py_$name\_ndr_unpack(PyObject *py_obj, PyObject *args)");		$self->pidl("{");		$self->indent;		$self->pidl("$cname *object = py_talloc_get_ptr(py_obj);");		$self->pidl("DATA_BLOB blob;");		$self->pidl("enum ndr_err_code err;");		$self->pidl("if (!PyArg_ParseTuple(args, \"s#:__ndr_unpack__\", &blob.data, &blob.length))");		$self->pidl("\treturn NULL;");		$self->pidl("");		$self->pidl("err = ndr_pull_struct_blob_all(&blob, py_talloc_get_mem_ctx(py_obj), NULL, object, (ndr_pull_flags_fn_t)ndr_pull_$name);");		$self->pidl("if (err != NDR_ERR_SUCCESS) {");		$self->indent;		$self->pidl("PyErr_SetNdrError(err);");		$self->pidl("return NULL;");		$self->deindent;		$self->pidl("}");		$self->pidl("");		$self->pidl("return Py_None;");		$self->deindent;		$self->pidl("}");		$self->pidl("");		$py_methods = "py_$name\_methods";		$self->pidl("static PyMethodDef $py_methods\[] = {");		$self->indent;		$self->pidl("{ \"__ndr_pack__\", (PyCFunction)py_$name\_ndr_pack, METH_NOARGS, \"S.pack() -> blob\\nNDR pack\" },");		$self->pidl("{ \"__ndr_unpack__\", (PyCFunction)py_$name\_ndr_unpack, METH_VARARGS, \"S.unpack(blob) -> None\\nNDR unpack\" },");		$self->pidl("{ NULL, NULL, 0, NULL }");		$self->deindent;		$self->pidl("};");		$self->pidl("");	}	$self->pidl_hdr("PyAPI_DATA(PyTypeObject) $name\_Type;\n");	$self->pidl_hdr("#define $name\_Check(op) PyObject_TypeCheck(op, &$name\_Type)\n");	$self->pidl_hdr("#define $name\_CheckExact(op) ((op)->ob_type == &$name\_Type)\n");	$self->pidl_hdr("\n");	my $docstring = ($self->DocString($d, $name) or "NULL");	my $typeobject = "$name\_Type";	$self->pidl("PyTypeObject $typeobject = {");	$self->indent;	$self->pidl("PyObject_HEAD_INIT(NULL) 0,");	$self->pidl(".tp_name = \"$modulename.$prettyname\",");	$self->pidl(".tp_basicsize = sizeof(py_talloc_Object),");	$self->pidl(".tp_dealloc = py_talloc_dealloc,");	$self->pidl(".tp_getset = $getsetters,");	$self->pidl(".tp_repr = py_talloc_default_repr,");	$self->pidl(".tp_doc = $docstring,");	$self->pidl(".tp_methods = $py_methods,");	$self->pidl(".tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,");	$self->pidl(".tp_new = py_$name\_new,");	$self->deindent;	$self->pidl("};");	$self->pidl("");	return "&$typeobject";}sub get_metadata_var($){	my ($e) = @_;	sub get_var($) { my $x = shift; $x =~ s/\*//g; return $x; }	 if (has_property($e, "length_is")) {		return get_var($e->{PROPERTIES}->{length_is});	 } elsif (has_property($e, "size_is")) {		return get_var($e->{PROPERTIES}->{size_is});	 }	 return undef;}sub find_metadata_args($){	my ($fn) = @_;	my $metadata_args = { in => {}, out => {} };	# Determine arguments that are metadata for other arguments (size_is/length_is)	foreach my $e (@{$fn->{ELEMENTS}}) {		foreach my $dir (@{$e->{DIRECTION}}) {			 my $main = get_metadata_var($e);			 if ($main) { 				 $metadata_args->{$dir}->{$main} = $e->{NAME}; 			 }		 }	}	return $metadata_args;}sub PythonFunctionUnpackOut($$$){	my ($self, $fn, $fnname) = @_;	my $outfnname = "unpack_$fnname\_args_out";	my $signature = "";	my $metadata_args = find_metadata_args($fn);	my $env = GenerateFunctionOutEnv($fn, "r->");	my $result_size = 0;	$self->pidl("static PyObject *$outfnname(struct $fn->{NAME} *r)");	$self->pidl("{");	$self->indent;	$self->pidl("PyObject *result = Py_None;");	foreach my $e (@{$fn->{ELEMENTS}}) {		next unless (grep(/out/,@{$e->{DIRECTION}}));		next if (($metadata_args->{in}->{$e->{NAME}} and grep(/in/, @{$e->{DIRECTION}})) or 		         ($metadata_args->{out}->{$e->{NAME}}) and grep(/out/, @{$e->{DIRECTION}}));		$self->pidl("PyObject *py_$e->{NAME};");		$result_size++;	}	if ($fn->{RETURN_TYPE}) {		$result_size++ unless ($fn->{RETURN_TYPE} eq "WERROR" or $fn->{RETURN_TYPE} eq "NTSTATUS");	}	my $i = 0;	if ($result_size > 1) {		$self->pidl("result = PyTuple_New($result_size);");		$signature .= "(";	} elsif ($result_size == 0) {		$signature .= "None";	}	foreach my $e (@{$fn->{ELEMENTS}}) {		next if ($metadata_args->{out}->{$e->{NAME}});		my $py_name = "py_$e->{NAME}";		if (grep(/out/,@{$e->{DIRECTION}})) {			$self->ConvertObjectToPython("r", $env, $e, "r->out.$e->{NAME}", $py_name, "return NULL;");			if ($result_size > 1) {				$self->pidl("PyTuple_SetItem(result, $i, $py_name);");				$i++;				$signature .= "$e->{NAME}, ";			} else {				$self->pidl("result = $py_name;");				$signature .= $e->{NAME};			}		}	}	if (defined($fn->{RETURN_TYPE}) and $fn->{RETURN_TYPE} eq "NTSTATUS") {		$self->handle_ntstatus("r->out.result", "NULL", undef);	} elsif (defined($fn->{RETURN_TYPE}) and $fn->{RETURN_TYPE} eq "WERROR") {		$self->handle_werror("r->out.result", "NULL", undef);	} elsif (defined($fn->{RETURN_TYPE})) {		my $conv = $self->ConvertObjectToPythonData("r", $fn->{RETURN_TYPE}, "r->out.result");		if ($result_size > 1) {			$self->pidl("PyTuple_SetItem(result, $i, $conv);");

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久久影视| 韩国成人福利片在线播放| 欧美不卡在线视频| 色综合色综合色综合色综合色综合 | 欧美伊人精品成人久久综合97 | 男女视频一区二区| 亚洲精品视频免费看| 久久久久综合网| 欧美一区二区女人| 日本电影欧美片| 国产成人8x视频一区二区| 日本不卡不码高清免费观看| 亚洲欧洲制服丝袜| 亚洲国产精品成人综合色在线婷婷| 欧美老年两性高潮| 色综合久久88色综合天天6| 国产99久久久国产精品潘金| 美女视频一区在线观看| 亚洲成人一区在线| 一级精品视频在线观看宜春院| 国产欧美日韩中文久久| 精品国产制服丝袜高跟| 91精品国产黑色紧身裤美女| 91福利视频在线| 色综合久久久久久久| 成人97人人超碰人人99| 大美女一区二区三区| 韩国精品主播一区二区在线观看| 奇米色一区二区三区四区| 日韩主播视频在线| 午夜精品福利一区二区三区蜜桃| 亚洲一区二区三区小说| 悠悠色在线精品| 亚洲欧美日韩人成在线播放| 日韩理论片在线| 亚洲欧美自拍偷拍| 亚洲欧美二区三区| 亚洲综合小说图片| 天堂资源在线中文精品| 亚洲va在线va天堂| 视频一区欧美精品| 麻豆国产欧美一区二区三区| 久久99久久久欧美国产| 国产一区二区在线观看免费| 国内偷窥港台综合视频在线播放| 国产九九视频一区二区三区| 国产成人精品aa毛片| 成人激情小说网站| 色呦呦国产精品| 欧美精品 日韩| 精品久久国产老人久久综合| 精品剧情在线观看| 国产日产欧产精品推荐色| 国产精品久久久久国产精品日日| 亚洲欧洲一区二区在线播放| 伊人夜夜躁av伊人久久| 三级欧美在线一区| 国产主播一区二区| 91麻豆福利精品推荐| 欧日韩精品视频| 欧美一区二区播放| 国产色爱av资源综合区| 一区二区三区在线不卡| 免费精品视频最新在线| 成人免费毛片app| 在线视频中文字幕一区二区| 91精品国产综合久久久蜜臀粉嫩| 精品国产成人在线影院| 亚洲免费观看高清完整版在线观看| 亚洲国产精品久久久久婷婷884| 开心九九激情九九欧美日韩精美视频电影 | 精品va天堂亚洲国产| 国产精品传媒视频| 日韩精品一二区| 成人av免费在线观看| 欧美日韩国产一区| 国产亚洲欧美日韩俺去了| 亚洲精品欧美激情| 另类人妖一区二区av| 播五月开心婷婷综合| 欧美一区二区在线视频| 综合久久一区二区三区| 亚洲国产精品久久人人爱| 国产乱色国产精品免费视频| 欧美中文字幕一二三区视频| 久久久久久一二三区| 亚洲成人在线观看视频| 成人午夜碰碰视频| 91精品国产欧美一区二区18| 成人欧美一区二区三区白人| 奇米亚洲午夜久久精品| 色哟哟日韩精品| 国产婷婷色一区二区三区在线| 亚洲一区二区美女| 成人天堂资源www在线| 欧美一级搡bbbb搡bbbb| 亚洲三级理论片| 国产成人一级电影| 正在播放亚洲一区| 有码一区二区三区| 成人18视频在线播放| 欧美精品一区二区在线播放 | 一区二区三区欧美在线观看| 极品少妇xxxx偷拍精品少妇| 欧美亚男人的天堂| 国产精品拍天天在线| 久久99国产精品麻豆| 欧美日韩日日摸| 亚洲激情第一区| 不卡视频一二三| 国产日韩影视精品| 精品一区二区三区久久久| 欧美三级视频在线| 亚洲一级二级在线| 在线观看国产精品网站| 亚洲视频综合在线| 成人av在线一区二区| 久久久高清一区二区三区| 麻豆freexxxx性91精品| 91精品国产美女浴室洗澡无遮挡| 亚洲一二三四久久| 在线观看国产日韩| 一区二区三区加勒比av| 一本一道久久a久久精品综合蜜臀| 欧美激情中文字幕| 成人国产一区二区三区精品| 欧美国产1区2区| 成人精品免费网站| 国产精品视频一二| av电影天堂一区二区在线观看| 国产精品麻豆99久久久久久| 成人午夜免费av| 欧美激情中文不卡| youjizz久久| 亚洲日本va午夜在线电影| 一本色道久久综合精品竹菊| 亚洲欧美日韩久久| 欧美自拍偷拍午夜视频| 亚洲成精国产精品女| 欧美一区二区三区在线看 | 91丝袜美腿高跟国产极品老师 | 亚洲午夜电影网| 在线播放一区二区三区| 日本va欧美va精品发布| 欧美tk丨vk视频| 国产成人精品在线看| 亚洲图片另类小说| 欧美午夜电影在线播放| 日韩激情一区二区| 欧美电视剧免费观看| 国产福利一区在线观看| 亚洲色大成网站www久久九九| 色噜噜狠狠色综合欧洲selulu| 亚洲国产欧美在线| 欧美r级在线观看| 国产suv精品一区二区6| 亚洲女同女同女同女同女同69| 欧美日韩国产影片| 狠狠色丁香久久婷婷综合_中| 国产午夜精品理论片a级大结局| 不卡的av电影在线观看| 亚洲永久精品大片| 精品国产一区二区精华| 91网页版在线| 麻豆专区一区二区三区四区五区| 久久精品人人爽人人爽| 一本大道久久a久久精品综合| 婷婷激情综合网| 欧美经典一区二区| 在线观看国产91| 国产一区二区三区观看| 一区二区三区成人在线视频| 91精品国产综合久久婷婷香蕉| 国产99一区视频免费| 午夜精品福利一区二区蜜股av| 久久久久久久综合色一本| 欧洲一区二区三区在线| 国产美女视频一区| 亚洲地区一二三色| 国产精品美女久久久久久2018 | 久久午夜羞羞影院免费观看| 97成人超碰视| 欧美96一区二区免费视频| 亚洲欧洲日产国码二区| 日韩一级片在线播放| 91亚洲永久精品| 久久国产精品99久久人人澡| 一区二区三区色| 日本一区二区三级电影在线观看| 欧美精三区欧美精三区| 成人免费视频视频在线观看免费 | 欧美日韩精品系列| 懂色中文一区二区在线播放| 天天操天天干天天综合网| 国产精品美女久久福利网站| 日韩一区二区三区电影在线观看| 一本大道av一区二区在线播放| 精品一区二区在线视频| 性久久久久久久久久久久 | 激情图区综合网|