fixes #14331
This commit is contained in:
parent
041ee92bba
commit
a3719df8b3
1 changed files with 28 additions and 0 deletions
28
lib/pure/quitprocs.nim
Normal file
28
lib/pure/quitprocs.nim
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Nim's Runtime Library
|
||||||
|
# (c) Copyright 2016 Andreas Rumpf
|
||||||
|
#
|
||||||
|
# See the file "copying.txt", included in this
|
||||||
|
# distribution, for details about the copyright.
|
||||||
|
#
|
||||||
|
|
||||||
|
## ``system.addQuitProc`` is nice and very useful but due to its C-based
|
||||||
|
## implementation it doesn't support closures which limits its usefulness.
|
||||||
|
## This module fixes this. Later versions of this module will also
|
||||||
|
## support the JavaScript backend.
|
||||||
|
|
||||||
|
var
|
||||||
|
gClosures: seq[proc () {.closure.}]
|
||||||
|
|
||||||
|
proc callClosures() {.noconv.} =
|
||||||
|
for i in countdown(gClosures.len-1, 0):
|
||||||
|
gClosures[i]()
|
||||||
|
|
||||||
|
proc addQuitClosure*(cl: proc () {.closure.}) =
|
||||||
|
## Like ``system.addQuitProc`` but it supports closures.
|
||||||
|
if gClosures.len == 0:
|
||||||
|
addQuitProc(callClosures)
|
||||||
|
gClosures = @[cl]
|
||||||
|
else:
|
||||||
|
gClosures.add(cl)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue