Carp/core/System.carp
2021-06-08 21:05:51 +02:00

55 lines
2.5 KiB
Plaintext

(system-include "carp_system.h")
(defmodule System
(doc carp-init-globals "Initializes all global variables (in correct order, based on interdependencies). Called automatically by `main` if the project is compiled as an executable. Client code needs to call this function manually when using a library written in Carp.")
(register carp-init-globals (Fn [Int (Ptr (Ptr CChar))] ()) "carp_init_globals")
(doc time "Gets the current system time as an integer.")
(register time (Fn [] Int))
(doc nanotime "Gets the current system time in nanoseconds as a long.")
(register nanotime (Fn [] Long))
(doc sleep-seconds "Sleeps for a specified number of seconds.")
(register sleep-seconds (Fn [Int] ()))
(doc sleep-seconds "Sleeps for a specified number of microseconds.")
(register sleep-micros (Fn [Int] ()))
(doc system "Performs a system command.")
(register system (Fn [&String] Int))
(doc args "Represents the command line arguments.")
(register args (StaticArray String))
(register fork (Fn [] Int) "fork")
(register wait (Fn [(Ptr Int)] Int) "wait")
(register get-exit-status (Fn [Int] Int) "WEXITSTATUS")
(register signal (Fn [Int (Fn [Int] ())] ()) "signal")
(register signal-abort Int "SIGABRT")
(register signal-fpe Int "SIGFPE")
(register signal-ill Int "SIGILL")
(register signal-int Int "SIGINT")
(register signal-segv Int "SIGSEGV")
(register signal-term Int "SIGTERM")
(register abort (Fn [] ()) "abort")
(register errno Int "errno")
(doc error-text "returns a description for the last function from the C standard library to set System.errno. Please note that System.errno may change if strerror() does not know it (and thus sets it to EINVAL), so consider copying it before, if you should need it. Calling error-text after a successful call will return 'SUCCESS' and leave System.errno unchanged.")
(register error-text (Fn [] String) "System_error_text")
(register EACCES Int "EACCES")
(register EEXIST Int "EEXIST")
(register EINVAL Int "EINVAL")
(register EIO Int "EIO")
(register EISDIR Int "EISDIR")
(register ELOOP Int "ELOOP")
(register EMFILE Int "EMFILE")
(register ENAMETOOLONG Int "ENAMETOOLONG")
(register ENOENT Int "ENOENT")
(register ENOMEM Int "EINVAL")
(register ENOSPC Int "ENOSPC")
(register ENOSR Int "ENOSR")
(register ENOTDIR Int "ENOTDIR")
(register ENXIO Int "ENXIO")
(register EOVERFLOW Int "EOVERFLOW")
(register EROFS Int "EROFS")
(register EINTR Int "EINTR")
(doc exit "exits the program.")
(deftemplate exit (Fn [Int] a) "$a $NAME(int code)" "$DECL { exit(code); }")
)