13
15:- ensure_loaded('parse_util'). 16:- use_module('analyzer/metapred_finder'). 17:- use_module(library(lists)). 18
19
20ensure_generated_factbase_for_source_file(File) :-
21 source_file(File),
22 exists_file(File),
23 generate_factbase(File).
28
29generate_factbase:-
30 with_mutex(prolog_factbase,
31 ( find_all_loaded_files(ProjectFiles),
32 parse_util:generate_facts(ProjectFiles)
33 )
34 ).
35
36
37generate_factbase(File):-
38 with_mutex(prolog_factbase,
39 ( find_all_loaded_files(Project),
40 filter_already_known_files(Project,MissingFiles),
41 flatten(MissingFiles,FlatMissingFiles),
42 parse_util:update_facts(File,FlatMissingFiles)
43 )
44 ).
45
46
47
48find_all_loaded_files(Project):-
49 current_prolog_flag(home, PrologHome),
50 findall(
51 File, 52 ( source_file(File),
53 \+(string_concat(PrologHome, _, File))
54 ),
55 Project
56 ).
57
58filter_already_known_files([],[]).
59filter_already_known_files([File|Tail],[MissingTail]):-
60 fileT_ri(File,_),
61 62 !,
63 filter_already_known_files(Tail,MissingTail).
64filter_already_known_files([File|Tail],[File|MissingTail]):-
65 filter_already_known_files(Tail,MissingTail).
66
67
68
69pl_test(Project):-
70 parse_util:generate_facts(Project).
71
72
73pl_test_fix:-
74 pl_test(['C:/Data/Git-Data/pdt.git/pdt.runtime.builder/prolog-src'])