Opaque Types
Differently from foreign types, opaque types generate a typedef in the generated C code.
An example of their usage:
platform posix {
opaque { dirent };
extern def opendir(name: ref char): usize;
extern def readdir(dirp: usize): usize;
extern def closedir(dirp: usize): i32;
extern def stat(pathname: ref char, statbuf: usize): i32;
def dirent_d_name(entry: usize): ref char {
unsafe {
val d: ref dirent = entry;
return d*.d_name;
}
}
def stat_is_dir(st: usize): i32 {
unsafe {
val sb: $(stat) = st;
return C.S_ISDIR(sb*.st_mode);
}
}
}