2021-05-25 03:37:47 +00:00
|
|
|
/** \page page_spa_design SPA Design
|
2020-06-09 15:08:26 +00:00
|
|
|
|
2020-06-09 15:29:40 +00:00
|
|
|
# Conventions
|
|
|
|
|
|
|
|
## Types
|
|
|
|
|
|
|
|
Types are generally divided into two categories:
|
|
|
|
|
2021-05-25 03:37:47 +00:00
|
|
|
- String types: They identify interfaces and highlevel object types.
|
|
|
|
- integer types: These are enumerations used in the parts where high
|
2020-06-09 15:29:40 +00:00
|
|
|
performance/ease of use/low space overhead is needed.
|
|
|
|
|
|
|
|
The SPA type is system is statis and very simple but still allows you
|
|
|
|
to make and introspect complex object type hierarchies.
|
|
|
|
|
|
|
|
See the type system docs for more info.
|
|
|
|
|
|
|
|
## Error codes
|
|
|
|
|
|
|
|
SPA uses negative integers as errno style error codes. Functions that return an
|
|
|
|
int result code generated an error when < 0. `spa_strerror()` can be used to
|
|
|
|
get a string representation of the error code.
|
|
|
|
|
|
|
|
SPA also has a way to encode asynchronous results. This is done by setting a
|
|
|
|
high bit (bit 30, the `ASYNC_BIT`) in the result code and a sequence number
|
|
|
|
in the lower bits. This result is normally identified as a positive success
|
|
|
|
result code and the sequence number can later be matched to the completion
|
|
|
|
event.
|
|
|
|
|
|
|
|
## Useful macros
|
|
|
|
|
2021-06-24 00:49:22 +00:00
|
|
|
SPA comes with some useful macros defined in `<spa/utils/defs.h>` and a
|
|
|
|
number of utility functions, see \ref spa_utils
|
2021-05-25 03:37:47 +00:00
|
|
|
|
|
|
|
*/
|