void *CPLGetTLS( int nIndex ) { void** papTLSList = CPLGetTLSList(); CPLAssert( nIndex >= 0 && nIndex < CTLS_MAX ); return papTLSList[nIndex]; }
/* use or fetch any TLS data, or a terminating thread will hang ! */ void CPLSetTLSWithFreeFunc( int nIndex, void *pData, CPLTLSFreeFunc pfnFree ) { void **papTLSList = CPLGetTLSList(); CPLAssert( nIndex >= 0 && nIndex < CTLS_MAX ); papTLSList[nIndex] = pData; papTLSList[CTLS_MAX + nIndex] = (void*) pfnFree; }
void CPLSetTLS( int nIndex, void *pData, int bFreeOnExit ) { void **papTLSList = CPLGetTLSList(); CPLAssert( nIndex >= 0 && nIndex < CTLS_MAX ); papTLSList[nIndex] = pData; papTLSList[CTLS_MAX + nIndex] = (void *) (long) bFreeOnExit; }