When dealing with platform libraries, it is often necessary to provide special cases for various platforms. The variable
Sys.KERNEL can be used to write these special cases. There are several functions in the
Sys module intended to make this easier:
iswindows. These may be used as follows:
if Sys.iswindows() some_complicated_thing(a) end
isapple are mutually exclusive subsets of
isunix. Additionally, there is a macro
@static which makes it possible to use these functions to conditionally hide invalid code, as demonstrated in the following examples.
ccall((@static Sys.iswindows() ? :_fopen : :fopen), ...)
@static if Sys.islinux() some_complicated_thing(a) else some_different_thing(a) end
When chaining conditionals (including
@static must be repeated for each level (parentheses optional, but recommended for readability):
@static Sys.iswindows() ? :a : (@static Sys.isapple() ? :b : :c)
© 2009–2018 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.