enhance to generate encode routine to be more robust to encode NULL

This commit is contained in:
Rongsong Shen 2025-04-27 17:23:50 +08:00
parent 3425f75440
commit 07e2126e25
4 changed files with 17 additions and 1 deletions

View file

@ -15,11 +15,17 @@ struct Publish $C.mapname("publish_t") {
isbn @0: UInt64;
year @1: UInt32;
}
struct Nulldata $C.mapname("nulldata_t") {
null @0: UInt32 $C.mapname("null_");
}
struct Book $C.mapname("book_t") {
title @0: Text;
authors @1: List(Text) $C.mapname("authors") $C.maplistcount("n_authors");
chapters @5: List(Chapter) $C.mapname("chapters_") $C.maplistcount("n_chapters");
publish @6: Publish;
nulldata @7: Nulldata;
magic1 @2: List(UInt32) $C.mapname("magic_1") $C.maplistcount("n_magic1");
acquire :union $C.mapuniontag("acquire_method") {
buy @3: Text;

View file

@ -16,6 +16,10 @@ typedef struct {
uint32_t year;
} publish_t;
typedef struct {
int null_;
} nulldata_t;
typedef struct {
char *title;
int n_authors;
@ -23,6 +27,7 @@ typedef struct {
int n_chapters;
chapter_t *chapters_;
publish_t *publish;
nulldata_t *nulldata;
int n_magic1;
uint32_t *magic_1;
int acquire_method;

View file

@ -44,7 +44,8 @@ int encode() {
book.authors = authors;
book.n_chapters = 3;
book.chapters_ = &chapters[0];
book.publish = &publish;
book.publish = &publish ;
book.nulldata = NULL;
book.n_magic1 = 2;
book.magic_1 = &magic1[0];
book.acquire_method = Book_acquire_buy;