815
815
%%-----------------------------------------------------------------
816
816
%% Func: enc_union/5
817
817
%%-----------------------------------------------------------------
818
enc_union(Env, {_, Label, Value}, DiscrTC, Default, TypeCodeList, Bytes, Len) ->
818
enc_union(Env, {_, Label, Value}, DiscrTC, Default, TypeCodeList,
819
Bytes, Len) when is_list(TypeCodeList) ->
819
820
{ByteSequence, Len1} = enc_type(DiscrTC, Env, Label, Bytes, Len),
820
821
Label2 = stringify_enum(DiscrTC,Label),
821
822
enc_union2(Env, {Label2, Value},TypeCodeList, Default,
822
ByteSequence, Len1, undefined).
823
ByteSequence, Len1, undefined);
824
enc_union(Env, Value, _DiscrTC, _Default, Module, Bytes, Len) when is_atom(Module) ->
825
case catch Module:tc() of
826
{tk_union, _, _, DiscrTC, Default, ElementList} ->
827
enc_union(Env, Value, DiscrTC, Default, ElementList, Bytes, Len);
829
orber:dbg("[~p] ~p:enc_union(~p). Union module doesn't exist or incorrect.",
830
[?LINE, ?MODULE, What], ?DEBUG_LEVEL),
831
corba:raise(#'MARSHAL'{completion_status=?COMPLETED_MAYBE})
824
834
enc_union2(_Env, _What, [], Default, Bytes, Len, _) when Default < 0 ->
840
850
%%-----------------------------------------------------------------
841
851
%% Func: enc_struct/4
842
852
%%-----------------------------------------------------------------
843
enc_struct(Env, Struct, TypeCodeList, Bytes, Len) ->
853
enc_struct(Env, Struct, TypeCodeList, Bytes, Len) when is_list(TypeCodeList) ->
844
854
[_Name | StructList] = tuple_to_list(Struct),
845
enc_struct1(Env, StructList, TypeCodeList, Bytes, Len).
855
enc_struct1(Env, StructList, TypeCodeList, Bytes, Len);
856
enc_struct(Env, Struct, Module, Bytes, Len) ->
857
[Module | StructList] = tuple_to_list(Struct),
858
case catch Module:tc() of
859
{tk_struct, _, _, TypeCodeList} ->
860
enc_struct1(Env, StructList, TypeCodeList, Bytes, Len);
862
orber:dbg("[~p] ~p:enc_struct([], ~p). Struct module doesn't exist or incorrect.",
863
[?LINE, ?MODULE, What], ?DEBUG_LEVEL),
864
corba:raise(#'MARSHAL'{completion_status=?COMPLETED_MAYBE})
847
867
enc_struct1(_Env, [], [], Bytes, Len) ->