# C Header Files
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
- [synta.h](#syntah)
- [Usage from C](#usage-from-c)
- [Linking](#linking)
- [Using pkg-config](#using-pkg-config)
- [Using CMake](#using-cmake)
- [Manual](#manual)
- [Documentation](#documentation)
This directory contains automatically generated C header files for the Synta FFI.
## synta.h
The main C header file, generated from Rust FFI code using cbindgen.
**Warning**: Do not modify this file manually. It is automatically regenerated when building the `synta-ffi` crate.
To regenerate:
```bash
cargo build --release -p synta-ffi
```
## Usage from C
Include the header in your C code:
```c
#include <synta.h>
// Example: Decode an integer
const uint8_t data[] = {0x02, 0x01, 0x2A}; // INTEGER 42
SyntaDecoder* decoder = synta_decoder_new(data, sizeof(data), SyntaEncoding_Der);
SyntaInteger* integer = NULL;
if (synta_decode_integer(decoder, &integer) == SyntaErrorCode_Success) {
int64_t value;
if (synta_integer_to_i64(integer, &value) == SyntaErrorCode_Success) {
printf("Value: %lld\n", (long long)value);
}
synta_integer_free(integer);
}
synta_decoder_free(decoder);
```
## Linking
### Using pkg-config
```bash
gcc myapp.c $(pkg-config --cflags --libs csynta) -o myapp
```
### Using CMake
```cmake
find_package(Synta REQUIRED)
target_link_libraries(myapp Synta::Synta)
```
### Manual
```bash
gcc myapp.c -I/path/to/include -L/path/to/lib -lcsynta -o myapp
```
## Documentation
See the following documents for more information:
- [C API Reference](../docs/C_API.md) - Complete API documentation
- [Memory Management](../docs/C_MEMORY.md) - Memory ownership and safety
- [Migration from OpenSSL](../docs/MIGRATION_OPENSSL.md) - Guide for OpenSSL users