API Reference
Complete C++ API reference for ZAP C++ (ZAP)
API Reference
This reference covers the core ZAP C++ (ZAP) API for building and reading messages.
Core Headers
MessageBuilder Classes
MallocMessageBuilder
The primary class for building messages:
Builder Interface
Generated builder classes provide these methods:
| Method | Description |
|---|---|
setField(value) | Set a scalar field |
initField() | Initialize a struct field |
initField(size) | Initialize a list with given size |
getField() | Get builder for existing struct field |
hasField() | Check if pointer field is set |
adoptField(orphan) | Adopt an orphan into this field |
disownField() | Remove and return field as orphan |
Setting Fields
List Fields
MessageReader Classes
StreamFdMessageReader
Read from a file descriptor:
PackedFdMessageReader
Read packed format from file descriptor:
FlatArrayMessageReader
Read from a flat array (zero-copy if aligned):
InputStreamMessageReader
Read from any input stream:
Reader Interface
| Method | Description |
|---|---|
getField() | Get field value (returns default if not set) |
hasField() | Check if pointer field is set |
isField() | Check which union member is set |
which() | Get active union member as enum |
Reading Fields
Serialization Functions
Standard Format
Packed Format
Streaming Messages
ReaderOptions
Control reader behavior for security:
Unions
Building
Reading
Orphans
Create objects outside the message tree:
Dynamic API
Access messages without compile-time schema:
DynamicValue Types
Pretty Printing
Thread Safety
- MessageBuilder - Not thread-safe for concurrent writes
- MessageReader - Safe for concurrent reads from multiple threads
- Multiple readers can share the same underlying message data
Memory Management
Arena Allocation
Copying Messages
Error Handling
Next Steps
- See Serialization Examples
- Explore RPC Examples