StringEntry.tcc revision affc150dc44fab1911775a49636d0ce85333b634
1//===- StringEntry.tcc -----------------------------------------------------===// 2// 3// The MCLinker Project 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10//===----------------------------------------------------------------------===// 11// StringEntry 12template<typename DataType> 13StringEntry<DataType>::StringEntry() 14 : m_KeyLen(0) { 15} 16 17template<typename DataType> 18StringEntry<DataType>::StringEntry(const StringEntry::key_type& pKey) 19 : m_KeyLen(pKey.size()) { 20} 21 22template<typename DataType> 23StringEntry<DataType>::StringEntry(const StringEntry<DataType>& pCopy) 24 : m_KeyLen(pCopy.m_KeyLen), m_Value(pCopy.m_Value) { 25 assert("Copy constructor of StringEntry should not be called!"); 26} 27 28template<typename DataType> 29StringEntry<DataType>::~StringEntry() 30{ 31} 32 33//===----------------------------------------------------------------------===// 34// StringEntryFactory 35template<typename DataType> 36StringEntryFactory<DataType>::StringEntryFactory() 37{ 38} 39 40template<typename DataType> 41StringEntryFactory<DataType>::~StringEntryFactory() 42{ 43} 44 45template<typename DataType> 46StringEntry<DataType>* 47StringEntryFactory<DataType>::produce(const typename StringEntryFactory<DataType>::key_type& pKey) 48{ 49 StringEntry<DataType>* result = static_cast<StringEntry<DataType>*>( 50 malloc(sizeof(StringEntry<DataType>) + pKey.size() + 1)); 51 52 if (NULL == result) 53 return NULL; 54 55 size_t len = pKey.size(); 56 new (result) StringEntry<DataType>(); 57 std::memcpy(result->m_Key, pKey.data(), len); 58 result->m_Key[len] = '\0'; 59 result->m_KeyLen = len; 60 return result; 61} 62 63template<typename DataType> 64void StringEntryFactory<DataType>::destroy(StringEntry<DataType>* pEntry) 65{ 66 if (NULL != pEntry) { 67 pEntry->~StringEntry<DataType>(); 68 free(pEntry); 69 } 70} 71 72