12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #ifndef _KEYDEF_H_
- #define _KEYDEF_H_
- #include <AK/Tools/Common/AkArray.h>
- template <class T_KEY, class T_ITEM>
- struct MapStruct
- {
- T_KEY key;
- T_ITEM item;
- bool operator ==(const MapStruct& in_Op) const
- {
- return ( (key == in_Op.key) );
- }
- void Transfer(MapStruct<T_KEY, T_ITEM>& in_rSource)
- {
- key = in_rSource.key;
- item.Transfer(in_rSource.item);
- }
- };
- template < typename T_KEY, typename T_DATA, class T_ALLOC = ArrayPoolDefault >
- struct AkKeyDataPtrStruct: public T_ALLOC
- {
- AkKeyDataPtrStruct(): pData(NULL) {}
- AkKeyDataPtrStruct(T_KEY in_key): key(in_key), pData(NULL) {}
- T_KEY key;
- T_DATA* pData;
- bool operator ==(const AkKeyDataPtrStruct<T_KEY,T_DATA>& in_Op) const
- {
- return ( key == in_Op.key );
- }
- bool AllocData()
- {
- AKASSERT( !pData );
- pData = (T_DATA*) T_ALLOC::Alloc( sizeof( T_DATA ));
- if (pData)
- {
- AkPlacementNew( pData ) T_DATA();
- return true;
- }
- return false;
- }
- void FreeData()
- {
- if( pData )
- {
- pData->~T_DATA();
- T_ALLOC::Free(pData);
- pData = NULL;
- }
- }
- static AkForceInline T_KEY& Get( AkKeyDataPtrStruct<T_KEY, T_DATA>& in_val ) { return in_val.key; }
- };
- #endif
|