[Proj] libproj4 thread safety

Gerald Evenden gerald.evenden at verizon.net
Wed Feb 23 13:14:26 EST 2005


Before these emails get tooo long and complicated, let me suggest the 
following:

pj_init return a pointer if an error free initialization of a 
projections occurs otherwise
a null value when an error occurs and the pj_errno global may be 
checked for
the reason for failure.  THIS IS THE ONLY place pj_errno will be 
employed.
Any subsequent call to pj_init will immediately reset pj_errno prior to 
processing
the request.

The return structure may be modified by pj_fwd or pj_inv but pj_errno 
will not
be affected by any calls to these routines.

Errors in the calls to pj_fwd and pj_inv will be indicated by HUGE 
values in
both elements of the return structure.  Each call to pj_fwd/pj_inv will 
cause
reset of any error flags associated with the argument projection 
structure
a the beginning of processing the request.

A call to int pj_error(void *pj) will return the error status of the 
structure pj
which reflects the last pj_fwd/pj_inv call with THAT pj structure.  A 
negative number indicates an
error occurred.  To get description follow current procedures with 
pj_errno.

The error code status in the pj structure is the only thing that is 
likely to change.
I do not consider pj as const inside the library.

With simple minded usage---like my own---this will not cause any changes
in application code that does not do cartwheels over error codes.  
Personally,
I only check for HUGE and don't give a s__t why. ;-)

I think that may solve the problem without major usage changes.  The 
only
area that may be a hassle is during initialization.

Lastly, overhead with multiple pj structs should not me considered a 
hassle.
Not much memory is involved and there is no issue with speed.  I DO NOT
recommend that copies be made of pj as there may be links to other
sections of allocated memory and order of freeing pj's could be wooley.

Would this specification fill the bill?
_____________________________________
Jerry and the low riders: Daisy Mae and Joshua.
"The whole religious complexion of the modern world is due to the
absence from Jerusalem of a lunatic asylum." Havelock Ellis, 1914




More information about the Proj mailing list