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