Files
rk35xx-android14/frameworks/compile/mclinker/include/mcld/ADT/StringEntry.tcc
T
hmz007 36ed224bac Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a)
Signed-off-by: hmz007 <hmz007@gmail.com>
Change-Id: Ib87fdbe7a0be7dc961af3500fe9ea4589a127f9f
2024-10-29 18:12:02 +08:00

66 lines
1.9 KiB
C++

//===- StringEntry.tcc ----------------------------------------------------===//
//
// The MCLinker Project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//===----------------------------------------------------------------------===//
// StringEntry
template <typename DataType>
StringEntry<DataType>::StringEntry()
: m_KeyLen(0) {
}
template <typename DataType>
StringEntry<DataType>::StringEntry(const StringEntry::key_type& pKey)
: m_KeyLen(pKey.size()) {
}
template <typename DataType>
StringEntry<DataType>::StringEntry(const StringEntry<DataType>& pCopy)
: m_KeyLen(pCopy.m_KeyLen), m_Value(pCopy.m_Value) {
assert("Copy constructor of StringEntry should not be called!");
}
template <typename DataType>
StringEntry<DataType>::~StringEntry() {
}
//===----------------------------------------------------------------------===//
// StringEntryFactory
template <typename DataType>
StringEntryFactory<DataType>::StringEntryFactory() {
}
template <typename DataType>
StringEntryFactory<DataType>::~StringEntryFactory() {
}
template <typename DataType>
StringEntry<DataType>* StringEntryFactory<DataType>::produce(
const typename StringEntryFactory<DataType>::key_type& pKey) {
StringEntry<DataType>* result = static_cast<StringEntry<DataType>*>(
malloc(sizeof(StringEntry<DataType>) + pKey.size() + 1));
if (result == NULL)
return NULL;
size_t len = pKey.size();
new (result) StringEntry<DataType>();
std::memcpy(result->m_Key, pKey.data(), len);
result->m_Key[len] = '\0';
result->m_KeyLen = len;
return result;
}
template <typename DataType>
void StringEntryFactory<DataType>::destroy(StringEntry<DataType>* pEntry) {
if (pEntry != NULL) {
pEntry->~StringEntry<DataType>();
free(pEntry);
}
}