Skip to content

Instantly share code, notes, and snippets.

@flimzy
Created September 7, 2017 07:40
Show Gist options
  • Save flimzy/15903655ad516cb4cb1f4a13530ea455 to your computer and use it in GitHub Desktop.
Save flimzy/15903655ad516cb4cb1f4a13530ea455 to your computer and use it in GitHub Desktop.
keyHoldLoop = function() {
var _entry, _entry$1, _i, _key, _keys, _r, _ref, delta, k, next, now, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _key = $f._key; _keys = $f._keys; _r = $f._r; _ref = $f._ref; delta = $f.delta; k = $f.k; next = $f.next; now = $f.now; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
next = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
delta = new time.Duration(0, 0);
now = $clone(time.Now(), time.Time);
/* while (true) { */ case 1:
_r = fmt.Println(new sliceType([new $String("Keyhold loop")])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
time.Time.copy(next, time.Now());
delta = $clone(next, time.Time).Sub($clone(now, time.Time));
time.Time.copy(now, next);
$r = keyLock.RLock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_ref = keyState;
_i = 0;
_keys = $keys(_ref);
/* while (true) { */ case 5:
/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 6; continue; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
/* continue; */ $s = 5; continue;
}
k = _entry.k;
$r = durationLock.Lock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_key = k; (keyDurations || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: (x = (_entry$1 = keyDurations[$String.keyFor(k)], _entry$1 !== undefined ? _entry$1.v : new time.Duration(0, 0)), x$1 = delta, new time.Duration(x.$high + x$1.$high, x.$low + x$1.$low)) };
$r = durationLock.Unlock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_i++;
/* } */ $s = 5; continue; case 6:
$r = keyLock.RUnlock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: keyHoldLoop }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._key = _key; $f._keys = _keys; $f._r = _r; $f._ref = _ref; $f.delta = delta; $f.k = k; $f.next = next; $f.now = now; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment