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 + -
显示快捷键?