11mutable struct Variable <: Expression
22 name:: Symbol
3- value_type:: DataType
43 subtype:: Symbol
54 diff:: Union{Function,Nothing} # FIXME
65 dependents:: Vector{Variable}
7- description:: String
8- flow:: Bool
9- domain:: AbstractDomain
10- size
11- context
126end
137
14- Variable (name,
15- value_type = Any;
16- subtype:: Symbol = :Variable ,
17- dependents:: Vector{Variable} = Variable[],
18- flow:: Bool = false ,
19- description:: String = " " ,
20- domain = Reals (),
21- size = nothing ,
22- context = nothing ) =
23- Variable (name,value_type,subtype,nothing ,
24- dependents,description,flow,domain,size,context)
25- Variable (name,args... ;kwargs... ) = Variable (name,args... ;subtype= :Variable ,kwargs... )
26-
27- Variable (name,x:: Variable ) = Variable (name,x. value_type,
28- x. subtype,D,x. dependents,x. description,x. flow,x. domain,
29- x. size,x. context)
8+ Variable (name; subtype:: Symbol = :Variable , dependents:: Vector{Variable} = Variable[]) =
9+ Variable (name, subtype, nothing , dependents)
10+ Variable (name, args... ; kwargs... ) = Variable (name, args... ; subtype= :Variable , kwargs... )
3011
3112Parameter (name,args... ;kwargs... ) = Variable (name,args... ;subtype= :Parameter ,kwargs... )
3213IndependentVariable (name,args... ;kwargs... ) = Variable (name,args... ;subtype= :IndependentVariable ,kwargs... )
@@ -36,28 +17,11 @@ function DependentVariable(name,args...;dependents = [],kwargs...)
3617 Variable (name,args... ;subtype= :DependentVariable ,dependents= dependents,kwargs... )
3718end
3819
39- function StateVariable (name,args... ;dependents = [],kwargs... )
40- @assert ! isempty (dependents)
41- Variable (name,args... ;subtype= :StateVariable ,dependents= dependents,kwargs... )
42- end
20+ export Variable,Parameter,Constant,DependentVariable,IndependentVariable,
21+ @Var , @Param , @Const , @DVar , @IVar
4322
44- function ControlVariable (name,args... ;dependents = [],kwargs... )
45- @assert ! isempty (dependents)
46- Variable (name,args... ;subtype= :ControlVariable ,dependents= dependents,kwargs... )
47- end
4823
49- function JumpVariable (name,args... ;dependents = [],kwargs... )
50- @assert ! isempty (dependents)
51- Variable (name,args... ;subtype= :JumpVariable ,dependents= dependents,kwargs... )
52- end
53-
54- function NoiseVariable (name,args... ;dependents = [],kwargs... )
55- @assert ! isempty (dependents)
56- Variable (name,args... ;subtype= :NoiseVariable ,dependents= dependents,kwargs... )
57- end
58-
59- export Variable,Parameter,Constant,DependentVariable,IndependentVariable,JumpVariable,NoiseVariable,
60- @Var , @DVar , @IVar , @Param , @Const
24+ Base. copy (x:: Variable ) = Variable (x. name, x. subtype, x. diff, x. dependents)
6125
6226
6327struct Constant <: Expression
@@ -71,10 +35,7 @@ Base.isone(ex::Expression) = isa(ex, Constant) && isone(ex.value)
7135
7236
7337# Variables use isequal for equality since == is an Operation
74- function Base.:(== )(x:: Variable , y:: Variable )
75- x. name == y. name && x. subtype == y. subtype &&
76- x. value_type == y. value_type && x. diff == y. diff
77- end
38+ Base.:(== )(x:: Variable , y:: Variable ) = (x. name, x. subtype, x. diff) == (y. name, y. subtype, y. diff)
7839Base.:(== )(:: Variable , :: Number ) = false
7940Base.:(== )(:: Number , :: Variable ) = false
8041Base.:(== )(:: Variable , :: Constant ) = false
0 commit comments