mirror of
https://github.com/fumiama/simple-protobuf.git
synced 2026-06-05 00:10:24 +08:00
31 lines
927 B
C
31 lines
927 B
C
#ifndef _SIMPLE_PROTOBUF_H_
|
|
#define _SIMPLE_PROTOBUF_H_
|
|
|
|
#include <stdio.h>
|
|
#include <stdint.h>
|
|
|
|
#define MAX_SIMPLE_PB_STRUCT_LEN (1ull<<20)
|
|
|
|
struct simple_pb_t {
|
|
uint32_t struct_len, real_len;
|
|
char target[];
|
|
};
|
|
typedef struct simple_pb_t simple_pb_t;
|
|
|
|
simple_pb_t* get_pb(FILE* fp);
|
|
|
|
// get_pb_len returns 0 on error
|
|
uint32_t get_pb_len(FILE* fp);
|
|
|
|
simple_pb_t* read_pb_into(FILE* fp, simple_pb_t* spb);
|
|
|
|
long set_pb(FILE* fp, const uint32_t* items_len, uint32_t struct_len, const void* target);
|
|
|
|
// items_len = align_struct(uint32_t struct_size, uint32_t items_cnt, void* item_addr1, void* item_addr2...)
|
|
uint32_t* align_struct(uint32_t struct_size, uint32_t items_cnt, ...);
|
|
|
|
// items_len = align_struct_into(uint32_t struct_size, uint32_t* items_len, uint32_t items_cnt, void* item_addr1, void* item_addr2...)
|
|
uint32_t* align_struct_into(uint32_t struct_size, uint32_t* items_len, uint32_t items_cnt, ...);
|
|
|
|
#endif
|