summary refs log tree commit diff stats
path: root/lib/genode/constructibles.nim
diff options
context:
space:
mode:
authorehmry <ehmry@posteo.net>2022-10-31 13:24:57 -0500
committerGitHub <noreply@github.com>2022-10-31 19:24:57 +0100
commit0b262e9496387d5e8adc0c5f6020b3f3300e8f79 (patch)
tree62e973c59dddf9b28df2c1a05847bac3e7677f85 /lib/genode/constructibles.nim
parent39f925b95d57a429a808cfa1b96d6fae12a72dbf (diff)
downloadNim-0b262e9496387d5e8adc0c5f6020b3f3300e8f79.tar.gz
Genode: add scheduleCallbacks to asyncdispatch (#20708)
* Genode: add native signal handler

* Genode: add scheduleCallbacks to asyncdispatch

This resolves some awkwardness where an RPC server may or may not
use callSoon while dispatching RPC but without scheduling timers
or I/O.
Diffstat (limited to 'lib/genode/constructibles.nim')
-rw-r--r--lib/genode/constructibles.nim21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/genode/constructibles.nim b/lib/genode/constructibles.nim
new file mode 100644
index 000000000..3a4a646e0
--- /dev/null
+++ b/lib/genode/constructibles.nim
@@ -0,0 +1,21 @@
+#
+#
+#            Nim's Runtime Library
+#        (c) Copyright 2022 Emery Hemingway
+#
+#    See the file "copying.txt", included in this
+#    distribution, for details about the copyright.
+#
+
+type Constructible*[T] {.
+  importcpp: "Genode::Constructible",
+  header: "<util/reconstructible.h>", byref, pure.} = object
+
+proc construct*[T](x: Constructible[T]) {.importcpp.}
+  ## Construct a constructible C++ object.
+
+proc destruct*[T](x: Constructible[T]) {.importcpp.}
+  ## Destruct a constructible C++ object.
+
+proc constructed*[T](x: Constructible[T]): bool {.importcpp.}
+  ## Test if an object is constructed.