ic_java_type.erl

来自「OTP是开放电信平台的简称」· ERL 代码 · 共 1,212 行 · 第 1/3 页

ERL
1,212
字号
		'tk_short' ->		    ?ERLANGPACKAGE ++ "OtpErlangLong";				'tk_long' ->		    ?ERLANGPACKAGE ++ "OtpErlangLong";		'tk_longlong' ->                        %% LLONG		    ?ERLANGPACKAGE ++ "OtpErlangLong";				'tk_float' ->		    ?ERLANGPACKAGE ++ "OtpErlangDouble";				'tk_double' ->		    ?ERLANGPACKAGE ++ "OtpErlangDouble";				'tk_boolean' ->		    ?ERLANGPACKAGE ++ "OtpErlangAtom";		'tk_void' ->		    ?ERLANGPACKAGE ++ "OtpErlangAtom";		'tk_any' ->		    ?ICPACKAGE ++ "AnyHelper";		_ ->		    case isBasicType(G,N,TK) of			true ->			    %% Faked the type !			    getUnmarshalType(G, N, X, {list_to_atom(tk2type(G,N,T,TK)), -1});			false ->			    ic_util:to_dot(G,FullScopedName) ++ "Helper"		    end	    end    end;getUnmarshalType(_G, _N, _X, S) when list(S) ->    S ++ "Helper";getUnmarshalType(_G, _N, _X, T) when record(T, string) ->    ?ERLANGPACKAGE ++ "OtpErlangString";getUnmarshalType(_G, _N, _X, T) when record(T, wstring) ->  %% WSTRING    ?ERLANGPACKAGE ++ "OtpErlangString";getUnmarshalType(G, N, _X, T) when record(T, struct) ->    ic_util:to_dot(G,[ic_forms:get_id2(T)|N]) ++ "Helper";getUnmarshalType(G, N, _X, T) when record(T, union) ->    ic_util:to_dot(G,[ic_forms:get_id2(T)|N]) ++ "Helper";getUnmarshalType(G, N, X, T) when record(T, sequence), 				  record(X, member) ->    ic_util:to_dot(G,[ic_forms:get_id2(X)|N]) ++ "Helper";getUnmarshalType(G, N, X, T) when record(T, sequence), 				  record(X, case_dcl) ->    ic_util:to_dot(G,[ic_forms:get_id2(X)|N]) ++ "Helper";getUnmarshalType(G, N, X, T) when record(T, sequence) ->    getUnmarshalType(G, N, X, ic_forms:get_type(T)) ++ "Helper";getUnmarshalType(G, N, X, T) when record(T, array), 				  record(X, case_dcl) ->    ic_util:to_dot(G,[ic_forms:get_id2(T)|N]) ++ "Helper";getUnmarshalType(G, N, _X, T) when record(T, enum) ->    ic_util:to_dot(G,[ic_forms:get_id2(T)|N]) ++	"Helper";getUnmarshalType(_G, _N, _X, {boolean, _}) ->    ?ERLANGPACKAGE ++ "OtpErlangAtom";getUnmarshalType(_G, _N, _X, {octet, _}) ->    ?ERLANGPACKAGE ++ "OtpErlangLong";getUnmarshalType(_G, _N, _X, {void, _}) ->    ?ERLANGPACKAGE ++ "OtpErlangAtom";getUnmarshalType(_G, _N, _X, {unsigned, U}) ->    case U of	{short,_} ->	    ?ERLANGPACKAGE ++ "OtpErlangLong";	{long,_} ->	    ?ERLANGPACKAGE ++ "OtpErlangLong";	{'long long',_} ->	    ?ERLANGPACKAGE ++ "OtpErlangLong"    end;getUnmarshalType(_G, _N, _X, {char, _}) ->    ?ERLANGPACKAGE ++ "OtpErlangLong";getUnmarshalType(_G, _N, _X, {wchar, _}) ->  %% WCHAR    ?ERLANGPACKAGE ++ "OtpErlangLong";getUnmarshalType(_G, _N, _X, {short, _}) ->    ?ERLANGPACKAGE ++ "OtpErlangLong";getUnmarshalType(_G, _N, _X, {long, _}) ->    ?ERLANGPACKAGE ++ "OtpErlangLong";getUnmarshalType(_G, _N, _X, {'long long', _}) ->    ?ERLANGPACKAGE ++ "OtpErlangLong";getUnmarshalType(_G, _N, _X, {float, _}) ->    ?ERLANGPACKAGE ++ "OtpErlangDouble";getUnmarshalType(_G, _N, _X, {double, _}) ->    ?ERLANGPACKAGE ++ "OtpErlangDouble";getUnmarshalType(_G, _N, _X, {any, _}) ->    ?ICPACKAGE ++ "AnyHelper".%%-----------------------------------------------------------------%% Func: getMarshalType/4%%-----------------------------------------------------------------getMarshalType(G, N, X, T) when element(1, T) == scoped_id ->    {FullScopedName, _, TK, _} = ic_symtab:get_full_scoped_name(G, N, T),    BT = ic_code:get_basetype(G, ic_util:to_dot(G,FullScopedName)),     case BT of	"erlang.pid" ->	    ?ICPACKAGE ++ "PidHelper";	"erlang.port" ->	    ?ICPACKAGE ++ "PortHelper";	"erlang.ref" ->	    ?ICPACKAGE ++ "RefHelper";	"erlang.term" ->	    ?ICPACKAGE ++ "TermHelper";	{enum, Type} ->	    getMarshalType(G, N, X, Type);	Type ->	    case TK of		{'tk_struct', _, _, _} ->		    Type ++ "Helper";		{'tk_union', _, _, _, _, _} ->		    Type ++ "Helper";		{'tk_array', _ , _} ->		    Type ++ "Helper";		{'tk_sequence', _ , _} ->		    Type ++ "Helper";				{'tk_enum', _, _, _} ->		    Type ++ "Helper";		{'tk_string',_} ->		    "string";		{'tk_wstring',_} ->  %% WSTRING		    "string";		'tk_char' ->		    "char";		'tk_wchar' ->  %% WCHAR		    "char";		'tk_octet' -> 		    "byte";				'tk_ushort' ->		    "ushort";				'tk_ulong' ->		    "uint";		'tk_ulonglong' ->  %% ULLONG		    "ulong";				'tk_short' ->		    "short";				'tk_long' ->		    "int";		'tk_longlong' ->  %% LLONG		    "long";				'tk_float' ->		    "float";				'tk_double' ->		    "double";				'tk_boolean' ->		    "boolean";		'tk_void' ->		    "atom";		'tk_any' ->		    ?ICPACKAGE ++ "AnyHelper";		_ ->		    case isBasicType(G,N,TK) of			true ->			    %% Faked the type !			    getMarshalType(G, N, X, {list_to_atom(tk2type(G,N,T,TK)), -1}); 			false ->			    ic_util:to_dot(G,FullScopedName) ++ "Helper"		    end	    end    end;getMarshalType(_G, _N, _X, S) when list(S) ->    S ++ "Helper";getMarshalType(_G, _N, _X, T) when record(T, string) ->    "string";getMarshalType(_G, _N, _X, T) when record(T, wstring) ->  %% WSTRING    "string";getMarshalType(G, N, _X, T) when record(T, struct) ->    ic_util:to_dot(G,[ic_forms:get_id2(T)|N]) ++	"Helper";getMarshalType(G, N, _X, T) when record(T, union) ->    ic_util:to_dot(G,[ic_forms:get_id2(T)|N]) ++	"Helper";getMarshalType(G, N, X, T) when record(T, array),				record(X, case_dcl) ->    ic_util:to_dot(G,[ic_forms:get_id2(T)|N]) ++ 	"Helper";getMarshalType(G, N, X, T) when record(T, sequence),				record(X, member) ->    ic_util:to_dot(G,[ic_forms:get_id2(X)|N]) ++ 	"Helper";getMarshalType(G, N, _X, T) when record(T, sequence) ->    getType(G, N, ic_forms:get_type(T)) ++ 	"Helper";getMarshalType(G, N, _X, T) when record(T, enum) ->    ic_util:to_dot(G,[ic_forms:get_id2(T)|N]) ++	"Helper";getMarshalType(_G, _N, _X, {boolean, _}) ->    "boolean";getMarshalType(_G, _N, _X, {octet, _}) ->    "byte";getMarshalType(_G, _N, _X, {void, _}) ->    ""; % <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<getMarshalType(_G, _N, _X, {unsigned, U}) ->    case U of	{short,_} ->	    "ushort";	{long,_} ->	    "uint";	{'long long',_} ->	    "ulong"    end;getMarshalType(_G, _N, _X, {short, _}) ->    "short";getMarshalType(_G, _N, _X, {long, _}) ->    "int";getMarshalType(_G, _N, _X, {'long long', _}) ->    "long";getMarshalType(_G, _N, _X, {float, _}) ->    "float";getMarshalType(_G, _N, _X, {double, _}) ->    "double";getMarshalType(_G, _N, _X, {char, _}) ->    "char";getMarshalType(_G, _N, _X, {wchar, _}) ->  %% WCHAR    "char";getMarshalType(_G, _N, _X, {any, _}) ->    ?ICPACKAGE ++ "AnyHelper".%%-----------------------------------------------------------------%% Func: unMarshalFun/4%%-----------------------------------------------------------------unMarshalFun(G, N, X, T) when element(1, T) == scoped_id ->    {FullScopedName, _, TK, _} = ic_symtab:get_full_scoped_name(G, N, T),    BT = ic_code:get_basetype(G, ic_util:to_dot(G,FullScopedName)),     case BT of	"erlang.pid" ->	    ".read_pid()";	"erlang.port" ->	    ".read_port()";	"erlang.ref" ->	    ".read_ref()";	"erlang.term" ->	    ".read_term()";	{enum, Type} ->	    unMarshalFun(G, N, X, Type);	_Type ->	    case isBasicType(G,N,TK) of		true ->		    case TK of			{'tk_string',_} ->			    ".read_string()";			{'tk_wstring',_} ->  %% WSTRING			    ".read_string()";						'tk_boolean' ->			    ".read_boolean()";						'tk_octet' ->			    ".read_byte()";						'tk_ushort' ->			    ".read_ushort()";			'tk_ulong' ->			    ".read_uint()";			'tk_ulonglong' ->  %% ULLONG			    ".read_ulong()";			 			'tk_short' ->			    ".read_short()";			'tk_long' ->			    ".read_int()";			'tk_longlong' ->  %% LLONG			    ".read_long()";			'tk_float' ->			    ".read_float()";			'tk_double' ->			    ".read_double()";			'tk_char' ->			    ".read_char()";			'tk_wchar' ->          %% WCHAR			    ".read_char()";			_ ->			    %% Faked the type !			    unMarshalFun(G, N, X, {list_to_atom(tk2type(G,N,X,TK)), -1})		    end;		false ->		    ".unmarshal()"	    end    end;unMarshalFun(_G, _N, _X, S) when list(S) ->    ".unmarshal()";unMarshalFun(_G, _N, _X, T) when record(T, string) ->    ".read_string()";unMarshalFun(_G, _N, _X, T) when record(T, wstring) ->  %% WSTRING    ".read_string()";unMarshalFun(_G, _N, _X, T) when record(T, struct) ->    ".unmarshal((" ++ ?ERLANGPACKAGE ++ "OtpErlangTuple)";unMarshalFun(_G, _N, _X, T) when record(T, union) ->    ".unmarshal((" ++ ?ERLANGPACKAGE ++ "OtpErlangTuple)";unMarshalFun(_G, _N, _X, T) when record(T, sequence) ->    ".unmarshal((" ++ ?ERLANGPACKAGE ++ "OtpErlanglist)";unMarshalFun(_G, _N, _X, T) when record(T, enum) ->    ".unmarshal((" ++ ?ERLANGPACKAGE ++ "OtpErlangAtom)";unMarshalFun(_G, _N, _X, {boolean, _}) ->    ".read_boolean()";unMarshalFun(_G, _N, _X, {octet, _}) ->    ".read_byte()";unMarshalFun(_G, _N, _X, {void, _}) ->    "";unMarshalFun(_G, _N, _X, {unsigned, U}) ->    case U of	{short,_} ->	    ".read_ushort()";	{long,_} ->	    ".read_uint()";	{'long long',_} ->	    ".read_ulong()"    end;unMarshalFun(_G, _N, _X, {short, _}) ->    ".read_short()";unMarshalFun(_G, _N, _X, {long, _}) ->    ".read_int()";unMarshalFun(_G, _N, _X, {'long long', _}) ->    ".read_long()";unMarshalFun(_G, _N, _X, {float, _}) ->    ".read_float()";unMarshalFun(_G, _N, _X, {double, _}) ->    ".read_double()";unMarshalFun(_G, _N, _X, {char, _}) ->    ".read_char()";unMarshalFun(_G, _N, _X, {wchar, _}) ->  %% WCHAR

⌨️ 快捷键说明

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