/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /* * OPCODE - Optimized Collision Detection * Copyright (C) 2001 Pierre Terdiman * Homepage: http://www.codercorner.com/Opcode.htm */ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** * Contains declaration of thread local data structure. * \file OPC_ThreadLocalData.h * \author Oleh Derevenko * \date April, 16, 2008 */ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Include Guard #ifndef __OPC_THREADLOCALDATA_H__ #define __OPC_THREADLOCALDATA_H__ // InsertionSort has better coherence, RadixSort is better for one-shot queries. typedef RadixSort PRUNING_SORTER; //typedef InsertionSort PRUNING_SORTER struct ThreadLocalData { public: ThreadLocalData() { Init(); } ~ThreadLocalData() { Finit(); } protected: ThreadLocalData(bool): gCompletePruningSorter(0), gBipartitePruningSorter0(0), gBipartitePruningSorter1(0) { } void Init(); void Finit(); public: // Static for coherence PRUNING_SORTER* gCompletePruningSorter; PRUNING_SORTER* gBipartitePruningSorter0; PRUNING_SORTER* gBipartitePruningSorter1; }; typedef ThreadLocalData *(* ThreadLocalDataProviderProc)(); #endif // __OPC_THREADLOCALDATA_H__