aboutsummaryrefslogtreecommitdiffstats
path: root/alv/base
diff options
context:
space:
mode:
Diffstat (limited to 'alv/base')
-rw-r--r--alv/base/input.moon19
1 files changed, 15 insertions, 4 deletions
diff --git a/alv/base/input.moon b/alv/base/input.moon
index b73a476..f29bd10 100644
--- a/alv/base/input.moon
+++ b/alv/base/input.moon
@@ -76,8 +76,11 @@ class Input
metatype: => @result.metatype
--- the current value
- --
- -- @tfield SigStream result
+ -- @tfield Result result
+
+ --- the Input mode
+ -- @tfield string mode `'hot'`, `'cold'` or `'io'`.
+ mode: 'hot'
--- members
-- @section members
@@ -125,17 +128,25 @@ class Input
InputType value
class ColdInput extends Input
+ mode: 'cold'
dirty: => false
class ValueInput extends Input
- setup: (old) => @dirty_setup = not old or @result != old.result
+ new: (result) =>
+ super result
+ @mode = if @result.metatype == '=' then 'cold' else 'hot'
+
+ setup: (old) =>
+ @dirty_setup = not old or @result != old.result
+
finish_setup: => @dirty_setup = nil
+
dirty: =>
return @dirty_setup if @dirty_setup != nil
@result\dirty!
class IOInput extends Input
- io: true
+ mode: 'io'
mapping = {
[Constant]: ValueInput