summary refs log tree commit diff stats
path: root/lib/wrappers/linenoise/linenoise.nim
diff options
context:
space:
mode:
Diffstat (limited to 'lib/wrappers/linenoise/linenoise.nim')
-rw-r--r--lib/wrappers/linenoise/linenoise.nim34
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/wrappers/linenoise/linenoise.nim b/lib/wrappers/linenoise/linenoise.nim
new file mode 100644
index 000000000..a6260eb12
--- /dev/null
+++ b/lib/wrappers/linenoise/linenoise.nim
@@ -0,0 +1,34 @@
+#
+#
+#            Nim's Runtime Library
+#        (c) Copyright 2015 Andreas Rumpf
+#
+#    See the file "copying.txt", included in this
+#    distribution, for details about the copyright.
+#
+
+type
+  Completions* = object
+    len*: csize
+    cvec*: cstringArray
+
+  CompletionCallback* = proc (a2: cstring; a3: ptr Completions) {.cdecl.}
+
+{.compile: "linenoise.c".}
+
+proc setCompletionCallback*(a2: ptr CompletionCallback) {.
+    importc: "linenoiseSetCompletionCallback".}
+proc addCompletion*(a2: ptr Completions; a3: cstring) {.
+    importc: "linenoiseAddCompletion".}
+proc readLine*(prompt: cstring): cstring {.importc: "linenoise".}
+proc historyAdd*(line: cstring): cint {.importc: "linenoiseHistoryAdd",
+                                        discardable.}
+proc historySetMaxLen*(len: cint): cint {.importc: "linenoiseHistorySetMaxLen".}
+proc historySave*(filename: cstring): cint {.importc: "linenoiseHistorySave".}
+proc historyLoad*(filename: cstring): cint {.importc: "linenoiseHistoryLoad".}
+proc clearScreen*() {.importc: "linenoiseClearScreen".}
+proc setMultiLine*(ml: cint) {.importc: "linenoiseSetMultiLine".}
+proc printKeyCodes*() {.importc: "linenoisePrintKeyCodes".}
+
+proc free*(s: cstring) {.importc: "free", header: "<stdlib.h>".}
+