30 lines
500 B
C
30 lines
500 B
C
#include "object.h"
|
|
|
|
#include <blue/core/queue.h>
|
|
#include <blue/ds/type.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
struct b_dsref *b_dsref_type_instantiate(const b_dsref_type *type)
|
|
{
|
|
if (!type || type->t_instance_size < sizeof(struct b_dsref)) {
|
|
return NULL;
|
|
}
|
|
|
|
struct b_dsref *out = malloc(type->t_instance_size);
|
|
if (!out) {
|
|
return NULL;
|
|
}
|
|
|
|
memset(out, 0x0, type->t_instance_size);
|
|
|
|
out->ob_ref = 1;
|
|
out->ob_type = type;
|
|
|
|
if (type->t_init) {
|
|
type->t_init(out);
|
|
}
|
|
|
|
return out;
|
|
}
|