-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathjava.pro
38 lines (32 loc) · 1.17 KB
/
java.pro
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
:- module(java, [
java_primitive_reference_type/2
, java_class_ast/2
]).
% This relates a primitive type and its corresponding reference type.
java_primitive_reference_type(Pri, Ref) :-
member((Pri, Ref), [
(short, 'java.lang.Short')
, (int, 'java.lang.Integer')
, (long, 'java.lang.Long')
, (float, 'java.lang.Float')
, (double, 'java.lang.Double')
]).
java_primitive_type(Pri) :- java_primitive_reference_type(Pri, _).
% The term 'public' seems to be special syntax.
% Removing the parenthesis causes error.
% http://www.swi-prolog.org/pldoc/man?section=declare
java_class_field(Class, Field_name, Java_type, Access, Final) :- true
, entity_field(Class, Field_name, Sql_type, _Opts)
, entity_field_nullable(Class, Field_name, Nullable)
, sql_java_type(Sql_type, Java_type, Nullable)
, Access = (public)
, Final = final
.
java_class_ast(Class, Ast) :-
findall(Ast, java_ast_field(Class, _, Ast), Ast_fields)
, Ast = class(Class, members(Ast_fields))
.
java_ast_field(Class, Name, Ast) :- true
, java_class_field(Class, Name, Type, Access, Final)
, Ast = field(Access, Final, Type, Name)
.