diff options
author | Erlang/OTP <[email protected]> | 2009-11-20 14:54:40 +0000 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2009-11-20 14:54:40 +0000 |
commit | 84adefa331c4159d432d22840663c38f155cd4c1 (patch) | |
tree | bff9a9c66adda4df2106dfd0e5c053ab182a12bd /lib/orber/src/orber_ifr_orb.erl | |
download | otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.gz otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.bz2 otp-84adefa331c4159d432d22840663c38f155cd4c1.zip |
The R13B03 release.OTP_R13B03
Diffstat (limited to 'lib/orber/src/orber_ifr_orb.erl')
-rw-r--r-- | lib/orber/src/orber_ifr_orb.erl | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/lib/orber/src/orber_ifr_orb.erl b/lib/orber/src/orber_ifr_orb.erl new file mode 100644 index 0000000000..f536ae887a --- /dev/null +++ b/lib/orber/src/orber_ifr_orb.erl @@ -0,0 +1,98 @@ +%%-------------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1997-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%---------------------------------------------------------------------- +%% File : orber_ifr_orb.erl +%% Purpose : Code for Orb +%%---------------------------------------------------------------------- + +-module(orber_ifr_orb). + +-export([create_struct_tc/3, + create_union_tc/4, + create_enum_tc/3, + create_alias_tc/3, + create_exception_tc/3, + create_interface_tc/2, + create_string_tc/1, + create_wstring_tc/1, + create_sequence_tc/2, + create_recursive_sequence_tc/2, + create_array_tc/2 + ]). + + +-include("orber_ifr.hrl"). +-include_lib("orber/include/ifr_types.hrl"). +-include_lib("orber/include/corba.hrl"). + +%%%====================================================================== +%%% ORB + +%%%---------------------------------------------------------------------- +%%% Inherited interfaces + +%% none %% + +%%%---------------------------------------------------------------------- +%%% Non-inherited interfaces + +create_struct_tc(Id, Name, Members) -> + {tk_struct,Id,Name,lists:map(fun(#structmember{name=MemName,type=Type}) -> + {MemName,Type} end, + Members)}. + +create_union_tc(Id, Name, Discriminator_type, Members) -> + {tk_union, Id, Name, Discriminator_type, -1, % *** is -1 correct??? + lists:map(fun(#unionmember{name=MemName, label=Label, type=Type}) -> + {Label,MemName,Type} end, + Members)}. + +create_enum_tc(Id, Name, Members) -> + {tk_enum, Id, Name, Members}. + +create_alias_tc(Id, Name, Original_type) -> + {tk_alias, Id, Name, orber_ifr_utils:get_field(Original_type,type)}. + +create_exception_tc(Id, Name, Members) -> + {tk_except,Id,Name,lists:map(fun(#structmember{name=MemName,type=Type}) -> + {MemName,Type} end, + Members)}. + +create_interface_tc(Id, Name) -> + {tk_objref, Id, Name}. + +create_string_tc(Bound) -> + {tk_string, Bound}. + +create_wstring_tc(Bound) -> + {tk_wstring, Bound}. + +create_sequence_tc(Bound, Element_type) -> + {tk_sequence,Element_type,Bound}. + +create_recursive_sequence_tc(Bound, Offset) -> + orber:dbg("[~p] ~p:create_recursive_sequence_tc(~p, ~p);~n" + "Create_recursive_sequence is not implemented.~n", + [?LINE, ?MODULE, Bound, Offset], ?DEBUG_LEVEL), + corba:raise(#'INTF_REPOS'{completion_status=?COMPLETED_NO}). + +create_array_tc(Length, Element_type) -> + {tk_array, Element_type, Length}. |