--- a/dbutils/class.c Sun Dec 08 15:46:03 2024 +0100 +++ b/dbutils/class.c Mon Dec 09 23:47:52 2024 +0100 @@ -48,6 +48,8 @@ cls->name = cx_strdup(cx_str(name)); cls->fields = cxHashMapCreateSimple(CX_STORE_POINTERS); cls->fields->collection.simple_destructor = (cx_destructor_func)field_destructor; + cls->obj_fields = cxHashMapCreateSimple(CX_STORE_POINTERS); + cls->obj_fields->collection.simple_destructor = (cx_destructor_func)field_destructor; return cls; } @@ -60,9 +62,16 @@ } void dbuClassAddField(DBUClass *cls, const char *name, DBUField *field) { + free(field->name.ptr); + field->name = cx_strdup(cx_str(name)); cxMapPut(cls->fields, name, field); } +void dbuClassAddObjField(DBUClass *cls, const char *name, DBUField *field, DBUClass *foreign_cls) { + free(field->name.ptr); + field->name = cx_strdup(cx_str(name)); + cxMapPut(cls->obj_fields, foreign_cls->name, field); +} void dbuClassSetPrimaryKeyInt32(DBUClass *cls, const char *column_name, off_t offset) {