Lines Matching refs:Effect
27 struct Effect { struct
33 Effect() : modality(DEFINITE) {} in Effect() argument
34 explicit Effect(Bounds b, Modality m = DEFINITE) : modality(m), bounds(b) {} in modality() argument
37 static Effect Unknown(Zone* zone) { in Unknown() argument
38 return Effect(Bounds::Unbounded(), POSSIBLE); in Unknown()
41 static Effect Forget(Zone* zone) { in Forget() argument
42 return Effect(Bounds::Unbounded(), DEFINITE); in Forget()
46 static Effect Seq(Effect e1, Effect e2, Zone* zone) { in Seq() argument
48 return Effect(Bounds::Either(e1.bounds, e2.bounds, zone), e1.modality); in Seq()
52 static Effect Alt(Effect e1, Effect e2, Zone* zone) { in Alt() argument
53 return Effect( in Alt()
81 Effect Lookup(Var var) { in Lookup()
84 ? locator.value() : Effect::Unknown(Base::zone()); in Lookup()
88 Effect effect = Lookup(var); in LookupBounds()
89 return effect.modality == Effect::DEFINITE in LookupBounds()
94 void Seq(Var var, Effect effect) { in Seq()
97 effect = Effect::Seq(locator.value(), effect, Base::zone()); in Seq()
108 void Alt(Var var, Effect effect) { in Alt()
111 effect = Effect::Alt(locator.value(), effect, Base::zone()); in Alt()
126 Effect::Forget(Base::zone()), Effects(Base::zone()) }; in Forget()
136 void Call(Var var, Effect effect) { self.Seq(var, effect); } in Call()
142 void Call(Var var, Effect effect) { self.Alt(var, effect); } in Call()
148 void Call(Var var, Effect effect) { in Call()
149 if (effect.modality == Effect::DEFINITE && !other.Contains(var)) { in Call()
150 effect.modality = Effect::POSSIBLE; in Call()
161 void Call(Var var, Effect effect) { effects.Seq(var, new_effect); } in Call()
162 Effect new_effect;
187 typedef Effect Value;
189 static Effect NoValue() { return Effect(); } in NoValue()