AWARE [SYSTEMS] Imaging expertise for the Delphi developer
AWare Systems, Imaging expertise for the Delphi developer, Home TIFF and LibTiff Mailing List Archive

LibTiff Mailing List

TIFF and LibTiff Mailing List Archive
September 2007

Previous Thread
Next Thread

Previous by Thread
Next by Thread

Previous by Date
Next by Date

Contact

The TIFF Mailing List Homepage
This list is run by Frank Warmerdam
Archive maintained by AWare Systems



Valid HTML 4.01!



Thread

2007.09.12 03:36 "SIZEOF_UNSIGNED_LONG", by Frank Warmerdam
2007.09.12 12:59 "Re: SIZEOF_UNSIGNED_LONG", by Edward Lam
2007.09.12 13:04 "Re: SIZEOF_UNSIGNED_LONG", by Edward Lam
2007.09.12 13:56 "Re: SIZEOF_UNSIGNED_LONG", by Frank Warmerdam
2007.09.12 14:09 "Re: SIZEOF_UNSIGNED_LONG", by Edward Lam
2007.09.12 15:01 "Re: SIZEOF_UNSIGNED_LONG", by Frank Warmerdam
2007.09.12 15:09 "Re: SIZEOF_UNSIGNED_LONG", by Edward Lam
2007.09.12 15:02 "Re: SIZEOF_UNSIGNED_LONG", by Bob Friesenhahn

2007.09.12 15:02 "Re: SIZEOF_UNSIGNED_LONG", by Bob Friesenhahn

On Tue, 11 Sep 2007, Frank Warmerdam wrote:
>
> The concern I have is that this code defaults to assuming 32bit if the
> macro is not defined, and it produces incorrect results if the unsigned
> long is actually 64bit.
>
> I wonder if we should either:
> o Require that SIZEOF_UNSIGNED_LONG be explicitly 8 or 4, and if it is not
>   defined we #error to stop the build.
> o Add some sort of runtime checking to detect that sizeof(unsigned long) is
>   actually 4 if SIZEOF_UNSIGNED_LONG is not defined.

I have yet to encounter a modern system where sizeof(long) is not 8 or 
4.  I notice that each macro is used exactly once.  It does not seem 
bad to me to have the macro incorporate both cases with a "runtime" 
test for sizeof(long).  Since sizeof(long) will be a constant, 1/2 of 
the code will be dead code and the compiler can simply throw it away. 
Even if it does not throw the unused code away there should be 
practically no runtime overhead if it does perform the test.

There are probably more imaginative approaches than I describe above 
but I leave those approaches for people with an imagination.  It seems 
that the implementation of FILL and ZERO are a form of optimization 
for decisions which are not very hard (most are cp[n-1]=value), could 
be implemented quite differently, and might actually run faster 
without the apparent optimization.

Bob
======================================
Bob Friesenhahn
bfriesen@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer,    http://www.GraphicsMagick.org/