diff options
author | Luo Jinghua <sunmoon1997@gmail.com> | 2009-10-31 15:41:45 +0800 |
---|---|---|
committer | Luo Jinghua <sunmoon1997@gmail.com> | 2009-10-31 15:41:45 +0800 |
commit | 7365f3d6590b6ca3df9b2e3bd52967c54a9e2efe (patch) | |
tree | 2ffb2f60566fb7a58c11f57ce5c8bb869c48df0d | |
parent | d84c5588a553b85c7a6a319c3c274bb5b5005a80 (diff) |
milkway: fixed object allocation
-rw-r--r-- | milkway/mw-object.c | 2 | ||||
-rw-r--r-- | milkway/mw-object.h | 11 |
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); |