Free cookie consent management tool by TermsFeed Policy Generator

source: branches/2929_PrioritizedGrammarEnumeration/HeuristicLab.Algorithms.DataAnalysis.PGE/3.3/go-code/go-symexpr/has.go @ 16080

Last change on this file since 16080 was 16080, checked in by hmaislin, 6 years ago

#2929 initial commit of working PGE version

File size: 4.5 KB
Line 
1package symexpr
2
3func (l *Leaf) HasVar() bool         { return false }
4func (l *Leaf) HasVarI(i int) bool   { return false }
5func (l *Leaf) NumVar() int          { return 0 }
6func (l *Leaf) HasConst() bool       { return false }
7func (l *Leaf) HasConstI(i int) bool { return false }
8func (l *Leaf) NumConstants() int    { return 0 }
9
10func (u *Unary) HasVar() bool         { return u.C.HasVar() }
11func (u *Unary) HasVarI(i int) bool   { return u.C.HasVarI(i) }
12func (u *Unary) NumVar() int          { return u.C.NumVar() }
13func (u *Unary) HasConst() bool       { return u.C.HasConst() }
14func (u *Unary) HasConstI(i int) bool { return u.C.HasConstI(i) }
15func (u *Unary) NumConstants() int    { return u.C.NumConstants() }
16
17func (n *N_ary) HasVar() bool {
18  for _, C := range n.CS {
19    if C != nil && C.HasVar() {
20      return true
21    }
22  }
23  return false
24}
25func (n *N_ary) HasVarI(i int) bool {
26  for _, C := range n.CS {
27    if C != nil && C.HasVarI(i) {
28      return true
29    }
30  }
31  return false
32}
33func (n *N_ary) NumVar() int {
34  sum := 0
35  for _, C := range n.CS {
36    if C != nil {
37      sum += C.NumVar()
38    }
39  }
40  return sum
41}
42func (n *N_ary) HasConst() bool {
43  for _, C := range n.CS {
44    if C != nil && C.HasConst() {
45      return true
46    }
47  }
48  return false
49}
50func (n *N_ary) HasConstI(i int) bool {
51  for _, C := range n.CS {
52    if C != nil && C.HasConstI(i) {
53      return true
54    }
55  }
56  return false
57}
58func (n *N_ary) NumConstants() int {
59  sum := 0
60  for _, C := range n.CS {
61    if C != nil {
62      sum += C.NumConstants()
63    }
64  }
65  return sum
66}
67
68// Overload specifics
69
70func (v *Var) HasVar() bool       { return true }
71func (v *Var) HasVarI(i int) bool { return v.P == i }
72func (v *Var) NumVar() int        { return 1 }
73
74func (c *Constant) HasConst() bool       { return true }
75func (c *Constant) HasConstI(i int) bool { return c.P == i }
76func (c *Constant) NumConstants() int    { return 1 }
77
78func (c *ConstantF) HasConst() bool       { return false }
79func (c *ConstantF) HasConstI(i int) bool { return false }
80
81// func (c *ConstantF) NumConstants() int      { return 1 }   NOT COUNTING THESE
82
83func (u *PowI) HasVar() bool         { return u.Base.HasVar() }
84func (u *PowI) HasVarI(i int) bool   { return u.Base.HasVarI(i) }
85func (u *PowI) NumVar() int          { return u.Base.NumVar() }
86func (u *PowI) HasConst() bool       { return u.Base.HasConst() }
87func (u *PowI) HasConstI(i int) bool { return u.Base.HasConstI(i) }
88func (u *PowI) NumConstants() int    { return u.Base.NumConstants() }
89
90func (u *PowF) HasVar() bool         { return u.Base.HasVar() }
91func (u *PowF) HasVarI(i int) bool   { return u.Base.HasVarI(i) }
92func (u *PowF) NumVar() int          { return u.Base.NumVar() }
93func (u *PowF) HasConst() bool       { return u.Base.HasConst() }
94func (u *PowF) HasConstI(i int) bool { return u.Base.HasConstI(i) }
95func (u *PowF) NumConstants() int    { return u.Base.NumConstants() }
96
97func (n *PowE) HasVar() bool         { return n.Base.HasVar() || n.Power.HasVar() }
98func (n *PowE) HasVarI(i int) bool   { return n.Base.HasVarI(i) || n.Power.HasVarI(i) }
99func (n *PowE) NumVar() int          { return n.Base.NumVar() + n.Power.NumVar() }
100func (n *PowE) HasConst() bool       { return n.Base.HasConst() || n.Power.HasConst() }
101func (n *PowE) HasConstI(i int) bool { return n.Base.HasConstI(i) || n.Power.HasConstI(i) }
102func (n *PowE) NumConstants() int    { return n.Base.NumConstants() + n.Power.NumConstants() }
103
104func (n *Div) HasVar() bool {
105  ret := false
106  if n.Numer != nil {
107    ret = ret || n.Numer.HasVar()
108  }
109  if n.Denom != nil {
110    ret = ret || n.Denom.HasVar()
111  }
112  return ret
113}
114func (n *Div) HasVarI(i int) bool {
115  ret := false
116  if n.Numer != nil {
117    ret = ret || n.Numer.HasVarI(i)
118  }
119  if n.Denom != nil {
120    ret = ret || n.Denom.HasVarI(i)
121  }
122  return ret
123}
124func (n *Div) NumVar() int {
125  ret := 0
126  if n.Numer != nil {
127    ret = ret + n.Numer.NumVar()
128  }
129  if n.Denom != nil {
130    ret = ret + n.Denom.NumVar()
131  }
132  return ret
133}
134func (n *Div) HasConst() bool {
135  ret := false
136  if n.Numer != nil {
137    ret = ret || n.Numer.HasConst()
138  }
139  if n.Denom != nil {
140    ret = ret || n.Denom.HasConst()
141  }
142  return ret
143}
144func (n *Div) HasConstI(i int) bool {
145  ret := false
146  if n.Numer != nil {
147    ret = ret || n.Numer.HasConstI(i)
148  }
149  if n.Denom != nil {
150    ret = ret || n.Denom.HasConstI(i)
151  }
152  return ret
153}
154func (n *Div) NumConstants() int {
155  ret := 0
156  if n.Numer != nil {
157    ret = ret + n.Numer.NumConstants()
158  }
159  if n.Denom != nil {
160    ret = ret + n.Denom.NumConstants()
161  }
162  return ret
163}
Note: See TracBrowser for help on using the repository browser.