//===- StringEntry.cpp ----------------------------------------------------===//
//
// The MCLinker Project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "mcld/ADT/StringEntry.h"
namespace mcld {
//===----------------------------------------------------------------------===//
// StringEntry<llvm::StringRef>
//===----------------------------------------------------------------------===//
StringEntry<llvm::StringRef>::StringEntry() {
}
StringEntry<llvm::StringRef>::StringEntry(const StringEntry::key_type& pKey) {
}
StringEntry<llvm::StringRef>::StringEntry(
const StringEntry<llvm::StringRef>& pCopy) {
assert("Copy constructor of StringEntry should not be called!");
}
StringEntry<llvm::StringRef>::~StringEntry() {
if (!m_Value.empty())
free(const_cast<char*>(m_Value.data()));
}
void StringEntry<llvm::StringRef>::setValue(llvm::StringRef pVal) {
char* data = reinterpret_cast<char*>(malloc(pVal.size() + 1));
::memcpy(data, pVal.data(), pVal.size());
m_Value = llvm::StringRef(data, pVal.size());
}
void StringEntry<llvm::StringRef>::setValue(const char* pVal) {
size_t length = strlen(pVal);
char* data = reinterpret_cast<char*>(malloc(length + 1));
::memcpy(data, pVal, length);
m_Value = llvm::StringRef(data, length);
}
} // namespace mcld