// DON'T EDIT MANUALLY !!!!
// auto-generated by gen_txt.py !!!!

using namespace sertxt;

struct ButtonVectorDef {
    const char* name;
    const char* clicked;
    const char* path;
    const char* styleDefault;
    const char* styleMouseOver;
};

struct ButtonDef {
    const char* name;
    const WCHAR* text;
    const char* style;
};

struct ScrollBarDef {
    const char* name;
    const char* style;
    const char* cursor;
};

struct DirectionalLayoutDataDef {
    const char* controlName;
    const char* sla;
    const char* snla;
    const char* align;
};

struct HorizontalLayoutDef {
    const char* name;
    Vec<DirectionalLayoutDataDef*>* children;
};

struct VerticalLayoutDef {
    const char* name;
    Vec<DirectionalLayoutDataDef*>* children;
};

extern const StructMetadata gButtonVectorDefMetadata;

inline ButtonVectorDef* DeserializeButtonVectorDef(char* data, size_t dataLen) {
    auto s = std::string_view(data, dataLen);
    return (ButtonVectorDef*)Deserialize(s, &gButtonVectorDefMetadata);
}

inline ButtonVectorDef* DeserializeButtonVectorDef(TxtNode* root) {
    return (ButtonVectorDef*)Deserialize(root, &gButtonVectorDefMetadata);
}

inline std::string_view SerializeButtonVectorDef(ButtonVectorDef* val) {
    return Serialize((const uint8_t*)val, &gButtonVectorDefMetadata);
}

inline void FreeButtonVectorDef(ButtonVectorDef* val) {
    FreeStruct((uint8_t*)val, &gButtonVectorDefMetadata);
}
extern const StructMetadata gButtonDefMetadata;

inline ButtonDef* DeserializeButtonDef(char* data, size_t dataLen) {
    auto s = std::string_view(data, dataLen);
    return (ButtonDef*)Deserialize(s, &gButtonDefMetadata);
}

inline ButtonDef* DeserializeButtonDef(TxtNode* root) {
    return (ButtonDef*)Deserialize(root, &gButtonDefMetadata);
}

inline std::string_view SerializeButtonDef(ButtonDef* val) {
    return Serialize((const uint8_t*)val, &gButtonDefMetadata);
}

inline void FreeButtonDef(ButtonDef* val) {
    FreeStruct((uint8_t*)val, &gButtonDefMetadata);
}
extern const StructMetadata gScrollBarDefMetadata;

inline ScrollBarDef* DeserializeScrollBarDef(char* data, size_t dataLen) {
    auto s = std::string_view(data, dataLen);
    return (ScrollBarDef*)Deserialize(s, &gScrollBarDefMetadata);
}

inline ScrollBarDef* DeserializeScrollBarDef(TxtNode* root) {
    return (ScrollBarDef*)Deserialize(root, &gScrollBarDefMetadata);
}

inline std::string_view SerializeScrollBarDef(ScrollBarDef* val) {
    return Serialize((const uint8_t*)val, &gScrollBarDefMetadata);
}

inline void FreeScrollBarDef(ScrollBarDef* val) {
    FreeStruct((uint8_t*)val, &gScrollBarDefMetadata);
}
extern const StructMetadata gDirectionalLayoutDataDefMetadata;

inline DirectionalLayoutDataDef* DeserializeDirectionalLayoutDataDef(char* data, size_t dataLen) {
    auto s = std::string_view(data, dataLen);
    return (DirectionalLayoutDataDef*)Deserialize(s, &gDirectionalLayoutDataDefMetadata);
}

inline DirectionalLayoutDataDef* DeserializeDirectionalLayoutDataDef(TxtNode* root) {
    return (DirectionalLayoutDataDef*)Deserialize(root, &gDirectionalLayoutDataDefMetadata);
}

inline std::string_view SerializeDirectionalLayoutDataDef(DirectionalLayoutDataDef* val) {
    return Serialize((const uint8_t*)val, &gDirectionalLayoutDataDefMetadata);
}

inline void FreeDirectionalLayoutDataDef(DirectionalLayoutDataDef* val) {
    FreeStruct((uint8_t*)val, &gDirectionalLayoutDataDefMetadata);
}
extern const StructMetadata gHorizontalLayoutDefMetadata;

inline HorizontalLayoutDef* DeserializeHorizontalLayoutDef(char* data, size_t dataLen) {
    auto s = std::string_view(data, dataLen);
    return (HorizontalLayoutDef*)Deserialize(s, &gHorizontalLayoutDefMetadata);
}

inline HorizontalLayoutDef* DeserializeHorizontalLayoutDef(TxtNode* root) {
    return (HorizontalLayoutDef*)Deserialize(root, &gHorizontalLayoutDefMetadata);
}

inline std::string_view SerializeHorizontalLayoutDef(HorizontalLayoutDef* val) {
    return Serialize((const uint8_t*)val, &gHorizontalLayoutDefMetadata);
}

inline void FreeHorizontalLayoutDef(HorizontalLayoutDef* val) {
    FreeStruct((uint8_t*)val, &gHorizontalLayoutDefMetadata);
}
extern const StructMetadata gVerticalLayoutDefMetadata;

inline VerticalLayoutDef* DeserializeVerticalLayoutDef(char* data, size_t dataLen) {
    auto s = std::string_view(data, dataLen);
    return (VerticalLayoutDef*)Deserialize(s, &gVerticalLayoutDefMetadata);
}

inline VerticalLayoutDef* DeserializeVerticalLayoutDef(TxtNode* root) {
    return (VerticalLayoutDef*)Deserialize(root, &gVerticalLayoutDefMetadata);
}

inline std::string_view SerializeVerticalLayoutDef(VerticalLayoutDef* val) {
    return Serialize((const uint8_t*)val, &gVerticalLayoutDefMetadata);
}

inline void FreeVerticalLayoutDef(VerticalLayoutDef* val) {
    FreeStruct((uint8_t*)val, &gVerticalLayoutDefMetadata);
}
