blob: b31f89d3d73a95528527d7d8c1d99cdc90bc38a3 [file] [log] [blame]
def StdC : StandardSpec<"stdc"> {
ConstType ConstVoidPtr = ConstType<VoidPtr>;
RestrictedPtrType VoidRestrictedPtr = RestrictedPtrType<VoidType>;
ConstType ConstVoidRestrictedPtr = ConstType<VoidRestrictedPtr>;
PtrType CharPtr = PtrType<CharType>;
ConstType ConstCharPtr = ConstType<CharPtr>;
RestrictedPtrType CharRestrictedPtr = RestrictedPtrType<CharType>;
ConstType ConstCharRestrictedPtr = ConstType<CharRestrictedPtr>;
NamedType OnceFlagType = NamedType<"once_flag">;
PtrType OnceFlagTypePtr = PtrType<OnceFlagType>;
// TODO(sivachandra): Remove this non-standard type when a formal
// way to describe callable types is available.
NamedType CallOnceFuncType = NamedType<"__call_once_func_t">;
NamedType MtxTType = NamedType<"mtx_t">;
PtrType MtxTTypePtr = PtrType<MtxTType>;
NamedType ThrdStartTType = NamedType<"thrd_start_t">;
NamedType ThrdTType = NamedType<"thrd_t">;
PtrType ThrdTTypePtr = PtrType<ThrdTType>;
PtrType IntPtr = PtrType<IntType>;
PtrType FloatPtr = PtrType<FloatType>;
PtrType DoublePtr = PtrType<DoubleType>;
NamedType SigHandlerT = NamedType<"__sighandler_t">;
NamedType FILE = NamedType<"FILE">;
PtrType FILEPtr = PtrType<FILE>;
RestrictedPtrType FILERestrictedPtr = RestrictedPtrType<FILE>;
HeaderSpec Assert = HeaderSpec<
"assert.h",
[
Macro<"static_assert">,
Macro<"assert">,
],
[], // Types
[], // Enumerations
[]
>;
HeaderSpec String = HeaderSpec<
"string.h",
[
Macro<"NULL">,
],
[
SizeTType,
],
[], // Enumerations
[
FunctionSpec<
"memcpy",
RetValSpec<VoidPtr>,
[ArgSpec<VoidRestrictedPtr>,
ArgSpec<ConstVoidRestrictedPtr>,
ArgSpec<SizeTType>]
>,
FunctionSpec<
"memmove",
RetValSpec<VoidPtr>,
[ArgSpec<VoidPtr>, ArgSpec<ConstVoidPtr>, ArgSpec<SizeTType>]
>,
FunctionSpec<
"memcmp",
RetValSpec<IntType>,
[ArgSpec<ConstVoidPtr>, ArgSpec<ConstVoidPtr>, ArgSpec<SizeTType>]
>,
FunctionSpec<
"memchr",
RetValSpec<VoidPtr>,
[ArgSpec<ConstVoidPtr>, ArgSpec<IntType>, ArgSpec<SizeTType>]
>,
FunctionSpec<
"memset",
RetValSpec<VoidPtr>,
[ArgSpec<VoidPtr>, ArgSpec<IntType>, ArgSpec<SizeTType>]
>,
FunctionSpec<
"strcpy",
RetValSpec<CharPtr>,
[ArgSpec<CharRestrictedPtr>, ArgSpec<ConstCharRestrictedPtr>]
>,
FunctionSpec<
"strncpy",
RetValSpec<CharPtr>,
[ArgSpec<CharRestrictedPtr>,
ArgSpec<ConstCharRestrictedPtr>,
ArgSpec<SizeTType>]
>,
FunctionSpec<
"strcat",
RetValSpec<CharPtr>,
[ArgSpec<CharRestrictedPtr>, ArgSpec<ConstCharRestrictedPtr>]
>,
FunctionSpec<
"strncat",
RetValSpec<CharPtr>,
[ArgSpec<CharPtr>, ArgSpec<ConstCharPtr>, ArgSpec<SizeTType>]
>,
FunctionSpec<
"strcmp",
RetValSpec<IntType>,
[ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>]
>,
FunctionSpec<
"strcoll",
RetValSpec<IntType>,
[ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>]
>,
FunctionSpec<
"strncmp",
RetValSpec<IntType>,
[ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>, ArgSpec<SizeTType>]
>,
FunctionSpec<
"strxfrm",
RetValSpec<SizeTType>,
[ArgSpec<CharRestrictedPtr>,
ArgSpec<ConstCharRestrictedPtr>,
ArgSpec<SizeTType>]
>,
FunctionSpec<
"strchr",
RetValSpec<CharPtr>,
[ArgSpec<ConstCharPtr>, ArgSpec<IntType>]
>,
FunctionSpec<
"strcspn",
RetValSpec<SizeTType>,
[ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>]
>,
FunctionSpec<
"strpbrk",
RetValSpec<CharPtr>,
[ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>]
>,
FunctionSpec<
"strrchr",
RetValSpec<CharPtr>,
[ArgSpec<ConstCharPtr>, ArgSpec<IntType>]
>,
FunctionSpec<
"strspn",
RetValSpec<SizeTType>,
[ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>]
>,
FunctionSpec<
"strstr",
RetValSpec<CharPtr>,
[ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>]
>,
FunctionSpec<
"strtok",
RetValSpec<CharPtr>,
[ArgSpec<CharRestrictedPtr>, ArgSpec<ConstCharRestrictedPtr>]
>,
FunctionSpec<
"strerror",
RetValSpec<CharPtr>,
[ArgSpec<IntType>]
>,
FunctionSpec<
"strlen",
RetValSpec<SizeTType>,
[ArgSpec<ConstCharPtr>]
>,
]
>;
HeaderSpec Math = HeaderSpec<
"math.h",
[
Macro<"MATH_ERRNO">,
Macro<"MATH_ERREXCEPT">,
Macro<"math_errhandling">,
Macro<"INFINITY">,
Macro<"NAN">,
Macro<"isfinite">,
Macro<"isinf">,
Macro<"isnan">,
],
[
NamedType<"float_t">,
NamedType<"double_t">,
],
[], // Enumerations
[
FunctionSpec<"copysign", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
FunctionSpec<"copysignf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
FunctionSpec<"ceil", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
FunctionSpec<"ceilf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
FunctionSpec<"fabs", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
FunctionSpec<"fabsf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
FunctionSpec<"floor", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
FunctionSpec<"floorf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
FunctionSpec<"frexp", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<IntPtr>]>,
FunctionSpec<"frexpf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<IntPtr>]>,
FunctionSpec<"logb", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
FunctionSpec<"logbf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
FunctionSpec<"modf", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoublePtr>]>,
FunctionSpec<"modff", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatPtr>]>,
FunctionSpec<"cosf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
FunctionSpec<"sinf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
FunctionSpec<"expf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
FunctionSpec<"exp2f", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
FunctionSpec<"round", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
FunctionSpec<"roundf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
FunctionSpec<"trunc", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
FunctionSpec<"truncf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
]
>;
HeaderSpec StdIO = HeaderSpec<
"stdio.h",
[], // Macros
[ // Types
SizeTType,
FILE,
],
[], // Enumerations
[
FunctionSpec<
"fwrite",
RetValSpec<SizeTType>,
[ArgSpec<ConstVoidRestrictedPtr>,
ArgSpec<SizeTType>,
ArgSpec<SizeTType>,
ArgSpec<FILERestrictedPtr>]
>,
]
>;
HeaderSpec StdLib = HeaderSpec<
"stdlib.h",
[], // Macros
[], // Types
[], // Enumerations
[
FunctionSpec<"abort", RetValSpec<NoReturn>, [ArgSpec<VoidType>]>,
FunctionSpec<"_Exit", RetValSpec<NoReturn>, [ArgSpec<IntType>]>,
]
>;
HeaderSpec Errno = HeaderSpec<
"errno.h",
[
Macro<"errno">,
Macro<"EDOM">,
Macro<"EILSEQ">,
Macro<"ERANGE">,
]
>;
HeaderSpec Signal = HeaderSpec<
"signal.h",
[
Macro<"SIG_BLOCK">,
Macro<"SIG_UNBLOCK">,
Macro<"SIG_SETMASK">,
Macro<"SIGABRT">,
Macro<"SIGFPE">,
Macro<"SIGILL">,
Macro<"SIGINT">,
Macro<"SIGSEGV">,
Macro<"SIGTERM">
],
[
SizeTType,
SigHandlerT,
],
[], // Enumerations
[
FunctionSpec<"raise", RetValSpec<IntType>, [ArgSpec<IntType>]>,
FunctionSpec<
"signal",
RetValSpec<SigHandlerT>,
[ArgSpec<IntType>, ArgSpec<SigHandlerT>]
>,
]
>;
HeaderSpec Threads = HeaderSpec<
"threads.h",
[
Macro<"ONCE_FLAG_INIT">,
],
[
OnceFlagType,
CallOnceFuncType,
MtxTType,
ThrdStartTType,
ThrdTType,
],
[
EnumeratedNameValue<"mtx_plain">,
EnumeratedNameValue<"mtx_recursive">,
EnumeratedNameValue<"mtx_timed">,
EnumeratedNameValue<"thrd_timedout">,
EnumeratedNameValue<"thrd_success">,
EnumeratedNameValue<"thrd_busy">,
EnumeratedNameValue<"thrd_error">,
EnumeratedNameValue<"thrd_nomem">,
],
[
FunctionSpec<
"call_once",
RetValSpec<VoidType>,
[
ArgSpec<OnceFlagTypePtr>,
ArgSpec<CallOnceFuncType>,
]
>,
FunctionSpec<
"mtx_init",
RetValSpec<IntType>,
[
ArgSpec<MtxTTypePtr>,
ArgSpec<IntType>,
]
>,
FunctionSpec<
"mtx_lock",
RetValSpec<IntType>,
[
ArgSpec<MtxTTypePtr>,
]
>,
FunctionSpec<
"mtx_unlock",
RetValSpec<IntType>,
[
ArgSpec<MtxTTypePtr>,
]
>,
FunctionSpec<
"thrd_create",
RetValSpec<IntType>,
[
ArgSpec<ThrdTTypePtr>,
ArgSpec<ThrdStartTType>,
ArgSpec<VoidPtr>,
]
>,
FunctionSpec<
"thrd_join",
RetValSpec<IntType>,
[
ArgSpec<ThrdTTypePtr>,
ArgSpec<IntPtr>,
]
>
]
>;
let Headers = [
Assert,
Errno,
Math,
String,
StdIO,
StdLib,
Signal,
Threads,
];
}