API Reference¶
Complete API documentation for ZeroIPC across all supported languages.
Language APIs¶
C++ API¶
Modern C++23 header-only template library.
Key Features: - Template-based for zero overhead - RAII resource management
- Compile-time type safety - Lock-free atomic operations
Documentation: - Memory & Table - Core memory management - Data Structures - Arrays, queues, stacks, etc. - Synchronization - Semaphores, barriers, latches - Codata Structures - Futures, streams, channels
Python API¶
Pure Python implementation with NumPy integration.
Key Features: - No compilation required - NumPy for performance - Duck typing for flexibility - mmap for direct memory access
Documentation: - Memory & Table - Core memory management - Data Structures - Arrays, queues, stacks, etc. - Synchronization - Semaphores, barriers, latches - Codata Structures - Futures, streams, channels
C API¶
Pure C99 static library for maximum portability.
Key Features: - Zero dependencies beyond POSIX - Explicit memory management - Minimal overhead - Maximum portability
Quick Reference¶
Common Operations¶
Creating Shared Memory¶
Creating an Array¶
Creating a Queue¶
Type Mapping¶
Cross-language type compatibility:
| C++ | Python | C | Size |
|---|---|---|---|
int8_t | np.int8 | int8_t | 1 byte |
int16_t | np.int16 | int16_t | 2 bytes |
int32_t | np.int32 | int32_t | 4 bytes |
int64_t | np.int64 | int64_t | 8 bytes |
float | np.float32 | float | 4 bytes |
double | np.float64 | double | 8 bytes |
Naming Conventions¶
C++¶
- Classes: PascalCase (
Memory,Array<T>) - Methods: camelCase (
enqueue(),dequeue()) - Namespaces:
zeroipc::
Python¶
- Classes: PascalCase (
Memory,Array) - Methods: snake_case (
enqueue(),dequeue()) - Module:
zeroipc
C¶
- Functions:
zipc_*prefix (zipc_memory_create()) - Types:
zipc_*_tsuffix (zipc_memory_t) - Struct tags: snake_case
Error Handling¶
C++¶
// Returns std::optional<T> for operations that may fail
auto value = queue.dequeue();
if (value) {
process(*value);
} else {
// Queue was empty
}
Python¶
# Returns None for operations that may fail
value = queue.dequeue()
if value is not None:
process(value)
else:
# Queue was empty
C¶
// Returns status codes
int result = zipc_queue_dequeue(queue, &value);
if (result == ZIPC_SUCCESS) {
process(value);
} else {
// Queue was empty
}
Next Steps¶
- Browse the C++ API
- Browse the Python API
- Browse the C API
- See Examples for usage patterns