From 84adefa331c4159d432d22840663c38f155cd4c1 Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Fri, 20 Nov 2009 14:54:40 +0000 Subject: The R13B03 release. --- .../CosNaming/CosNaming_BindingIterator_impl.erl | 93 ++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 lib/orber/COSS/CosNaming/CosNaming_BindingIterator_impl.erl (limited to 'lib/orber/COSS/CosNaming/CosNaming_BindingIterator_impl.erl') diff --git a/lib/orber/COSS/CosNaming/CosNaming_BindingIterator_impl.erl b/lib/orber/COSS/CosNaming/CosNaming_BindingIterator_impl.erl new file mode 100644 index 0000000000..7d1791a785 --- /dev/null +++ b/lib/orber/COSS/CosNaming/CosNaming_BindingIterator_impl.erl @@ -0,0 +1,93 @@ +%%-------------------------------------------------------------------- +%% +%% %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: CosNaming_BindingIterator_impl.erl +%% +%%----------------------------------------------------------------- +-module('CosNaming_BindingIterator_impl'). + +-include_lib("orber/include/corba.hrl"). +-include("CosNaming.hrl"). +-include("orber_cosnaming.hrl"). + + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([init/1, terminate/2, code_change/3]). +-export([next_one/1, next_n/2, destroy/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). + +%%----------------------------------------------------------------- +%% External interface functions +%%----------------------------------------------------------------- +%%----------------------------------------------------------------- +%% Func: init/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +init(State) -> + {ok, State}. + +%%----------------------------------------------------------------- +%% Func: terminate/2 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +terminate(_Reason, _State) -> + ok. + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + +next_one([]) -> + NoBinding = #'CosNaming_Binding'{binding_name=[], + binding_type=nobject}, + {reply, {false, NoBinding}, []}; +next_one([Binding]) -> + {reply, {true, Binding}, []}; +next_one([Binding|Rest]) -> + {reply, {true, Binding}, Rest}. + +next_n([], _) -> + {reply, {false, []}, []}; +next_n(List, HowMany) -> + {More, Acc, NewList} = split(List, HowMany, []), + {reply, {More, Acc}, NewList}. + +split([], _, Acc) -> + {false, Acc, []}; +split(Rest, 0, Acc) -> + {true, Acc, Rest}; +split([H|T], N, Acc) -> + split(T, N-1, [H|Acc]). + + +destroy(OE_State) -> + {stop, normal, ok, OE_State}. + +%%----------------------------------------------------------------- +%% Internal functions +%%----------------------------------------------------------------- -- cgit v1.2.3