Provides a description of the current platform in lurid detail so that common code never needs to actually know what the current operating system and architecture are.
It is both very pragmatic and canonical in that if any application code finds itself needing to make a platform decision, it should always define a Starboard Configuration feature instead. This implies the continued existence of very narrowly-defined configuration features, but it retains porting control in Starboard.
Macros
SB_ALIGNAS(byte_alignment)
Specifies the alignment for a class, struct, union, enum, class/struct field, or stack variable.
SB_ALIGNOF(type)
Returns the alignment required for any instance of the type indicated by type
.
SB_ARRAY_SIZE(array)
A constant expression that evaluates to the size_t size of a statically-sized array.
SB_ARRAY_SIZE_INT(array)
A constant expression that evaluates to the int size of a statically-sized array.
SB_CAN(SB_FEATURE)
Determines a compile-time capability of the system.
SB_COMPILE_ASSERT(expr, msg)
Will cause a compiler error with msg
if expr
is false. msg
must be a valid
identifier, and must be a unique type in the scope of the declaration.
SB_DEPRECATED(FUNC)
SB_DEPRECATED(int Foo(int bar)); Annotates the function as deprecated, which will trigger a compiler warning when referenced.
SB_DEPRECATED_EXTERNAL(FUNC)
SB_DEPRECATED_EXTERNAL(...) annotates the function as deprecated for external clients, but not deprecated for starboard.
SB_FUNCTION
Whether we use PRETTY_FUNCTION PRETTY_FUNCTION or FUNCTION FUNCTION for logging.
SB_HAS(SB_FEATURE)
Determines at compile-time whether this platform has a standard feature or header available.
SB_HAS_64_BIT_ATOMICS
SB_C_FORCE_INLINE annotation for forcing a C function to be inlined. SB_EXPORT_PLATFORM annotates symbols as exported from shared libraries. SB_IMPORT_PLATFORM annotates symbols as imported from shared libraries. Whether the current platform has 64-bit atomic operations.
SB_HAS_QUIRK(SB_FEATURE)
Determines at compile-time whether this platform has a quirk.
SB_INT64_C(x)
Declare numeric literals of signed 64-bit type.
SB_IS(SB_FEATURE)
Determines at compile-time an inherent aspect of this platform.
SB_LIKELY(x)
Macro for hinting that an expression is likely to be true.
SB_MAXIMUM_API_VERSION
The maximum API version allowed by this version of the Starboard headers, inclusive. The API version is not stable and is open for changes.
SB_MINIMUM_API_VERSION
The minimum API version allowed by this version of the Starboard headers, inclusive.
SB_NORETURN
Macro to annotate a function as noreturn, which signals to the compiler that the function cannot return.
SB_PREFERRED_RGBA_BYTE_ORDER_RGBA
An enumeration of values for the kSbPreferredByteOrder configuration variable. Setting this up properly means avoiding slow color swizzles when passing pixel data from one library to another. Note that these definitions are in byte-order and so are endianness-independent.
SB_PRINTF_FORMAT(format_param, dots_param)
Tells the compiler a function is using a printf-style format string.
format_param
is the one-based index of the format string parameter;
dots_param
is the one-based index of the "..." parameter. For v*printf
functions (which take a va_list), pass 0 for dots_param. (This is undocumented
but matches what the system C headers do.) (Partially taken from
base/compiler_specific.h)
SB_RESTRICT
Include the platform-specific configuration. This macro is set by GN in starboard/build/config/BUILD.gn and passed in on the command line for all targets and all configurations. Makes a pointer-typed parameter restricted so that the compiler can make certain optimizations because it knows the pointers are unique.
SB_SIZE_OF(DATATYPE)
Determines at compile-time the size of a data type, or 0 if the data type that was specified was invalid.
SB_STRINGIFY(x)
Standard CPP trick to stringify an evaluated macro definition.
SB_UINT64_C(x)
Declare numeric literals of unsigned 64-bit type.
SB_UNLIKELY(x)
Macro for hinting that an expression is likely to be false.
SB_UNREFERENCED_PARAMETER(x)
Trivially references a parameter that is otherwise unreferenced, preventing a compiler warning on some platforms.
SB_WARN_UNUSED_RESULT
Causes the annotated (at the end) function to generate a warning if the result is not accessed.