From d0a6c806a9d1e55838afec2e2da521996f675ad3 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Thu, 30 Dec 2010 12:30:36 +0100 Subject: [PATCH] wrc: Explicitly define structure creation functions instead of playing with macros. --- tools/wrc/newstruc.c | 155 ++++++++++++++++++++++++++++++++++++++++++++------- tools/wrc/newstruc.h | 49 +++++++--------- 2 files changed, 153 insertions(+), 51 deletions(-) diff --git a/tools/wrc/newstruc.c b/tools/wrc/newstruc.c index 603eb0c4dc4..c157cb41eea 100644 --- a/tools/wrc/newstruc.c +++ b/tools/wrc/newstruc.c @@ -45,31 +45,144 @@ typedef struct } BITMAPOS2HEADER; #include -/* Generate new_* functions that have no parameters (NOTE: no ';') */ -__NEW_STRUCT_FUNC(dialog) -__NEW_STRUCT_FUNC(name_id) -__NEW_STRUCT_FUNC(menu) -__NEW_STRUCT_FUNC(menu_item) -__NEW_STRUCT_FUNC(control) -__NEW_STRUCT_FUNC(icon) -__NEW_STRUCT_FUNC(cursor) -__NEW_STRUCT_FUNC(versioninfo) -__NEW_STRUCT_FUNC(ver_value) -__NEW_STRUCT_FUNC(ver_block) -__NEW_STRUCT_FUNC(stt_entry) -__NEW_STRUCT_FUNC(accelerator) -__NEW_STRUCT_FUNC(event) -__NEW_STRUCT_FUNC(raw_data) -__NEW_STRUCT_FUNC(lvc) -__NEW_STRUCT_FUNC(res_count) -__NEW_STRUCT_FUNC(string) -__NEW_STRUCT_FUNC(toolbar_item) -__NEW_STRUCT_FUNC(ani_any) - /* New instances for all types of structures */ /* Very inefficient (in size), but very functional :-] * Especially for type-checking. */ + +dialog_t *new_dialog(void) +{ + dialog_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +name_id_t *new_name_id(void) +{ + name_id_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +menu_t *new_menu(void) +{ + menu_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +menu_item_t *new_menu_item(void) +{ + menu_item_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +control_t *new_control(void) +{ + control_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +icon_t *new_icon(void) +{ + icon_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +cursor_t *new_cursor(void) +{ + cursor_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +versioninfo_t *new_versioninfo(void) +{ + versioninfo_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +ver_value_t *new_ver_value(void) +{ + ver_value_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +ver_block_t *new_ver_block(void) +{ + ver_block_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +stt_entry_t *new_stt_entry(void) +{ + stt_entry_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +accelerator_t *new_accelerator(void) +{ + accelerator_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +event_t *new_event(void) +{ + event_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +raw_data_t *new_raw_data(void) +{ + raw_data_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +lvc_t *new_lvc(void) +{ + lvc_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +res_count_t *new_res_count(void) +{ + res_count_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +string_t *new_string(void) +{ + string_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +toolbar_item_t *new_toolbar_item(void) +{ + toolbar_item_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + +ani_any_t *new_ani_any(void) +{ + ani_any_t *ret = xmalloc( sizeof(*ret) ); + memset( ret, 0, sizeof(*ret) ); + return ret; +} + resource_t *new_resource(enum res_e t, void *res, int memopt, language_t *lan) { resource_t *r = xmalloc(sizeof(resource_t)); diff --git a/tools/wrc/newstruc.h b/tools/wrc/newstruc.h index 3bd4c29bc94..c7a74eb1abe 100644 --- a/tools/wrc/newstruc.h +++ b/tools/wrc/newstruc.h @@ -23,36 +23,25 @@ #include "wrctypes.h" -#define __NEW_STRUCT_FUNC(p) \ - p##_t *new_##p(void)\ - {\ - p##_t * ret = xmalloc(sizeof(*ret)); \ - memset( ret, 0, sizeof(*ret) ); \ - return ret; \ - } - -#define __NEW_STRUCT_PROTO(p) p##_t *new_##p(void) - -__NEW_STRUCT_PROTO(dialog); -__NEW_STRUCT_PROTO(name_id); -__NEW_STRUCT_PROTO(menu); -__NEW_STRUCT_PROTO(menu_item); -__NEW_STRUCT_PROTO(control); -__NEW_STRUCT_PROTO(icon); -__NEW_STRUCT_PROTO(cursor); -__NEW_STRUCT_PROTO(versioninfo); -__NEW_STRUCT_PROTO(ver_value); -__NEW_STRUCT_PROTO(ver_block); -__NEW_STRUCT_PROTO(stt_entry); -__NEW_STRUCT_PROTO(accelerator); -__NEW_STRUCT_PROTO(event); -__NEW_STRUCT_PROTO(raw_data); -__NEW_STRUCT_PROTO(lvc); -__NEW_STRUCT_PROTO(res_count); -__NEW_STRUCT_PROTO(string); -__NEW_STRUCT_PROTO(toolbar_item); -__NEW_STRUCT_PROTO(ani_any); - +dialog_t *new_dialog(void); +name_id_t *new_name_id(void); +menu_t *new_menu(void); +menu_item_t *new_menu_item(void); +control_t *new_control(void); +icon_t *new_icon(void); +cursor_t *new_cursor(void); +versioninfo_t *new_versioninfo(void); +ver_value_t *new_ver_value(void); +ver_block_t *new_ver_block(void); +stt_entry_t *new_stt_entry(void); +accelerator_t *new_accelerator(void); +event_t *new_event(void); +raw_data_t *new_raw_data(void); +lvc_t *new_lvc(void); +res_count_t *new_res_count(void); +string_t *new_string(void); +toolbar_item_t *new_toolbar_item(void); +ani_any_t *new_ani_any(void); resource_t *new_resource(enum res_e t, void *res, int memopt, language_t *lan); version_t *new_version(DWORD v); characts_t *new_characts(DWORD c); -- 2.11.4.GIT