1:- module(scasp_source_reference,
2 [ scasp_source_reference_file_line/3, 3 assert_scasp_source_reference/3, 4 scasp_source_reference/3, 5 scasp_dynamic_clause_position/2 6 ]).
12scasp_source_reference_file_line(Ref, File, Line) :-
13 blob(Ref, clause),
14 !,
15 ( clause_file_line(Ref, File, Line)
16 -> true
17 ; File = none, Line = 0
18 ).
19scasp_source_reference_file_line(Ref, File, Line) :-
20 scasp_source_reference(Ref, File, Pos),
21 !,
22 stream_position_data(line_count, Pos, Line).
23
24clause_file_line(ClauseRef, dynamic, Line) :-
25 scasp_dynamic_clause_position(ClauseRef, Pos),
26 !,
27 stream_position_data(line_count, Pos, Line).
28clause_file_line(ClauseRef, File, Line) :-
29 clause_property(ClauseRef, file(File)),
30 clause_property(ClauseRef, line_count(Line)).
31
32:- dynamic scasp_source_reference/3. 33
34assert_scasp_source_reference(File, Pos, Ref) :-
35 scasp_source_reference(Ref, File, Pos), !.
36assert_scasp_source_reference(File, Pos, Ref) :-
37 ( scasp_source_reference(Ref0, _, _)
38 -> Ref is Ref0 + 1
39 ; Ref is 1
40 ),
41 asserta(scasp_source_reference(Ref, File, Pos)).
49:- dynamic scasp_dynamic_clause_position/2.
s(CASP)
source references*/