StringEntry.cpp revision affc150dc44fab1911775a49636d0ce85333b634
199e53b86eebb605b70dd7591b89bf61a9414ed0eGlenn Kasten//===- StringEntry.cpp -----------------------------------------------------===//
265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian//
365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian//                     The MCLinker Project
465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian//
565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian// This file is distributed under the University of Illinois Open Source
665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian// License. See LICENSE.TXT for details.
765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian//
865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian//===----------------------------------------------------------------------===//
965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian#include <mcld/ADT/StringEntry.h>
1065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
1165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopianusing namespace mcld;
1265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
1365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian//===----------------------------------------------------------------------===//
1465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian// StringEntry<llvm::StringRef>
1565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias AgopianStringEntry<llvm::StringRef>::StringEntry()
1665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian{
1765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian}
1865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
1965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias AgopianStringEntry<llvm::StringRef>::StringEntry(const StringEntry::key_type& pKey)
2065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian{
2165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian}
2265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
2365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias AgopianStringEntry<llvm::StringRef>::StringEntry(const StringEntry<llvm::StringRef>& pCopy)
2465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian{
254ff14bae91075eb274eb1c2975982358946e7e63John Grossman  assert("Copy constructor of StringEntry should not be called!");
264ff14bae91075eb274eb1c2975982358946e7e63John Grossman}
2765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
2865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias AgopianStringEntry<llvm::StringRef>::~StringEntry()
2965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian{
3065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian  if (!m_Value.empty())
31335787fe43596f38ea2fa50b24c54d0823a3fb1dGlenn Kasten    free(const_cast<char*>(m_Value.data()));
324ff14bae91075eb274eb1c2975982358946e7e63John Grossman}
3365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
3465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopianvoid StringEntry<llvm::StringRef>::setValue(llvm::StringRef& pVal)
3565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian{
3665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian  char* data = (char*)malloc(pVal.size()+1);
3765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian  strcpy(data, pVal.data());
38799a70e7028a4d714436c3a744a775acfbd31aaeDima Zavin  m_Value = llvm::StringRef(data, pVal.size());
3965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian}
4065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
415462fc9a38fa8c9dff434cd53fa5fb1782ae3042Mathias Agopianvoid StringEntry<llvm::StringRef>::setValue(const char* pVal)
425462fc9a38fa8c9dff434cd53fa5fb1782ae3042Mathias Agopian{
435462fc9a38fa8c9dff434cd53fa5fb1782ae3042Mathias Agopian  size_t length = strlen(pVal);
4464760240f931714858a59c1579f07264d7182ba2Dima Zavin  char* data = (char*)malloc(length+1);
457394a4f358fa9908a9f0a7c954b65c399f4268e6Dima Zavin  strcpy(data, pVal);
4665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian  m_Value = llvm::StringRef(data, length);
4765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian}
4865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
49feb0db689c17dced50afaee54c659f1676e2d505Eric Laurent