summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuo Jinghua <sunmoon1997@gmail.com>2009-10-31 15:41:45 +0800
committerLuo Jinghua <sunmoon1997@gmail.com>2009-10-31 15:41:45 +0800
commit7365f3d6590b6ca3df9b2e3bd52967c54a9e2efe (patch)
tree2ffb2f60566fb7a58c11f57ce5c8bb869c48df0d
parentd84c5588a553b85c7a6a319c3c274bb5b5005a80 (diff)
milkway: fixed object allocation
-rw-r--r--milkway/mw-object.c2
-rw-r--r--milkway/mw-object.h11
2 files changed, 8 insertions, 5 deletions
diff --git a/milkway/mw-object.c b/milkway/mw-object.c
index 51ca47e..39130bf 100644
--- a/milkway/mw-object.c
+++ b/milkway/mw-object.c
@@ -130,6 +130,7 @@ void
mw_object_init_type(mw_object_type_t *type,
mw_object_type_t *parent,
const char *name,
+ size_t object_size,
size_t type_size,
size_t priv_size,
mw_object_type_init_func_t func)
@@ -145,6 +146,7 @@ mw_object_init_type(mw_object_type_t *type,
memcpy (type, parent, parent->type_size);
type->name = name;
+ type->size = object_size;
type->type_size = type_size;
type->priv_size = priv_size;
type->priv_offset = parent->priv_offset + MW_PRIV_ALIGN(parent->priv_size);
diff --git a/milkway/mw-object.h b/milkway/mw-object.h
index de268ba..3cbc837 100644
--- a/milkway/mw-object.h
+++ b/milkway/mw-object.h
@@ -64,9 +64,9 @@ struct mw_object {
typedef void (*mw_object_type_init_func_t)(mw_object_type_t*);
-#define MW_DEFINE_GET_TYPE(objname, type_name, parent_type, dsc_name, priv_size) \
+#define MW_DEFINE_GET_TYPE(obj_name, type_name, parent_type, dsc_name, priv_size) \
type_name* \
- objname ## _get_type(void) \
+ obj_name ## _get_type(void) \
{ \
static union { \
mw_object_type_t base; \
@@ -79,10 +79,10 @@ typedef void (*mw_object_type_init_func_t)(mw_object_type_t*);
mw_object_type_t *__base = (mw_object_type_t*)&__type.type; \
\
mw_object_init_type(__base, __parent, \
- dsc_name, sizeof(type_name), \
- priv_size, \
+ dsc_name, sizeof(obj_name ## _t), \
+ sizeof(type_name), priv_size, \
(mw_object_type_init_func_t) \
- objname ## _type_init); \
+ obj_name ## _type_init); \
init = MW_TRUE; \
} \
return &__type.type; \
@@ -110,6 +110,7 @@ mw_public void
mw_object_init_type(mw_object_type_t *type,
mw_object_type_t *parent,
const char *name,
+ size_t object_size,
size_t type_size,
size_t priv_size,
mw_object_type_init_func_t func);