]> git.leonardobizzoni.com Git - ObjectOriented-Prolog-Lisp/commitdiff
Spammato `nonvar(ClassName)` per sicurezza
authorLeonardoBizzoni <leo2002714@gmail.com>
Sun, 17 Dec 2023 09:01:35 +0000 (10:01 +0100)
committerLeonardoBizzoni <leo2002714@gmail.com>
Sun, 17 Dec 2023 09:01:35 +0000 (10:01 +0100)
Prolog/README.org
Prolog/oop.pl

index 49a1666f3773f7255f87340c343d36d8e2208096..560b835875034f145d3e3fd1827fa5fa747b9c14 100644 (file)
 :- abolish(is_instance/2).
 :- abolish(field/3).
 
-def_class(ClassName, []) :- asserta(is_class(ClassName)), !.
+def_class(ClassName, []) :-
+    nonvar(ClassName),
+    asserta(is_class(ClassName)),
+    !.
 def_class(ClassName, [Parent | OtherParents]) :-
+    nonvar(ClassName),
+    nonvar(Parent),
+    nonvar(OtherParents),
     is_class(Parent),
     asserta(is_child_of(Parent, ClassName)),
     def_class(ClassName, OtherParents),
@@ -35,8 +41,14 @@ def_class(ClassName, [Parent | OtherParents]) :-
            ParentParts),
     add_part(ClassName, ParentParts).
 
-def_class(ClassName, [], []) :- def_class(ClassName, []), !.
+def_class(ClassName, [], []) :-
+    nonvar(ClassName),
+    def_class(ClassName, []),
+    !.
 def_class(ClassName, Parents, Parts) :-
+    nonvar(ClassName),
+    nonvar(Parents),
+    nonvar(Parts),
     def_class(ClassName, Parents),
     add_part(ClassName, Parts).
 #+end_src
@@ -52,11 +64,13 @@ def_class(ClassName, Parents, Parts) :-
 #+begin_src prolog :tangle oop.pl
 make(InstanceName, ClassName) :-
     nonvar(InstanceName),
+    nonvar(ClassName),
     !,
     make(InstanceName, ClassName, []).
 
 make(InstanceName, ClassName, []) :-
     nonvar(InstanceName),
+    nonvar(ClassName),
     is_class(ClassName),
     \+ is_instance(InstanceName),
     !,
@@ -70,6 +84,7 @@ make(InstanceName, ClassName, []) :-
 
 make(InstanceName, ClassName, [Field | Other]) :-
     nonvar(InstanceName),
+    nonvar(ClassName),
     [Field | Other] = Fields,
     !,
     make(InstanceName, ClassName, []),
@@ -80,11 +95,13 @@ make(InstanceName, ClassName, [Field | Other]) :-
 #+begin_src prolog :tangle oop.pl
 make(InstanceName, ClassName) :-
     var(InstanceName),
+    nonvar(ClassName),
     !,
     is_instance(InstanceName, ClassName).
 
 make(InstanceName, ClassName, Fields) :-
     var(InstanceName),
+    nonvar(ClassName),
     is_list(Fields),
     Fields \= [],
     is_instance(InstanceName, ClassName),
index d360f9697c60c9d9a9784eef47315edf58f490cc..24325bc7dd63a33bc2bbe412f19157739747076b 100644 (file)
 :- abolish(is_instance/2).
 :- abolish(field/3).
 
-def_class(ClassName, []) :- asserta(is_class(ClassName)), !.
+def_class(ClassName, []) :-
+    nonvar(ClassName),
+    asserta(is_class(ClassName)),
+    !.
 def_class(ClassName, [Parent | OtherParents]) :-
+    nonvar(ClassName),
+    nonvar(Parent),
+    nonvar(OtherParents),
     is_class(Parent),
     asserta(is_child_of(Parent, ClassName)),
     def_class(ClassName, OtherParents),
@@ -22,18 +28,26 @@ def_class(ClassName, [Parent | OtherParents]) :-
            ParentParts),
     add_part(ClassName, ParentParts).
 
-def_class(ClassName, [], []) :- def_class(ClassName, []), !.
+def_class(ClassName, [], []) :-
+    nonvar(ClassName),
+    def_class(ClassName, []),
+    !.
 def_class(ClassName, Parents, Parts) :-
+    nonvar(ClassName),
+    nonvar(Parents),
+    nonvar(Parts),
     def_class(ClassName, Parents),
     add_part(ClassName, Parts).
 
 make(InstanceName, ClassName) :-
     nonvar(InstanceName),
+    nonvar(ClassName),
     !,
     make(InstanceName, ClassName, []).
 
 make(InstanceName, ClassName, []) :-
     nonvar(InstanceName),
+    nonvar(ClassName),
     is_class(ClassName),
     \+ is_instance(InstanceName),
     !,
@@ -47,6 +61,7 @@ make(InstanceName, ClassName, []) :-
 
 make(InstanceName, ClassName, [Field | Other]) :-
     nonvar(InstanceName),
+    nonvar(ClassName),
     [Field | Other] = Fields,
     !,
     make(InstanceName, ClassName, []),
@@ -54,11 +69,13 @@ make(InstanceName, ClassName, [Field | Other]) :-
 
 make(InstanceName, ClassName) :-
     var(InstanceName),
+    nonvar(ClassName),
     !,
     is_instance(InstanceName, ClassName).
 
 make(InstanceName, ClassName, Fields) :-
     var(InstanceName),
+    nonvar(ClassName),
     is_list(Fields),
     Fields \= [],
     is_instance(InstanceName, ClassName),