Changeset 95 for trunk/src/compiler.erl
- Timestamp:
- 04/11/10 19:19:02 (22 months ago)
- File:
-
- 1 edited
-
trunk/src/compiler.erl (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/compiler.erl
r94 r95 8 8 -export ([reset_includes/2]). 9 9 10 init (Notify, Dir ) ->11 init (Notify, Dir , []).10 init (Notify, Dirs) -> 11 init (Notify, Dirs, []). 12 12 13 init (Notify, Dir, Options) -> 13 init (Notify, Dirs, Options) -> 14 Watchers = lists: foldl (fun watcher/2, [], Dirs), 15 Includes = [{i, D} || D <- Dirs], 16 State = {dict: new (), dict: new (), [], [], Includes ++ Options}, 17 loop (Notify, Watchers, State). 18 19 watcher (Dir, Acc) -> 14 20 Args = [Dir, notify_me ()], 15 21 Watcher = spawn_link (directory_watcher, init_recursive, Args), 16 State = {dict: new (), dict: new (), [], [], [{i, Dir} | Options]}, 17 loop (Notify, Watcher, State). 18 19 loop (Notify, Watcher, State) -> 22 [Watcher | Acc]. 23 24 loop (Notify, Watchers, State) -> 20 25 receive 21 26 check -> 22 Watcher ! check,27 [W ! check || W <- Watchers], 23 28 {Modules, Includes, Binaries, Removed, Options} = State, 24 Received = receive_files ( Watcher,Modules, Includes),29 Received = receive_files (Modules, Includes), 25 30 {New_modules, New_includes} = Received, 26 31 New_options = reset_includes (New_includes, Options), 27 New_state = {New_modules, New_includes, Binaries, Removed, New_options}, 32 New_state = {New_modules, New_includes, Binaries, 33 Removed, New_options}, 28 34 Last_state = 29 35 if … … 33 39 New_state 34 40 end, 35 loop (Notify, Watcher , Last_state);41 loop (Notify, Watchers, Last_state); 36 42 {Pid, stop} -> 37 43 Pid ! {self (), bye} 38 44 end. 39 45 40 receive_files ( Watcher,Modules, Includes) ->46 receive_files (Modules, Includes) -> 41 47 %% Includes = sets: from_list ([D || {i, D} <- Options]), 42 48 receive 43 { Watcher, {{file, ".erl"}, File, Event}} ->44 receive_files ( Watcher,dict: store (File, Event, Modules), Includes);45 { Watcher, {{file, ".hrl"}, File, Event}} ->46 receive_files ( Watcher,Modules, dict: store (File, Event, Includes));47 { Watcher, _} ->48 receive_files ( Watcher,Modules, Includes)49 {watcher, {{file, ".erl"}, File, Event}} -> 50 receive_files (dict: store (File, Event, Modules), Includes); 51 {watcher, {{file, ".hrl"}, File, Event}} -> 52 receive_files (Modules, dict: store (File, Event, Includes)); 53 {watcher, _} -> 54 receive_files (Modules, Includes) 49 55 after 500 -> 50 56 {Modules, Includes} … … 92 98 notify_me () -> 93 99 Self = self (), 94 fun (E) -> Self ! { self (), E} end.100 fun (E) -> Self ! {watcher, E} end. 95 101 96 102 totals (Modules) ->
Note: See TracChangeset
for help on using the changeset viewer.
