1 % (c) 2009-2013 Lehrstuhl fuer Softwaretechnik und Programmiersprachen,
2 % Heinrich Heine Universitaet Duesseldorf
3 % This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html)
4
5 :- module(units_alias, [
6 unit_alias/2,
7 init_user_defined_alias/0
8 ]).
9
10 :- use_module(probsrc(pragmas)).
11 :- use_module(probsrc(error_manager)).
12
13 :- use_module(unit_parser).
14
15 :- use_module(probsrc(module_information)).
16 :- module_info(group,plugin_units).
17 :- module_info(description,'Units Plugin: Short aliases for commonly used units.').
18
19 init_user_defined_alias :-
20 findall(alias(AliasName,Definition),
21 global_pragma(unit_alias,[AliasName|Definition]),
22 List),
23 init_user_defined_alias2(List).
24
25 init_user_defined_alias2([]).
26 init_user_defined_alias2([alias(AliasName,Definition)|T]) :-
27 unit_args_to_list(Definition,List),
28 ((\+ unit_alias(AliasName,List2), List2 \= List) -> add_error(incorrect_unit_definition, 'Unit Alias used twice: ', AliasName) ; true),
29 assert(unit_alias(AliasName,List)),
30 init_user_defined_alias2(T).
31
32 :- dynamic unit_alias/2.
33
34 % lengths
35 unit_alias(mm, [[-3,m,1]]).
36 unit_alias(cm, [[-2,m,1]]).
37 unit_alias(dm, [[-1,m,1]]).
38 unit_alias(m, [[0,m,1]]).
39 unit_alias(km, [[3,m,1]]).
40
41 % railway-specific units
42 unit_alias(hm, [[0,hm,1]]). % half-meter
43
44 % volume
45 unit_alias(l, [[-3,m,3]]).
46
47 % time
48 unit_alias(s, [[0,s,1]]).
49 unit_alias(mins, [[0,mins,1]]).
50 unit_alias(h, [[0,h,1]]).
51 unit_alias(d, [[0,d,1]]).
52
53 % speed
54 unit_alias(mps, [[0,m,1],[0,s,-1]]).
55 unit_alias(kmh, [[3,m,1],[0,h,-1]]).
56
57 % temperature
58 unit_alias(degC, [[0,degC,1]]).
59 unit_alias('K', [[0,'K',1]]).