,early_msgs=EarlyMsgs
}=State) ->
- ok = cast_one2all(Neighbors, {state_broadcast, GenID, CellState}),
+ ok = life_lib:cast_one2all(Neighbors, {state_broadcast, GenID, CellState}),
% Put stashed messages back in the mailbox,
% now that we're ready to handle them
- ok = cast_all2one(Name, EarlyMsgs),
+ ok = life_lib:cast_all2one(Name, EarlyMsgs),
NewState = State#state{replies_pending=NumNeighbors
,gen_id=GenID
%% Internal
%% ============================================================================
-% Cast all messages to one destination
-cast_all2one(_, []) -> ok;
-cast_all2one(Server, [Msg | Msgs]) ->
- ok = gen_server:cast(Server, Msg),
- cast_all2one(Server, Msgs).
-
-
-% Cast one message to all destinations
-cast_one2all([], _) -> ok;
-cast_one2all([Server | Servers], Msg) ->
- ok = gen_server:cast(Server, Msg),
- cast_one2all(Servers, Msg).
-
-
new_state(1, LiveNeighbors) when LiveNeighbors < 2 -> 0;
new_state(1, LiveNeighbors) when LiveNeighbors < 4 -> 1;
new_state(1, LiveNeighbors) when LiveNeighbors > 3 -> 0;
--- /dev/null
+-module(life_lib).
+
+-export([cast_one2all/2
+ ,cast_all2one/2
+ ]).
+
+
+% Cast all messages to one destination
+cast_all2one(_, []) -> ok;
+cast_all2one(Server, [Msg | Msgs]) ->
+ ok = gen_server:cast(Server, Msg),
+ cast_all2one(Server, Msgs).
+
+
+% Cast one message to all destinations
+cast_one2all([], _) -> ok;
+cast_one2all([Server | Servers], Msg) ->
+ ok = gen_server:cast(Server, Msg),
+ cast_one2all(Servers, Msg).
+
}=State) ->
NewGenID = GenID + 1,
- ok = cast_all(Cells, {next_gen, NewGenID}),
+ ok = life_lib:cast_one2all(Cells, {next_gen, NewGenID}),
NewState = State#state{replies_pending=NumCells
,gen_id=NewGenID
,num_dead=0
ok = gen_server:cast(?MODULE, next_gen).
-cast_all([], _) -> ok;
-cast_all([Server | Servers], Msg) ->
- ok = gen_server:cast(Server, Msg),
- cast_all(Servers, Msg).
-
-
state_to_char(0) -> ?CHAR_DEAD;
state_to_char(1) -> ?CHAR_ALIVE.