This repository was archived by the owner on Oct 16, 2025. It is now read-only.
Repository navigation
Expand file tree
/
Copy pathPredicatesDecl.cs
More file actions
96 lines (82 loc) · 2.76 KB
/
Copy pathPredicatesDecl.cs
File metadata and controls
96 lines (82 loc) · 2.76 KB
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using PDDLSharp.Models.AST;
using PDDLSharp.Models.PDDL.Expressions;
using PDDLSharp.Tools;
namespace PDDLSharp.Models.PDDL.Domain
{
public class PredicatesDecl : BaseListableNode, IDecl
{
public List<PredicateExp> Predicates { get; set; }
public PredicatesDecl(ASTNode node, INode? parent, List<PredicateExp> predicates) : base(node, parent)
{
Predicates = predicates;
}
public PredicatesDecl(INode? parent, List<PredicateExp> predicates) : base(parent)
{
Predicates = predicates;
}
public PredicatesDecl(List<PredicateExp> predicates) : base()
{
Predicates = predicates;
}
public PredicatesDecl(ASTNode node, INode? parent) : base(node, parent)
{
Predicates = new List<PredicateExp>();
}
public PredicatesDecl(INode? parent) : base(parent)
{
Predicates = new List<PredicateExp>();
}
public PredicatesDecl() : base()
{
Predicates = new List<PredicateExp>();
}
public override bool Equals(object? obj)
{
if (obj is PredicatesDecl other)
{
if (!base.Equals(other)) return false;
if (!EqualityHelper.AreListsEqualUnordered(Predicates, other.Predicates)) return false;
return true;
}
return false;
}
public override int GetHashCode()
{
var hash = base.GetHashCode();
foreach (var pred in Predicates)
hash *= pred.GetHashCode();
return hash;
}
public override IEnumerator<INode> GetEnumerator()
{
return Predicates.GetEnumerator();
}
public override PredicatesDecl Copy(INode? newParent = null)
{
var newNode = new PredicatesDecl(new ASTNode(Line, "", ""), newParent);
newNode._metaInfo = new List<System.Reflection.PropertyInfo>(_metaInfo);
foreach (var node in Predicates)
newNode.Predicates.Add(node.Copy(newNode));
newNode.IsHidden = IsHidden;
return newNode;
}
public override void Replace(INode node, INode with)
{
for (int i = 0; i < Predicates.Count; i++)
{
if (Predicates[i] == node && with is PredicateExp pred)
Predicates[i] = pred;
}
}
public override void Add(INode node)
{
if (node is PredicateExp exp)
Predicates.Add(exp);
}
public override void Remove(INode node)
{
if (node is PredicateExp exp)
Predicates.Remove(exp);
}
}
}