# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1311649781 0 # Node ID cfe7d2b6bc16523186d159eeb09c41257e9b92fa # Parent d7eafaa054aba9c111d817b2a377537581ae374c Added DW_INT_TO_POINTER/DW_UINT_TO_POINTER/DW_POINTER_TO_INT/DW_POINTER_TO_UINT macros. These are used to cast between pointer and integers without generate warnings on 64bit systems. Converted Mac source and dwtest source to use them. Not sure if limits.h is available on all target platforms, will commit fixes as necessary. diff -r d7eafaa054ab -r cfe7d2b6bc16 dw.h --- a/dw.h Tue Jul 26 00:25:57 2011 +0000 +++ b/dw.h Tue Jul 26 03:09:41 2011 +0000 @@ -1404,6 +1404,20 @@ /* Macro for casting resource IDs to HICN */ #define DW_RESOURCE(a) (a < 65536 ? (HICN)a : (HICN)0) +#include +/* Macros for converting from INT/UINT to and from POINTER without compiler warnings */ +#if LONG_MAX > INT_MAX +#define DW_INT_TO_POINTER(a) ((void *)(long)a) +#define DW_POINTER_TO_INT(a) ((int)(long)a) +#define DW_UINT_TO_POINTER(a) ((void *)(unsigned long)a) +#define DW_POINTER_TO_UINT(a) ((unsigned int)(unsigned long)a) +#else +#define DW_INT_TO_POINTER(a) ((void *)a) +#define DW_POINTER_TO_INT(a) ((int)a) +#define DW_UINT_TO_POINTER(a) ((void *)a) +#define DW_POINTER_TO_UINT(a) ((unsigned int)a) +#endif + #ifndef API #define API #endif diff -r d7eafaa054ab -r cfe7d2b6bc16 dwtest.c --- a/dwtest.c Tue Jul 26 00:25:57 2011 +0000 +++ b/dwtest.c Tue Jul 26 03:09:41 2011 +0000 @@ -648,7 +648,7 @@ char buf[200]; HWND statline = (HWND)data; - sprintf(buf,"DW_SIGNAL_ITEM_ENTER: Window: %x Text: %s", (unsigned int)window, text ); + sprintf(buf,"DW_SIGNAL_ITEM_ENTER: Window: %x Text: %s", DW_POINTER_TO_UINT(window), text ); dw_window_set_text( statline, buf); return 0; } @@ -658,7 +658,7 @@ char buf[200]; HWND statline = (HWND)data; - sprintf(buf,"DW_SIGNAL_ITEM_CONTEXT: Window: %x Text: %s x: %d y: %d Itemdata: %x", (unsigned int)window, text, x, y, (unsigned int)itemdata ); + sprintf(buf,"DW_SIGNAL_ITEM_CONTEXT: Window: %x Text: %s x: %d y: %d Itemdata: %x", DW_POINTER_TO_UINT(window), text, x, y, DW_POINTER_TO_UINT(itemdata) ); dw_window_set_text( statline, buf); return 0; } @@ -668,7 +668,7 @@ char buf[200]; HWND statline = (HWND)data; - sprintf(buf,"DW_SIGNAL_LIST_SELECT: Window: %d Item: %d", (unsigned int)window, item ); + sprintf(buf,"DW_SIGNAL_LIST_SELECT: Window: %d Item: %d", DW_POINTER_TO_UINT(window), item ); dw_window_set_text( statline, buf); return 0; } @@ -678,7 +678,8 @@ char buf[200]; HWND statline = (HWND)data; - sprintf(buf,"DW_SIGNAL_ITEM_SELECT: Window: %x Item: %x Text: %s Itemdata: %x", (unsigned int)window, (unsigned int)item, text, (unsigned int)itemdata ); + sprintf(buf,"DW_SIGNAL_ITEM_SELECT: Window: %x Item: %x Text: %s Itemdata: %x", DW_POINTER_TO_UINT(window), + DW_POINTER_TO_UINT(item), text, DW_POINTER_TO_UINT(itemdata) ); dw_window_set_text( statline, buf); return 0; } @@ -690,9 +691,11 @@ HWND statline = (HWND)data; unsigned long size; - sprintf(buf,"DW_SIGNAL_ITEM_SELECT: Window: %x Item: %x Text: %s Itemdata: %x", (unsigned int)window, (unsigned int)item, text, (unsigned int)itemdata ); + sprintf(buf,"DW_SIGNAL_ITEM_SELECT: Window: %x Item: %x Text: %s Itemdata: %x", DW_POINTER_TO_UINT(window), + DW_POINTER_TO_UINT(item), text, DW_POINTER_TO_UINT(itemdata) ); dw_window_set_text( statline, buf); - sprintf(buf,"\r\nDW_SIGNAL_ITEM_SELECT: Window: %x Item: %x Text: %s Itemdata: %x\r\n", (unsigned int)window, (unsigned int)item, text, (unsigned int)itemdata ); + sprintf(buf,"\r\nDW_SIGNAL_ITEM_SELECT: Window: %x Item: %x Text: %s Itemdata: %x\r\n", DW_POINTER_TO_UINT(window), + DW_POINTER_TO_UINT(item), text, DW_POINTER_TO_UINT(itemdata) ); mle_point = dw_mle_import( container_mle, buf, mle_point); str = dw_container_query_start(container, DW_CRA_SELECTED); while(str) @@ -704,10 +707,12 @@ /* Make the last inserted point the cursor location */ dw_mle_set_cursor(container_mle, mle_point); /* set the details of item 0 to new data */ - fprintf(stderr,"In cb: container: %x containerinfo: %x icon: %x\n", (int)container, (int)containerinfo, (int)fileicon); + fprintf(stderr,"In cb: container: %x containerinfo: %x icon: %x\n", DW_POINTER_TO_INT(container), + DW_POINTER_TO_INT(containerinfo), DW_POINTER_TO_INT(fileicon)); dw_filesystem_change_file(container, 0, "new data", fileicon); size = 999; - fprintf(stderr,"In cb: container: %x containerinfo: %x icon: %x\n", (int)container, (int)containerinfo, (int)fileicon); + fprintf(stderr,"In cb: container: %x containerinfo: %x icon: %x\n", DW_POINTER_TO_INT(container), + DW_POINTER_TO_INT(containerinfo), DW_POINTER_TO_INT(fileicon)); dw_filesystem_change_item(container, 1, 0, &size); return 0; } @@ -717,7 +722,8 @@ FILE *fp=fopen("log","a"); if ( fp ) { - fprintf(fp,"DW_SIGNAL_SWITCH_PAGE: Window: %x PageNum: %u Itemdata: %x\n", (unsigned int)window, (unsigned int)page_num, (unsigned int)itemdata ); + fprintf(fp,"DW_SIGNAL_SWITCH_PAGE: Window: %x PageNum: %u Itemdata: %x\n", DW_POINTER_TO_UINT(window), + DW_POINTER_TO_UINT(page_num), DW_POINTER_TO_UINT(itemdata) ); fclose(fp); } return 0; @@ -747,7 +753,8 @@ else strcpy(buf1,"Unknown"); } - sprintf(buf,"DW_SIGNAL_COLUMN_CLICK: Window: %x Column: %d Type: %s Itemdata: %x", (unsigned int)window, column_num, buf1, (unsigned int)data ); + sprintf(buf,"DW_SIGNAL_COLUMN_CLICK: Window: %x Column: %d Type: %s Itemdata: %x", DW_POINTER_TO_UINT(window), + column_num, buf1, DW_POINTER_TO_UINT(data) ); dw_window_set_text( statline, buf); return 0; } @@ -1018,7 +1025,8 @@ sprintf(buffer, "Filename %d",z+1); if (z == 0 ) thisicon = foldericon; else thisicon = fileicon; - fprintf(stderr,"Initial: container: %x containerinfo: %x icon: %x\n", (int)container, (int)containerinfo, (int)thisicon); + fprintf(stderr,"Initial: container: %x containerinfo: %x icon: %x\n", DW_POINTER_TO_INT(container), + DW_POINTER_TO_INT(containerinfo), DW_POINTER_TO_INT(thisicon)); dw_filesystem_set_file(container, containerinfo, z, buffer, thisicon); dw_filesystem_set_item(container, containerinfo, 0, z, &thisicon); dw_filesystem_set_item(container, containerinfo, 1, z, &size); diff -r d7eafaa054ab -r cfe7d2b6bc16 mac/dw.m --- a/mac/dw.m Tue Jul 26 00:25:57 2011 +0000 +++ b/mac/dw.m Tue Jul 26 03:09:41 2011 +0000 @@ -357,7 +357,7 @@ case 14: { int (* API valuechangedfunc)(HWND, int, void *) = (int (* API)(HWND, int, void *))handler->signalfunction; - int selected = (int)event; + int selected = DW_POINTER_TO_INT(event); return valuechangedfunc(handler->window, selected, handler->data);; } @@ -409,7 +409,7 @@ case 15: { int (* API switchpagefunc)(HWND, unsigned long, void *) = (int (* API)(HWND, unsigned long, void *))handler->signalfunction; - int pageid = (int)event; + int pageid = DW_POINTER_TO_INT(event); return switchpagefunc(handler->window, pageid, handler->data); } @@ -422,7 +422,7 @@ case 17: { int (*clickcolumnfunc)(HWND, int, void *) = handler->signalfunction; - int column_num = (int)event; + int column_num = DW_POINTER_TO_INT(event); return clickcolumnfunc(handler->window, column_num, handler->data); } @@ -1104,7 +1104,7 @@ _do_resize(box, size.width, size.height); _handle_resize_events(box); } - _event_handler(self, (void *)[page pageid], 15); + _event_handler(self, DW_INT_TO_POINTER([page pageid]), 15); } -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); [super dealloc]; } @end @@ -1287,7 +1287,7 @@ { [self setDoubleValue:(newpos/max)]; } - _event_handler(self, (void *)(int)newpos, 14); + _event_handler(self, DW_INT_TO_POINTER((int)newpos), 14); } -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); [super dealloc]; } @end @@ -1608,7 +1608,7 @@ /* Handler for container class */ _event_handler(self, (NSEvent *)[self getRowTitle:(int)[self selectedRow]], 12); /* Handler for listbox class */ - _event_handler(self, (NSEvent *)(int)[self selectedRow], 11); + _event_handler(self, DW_INT_TO_POINTER((int)[self selectedRow]), 11); } -(NSMenu *)menuForEvent:(NSEvent *)event {