#include <cstring>
#include "platform/embedder/lynx_load_meta_priv.h"
LYNX_EXTERN_C lynx_load_meta_t* lynx_load_meta_create() {
return new lynx_load_meta_t();
}
LYNX_EXTERN_C void lynx_load_meta_set_url(lynx_load_meta_t* meta,
const char* url) {
if (url) {
meta->url = url;
}
}
LYNX_EXTERN_C void lynx_load_meta_set_template_bundle(
lynx_load_meta_t* meta, lynx_template_bundle_t* bundle) {
meta->template_bundle = bundle->template_bundle;
}
LYNX_EXTERN_C void lynx_load_meta_set_binary_data(
lynx_load_meta_t* meta, uint8_t* data, size_t length,
void (*dtor)(uint8_t*, size_t, void*), void* opaque) {
if (meta->binary_data.data) {
if (meta->binary_data.dtor) {
meta->binary_data.dtor(meta->binary_data.data, meta->binary_data.length,
meta->binary_data.opaque);
} else {
delete[] meta->binary_data.data;
}
}
if (dtor) {
meta->binary_data.data = data;
meta->binary_data.length = length;
meta->binary_data.dtor = dtor;
meta->binary_data.opaque = opaque;
} else {
meta->binary_data.data = new uint8_t[length];
meta->binary_data.length = length;
meta->binary_data.dtor = nullptr;
memcpy(meta->binary_data.data, data, length);
}
}
LYNX_EXTERN_C void lynx_load_meta_set_initial_data(lynx_load_meta_t* meta,
lynx_template_data_t* data) {
meta->initial_data = data->template_data;
}
LYNX_EXTERN_C void lynx_load_meta_set_global_props(lynx_load_meta_t* meta,
lynx_template_data_t* data) {
meta->global_props = data->template_data;
}
LYNX_EXTERN_C void lynx_load_meta_release(lynx_load_meta_t* meta) {
if (meta->binary_data.data) {
if (meta->binary_data.dtor) {
meta->binary_data.dtor(meta->binary_data.data, meta->binary_data.length,
meta->binary_data.opaque);
} else {
delete[] meta->binary_data.data;
}
}
delete meta;
}
int lynx_load_meta_is_template_bundle_valid(lynx_load_meta_t* meta) {
return meta->template_bundle != nullptr;
}