Hi, What's safe is encoding with any supported integer type and decoding with another integer type, so you can write a keyed archive with @encode(long) and decode it as @encode(int), even if long is 64-bits and int is 32-bits.
In other words it's safe to use @encode(NS[U]Integer). However, if the ivar is changed to NSUInteger, I think these: >> - [aCoder encodeValueOfObjCType: "i" at: &_selected_item]; >> + [aCoder encodeValueOfObjCType: "I" at: &_selected_item]; >> - [aDecoder decodeValueOfObjCType: "i" at: &_selected_item]; >> + [aDecoder decodeValueOfObjCType: "I" at: &_selected_item]; should actually use @encode(NSUInteger), not "l". Otherwise the patch looks good :-). Eric On 2012-04-09, at 11:08 AM, Fred Kiefer wrote: > Most of the patch is ok, but we have too ake a careful look at the coding > change. This may break backwards and forewards compatibility. Maybe Richard > is able to explain if this change is save or not. > > Fred > > On the road > > Am 09.04.2012 um 18:02 schrieb "Sebastian Reitenbach" > <[email protected]>: > >> Hi, >> >> while looking at compilation warnings from the latest releases, I found in >> -gui (svn) some parts in NSTableView that would need to be changed. First is >> easy, declare i as NSUInteger (was unsigned before). Further I think >> _selected_item declared in the header as NSInteger also should be a >> NSUInteger. >> >> is it OK when I commit the patch? >> >> Sebastian >> >> Index: Source/NSTabView.m >> =================================================================== >> --- Source/NSTabView.m (revision 35049) >> +++ Source/NSTabView.m (working copy) >> @@ -123,7 +123,7 @@ >> >> - (void) removeTabViewItem: (NSTabViewItem*)tabViewItem >> { >> - unsigned i = [_items indexOfObject: tabViewItem]; >> + NSUInteger i = [_items indexOfObject: tabViewItem]; >> >> if (i == NSNotFound) >> return; >> @@ -202,7 +202,7 @@ >> >> - (void) selectNextTabViewItem: (id)sender >> { >> - if ((_selected_item != NSNotFound) && ((unsigned)(_selected_item + 1) < >> [_items count])) >> + if ((_selected_item != NSNotFound) && ((_selected_item + 1) < [_items >> count])) >> { >> [self selectTabViewItemAtIndex: _selected_item + 1]; >> } >> @@ -550,7 +550,7 @@ >> [aCoder encodeValueOfObjCType: @encode(BOOL) at: &_draws_background]; >> [aCoder encodeValueOfObjCType: @encode(BOOL) at: &_truncated_label]; >> [aCoder encodeConditionalObject: _delegate]; >> - [aCoder encodeValueOfObjCType: "i" at: &_selected_item]; >> + [aCoder encodeValueOfObjCType: "I" at: &_selected_item]; >> } >> } >> >> @@ -631,7 +631,7 @@ >> [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &_draws_background]; >> [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &_truncated_label]; >> _delegate = [aDecoder decodeObject]; >> - [aDecoder decodeValueOfObjCType: "i" at: &_selected_item]; >> + [aDecoder decodeValueOfObjCType: "I" at: &_selected_item]; >> _selected = [_items objectAtIndex: _selected_item]; >> } >> return self; >> Index: Headers/AppKit/NSTabView.h >> =================================================================== >> --- Headers/AppKit/NSTabView.h (revision 35049) >> +++ Headers/AppKit/NSTabView.h (working copy) >> @@ -54,7 +54,7 @@ >> BOOL _draws_background; >> BOOL _truncated_label; >> id _delegate; >> - NSInteger _selected_item; >> + NSUInteger _selected_item; >> } >> - (void)addTabViewItem:(NSTabViewItem *)tabViewItem; >> - (void)insertTabViewItem:(NSTabViewItem *)tabViewItem >> >> _______________________________________________ >> Gnustep-dev mailing list >> [email protected] >> https://lists.gnu.org/mailman/listinfo/gnustep-dev > > _______________________________________________ > Gnustep-dev mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/gnustep-dev _______________________________________________ Gnustep-dev mailing list [email protected] https://lists.gnu.org/mailman/listinfo/gnustep-dev
