1affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===- StringEntry.cpp -----------------------------------------------------===// 2affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// 3affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// The MCLinker Project 4affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// 5affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// This file is distributed under the University of Illinois Open Source 6affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// License. See LICENSE.TXT for details. 7affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// 8affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===----------------------------------------------------------------------===// 9affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/ADT/StringEntry.h> 10affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 11affc150dc44fab1911775a49636d0ce85333b634Zonr Changusing namespace mcld; 12affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 13affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===----------------------------------------------------------------------===// 14affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// StringEntry<llvm::StringRef> 15f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines//===----------------------------------------------------------------------===// 16affc150dc44fab1911775a49636d0ce85333b634Zonr ChangStringEntry<llvm::StringRef>::StringEntry() 17affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{ 18affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} 19affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 20affc150dc44fab1911775a49636d0ce85333b634Zonr ChangStringEntry<llvm::StringRef>::StringEntry(const StringEntry::key_type& pKey) 21affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{ 22affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} 23affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 24affc150dc44fab1911775a49636d0ce85333b634Zonr ChangStringEntry<llvm::StringRef>::StringEntry(const StringEntry<llvm::StringRef>& pCopy) 25affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{ 26affc150dc44fab1911775a49636d0ce85333b634Zonr Chang assert("Copy constructor of StringEntry should not be called!"); 27affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} 28affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 29affc150dc44fab1911775a49636d0ce85333b634Zonr ChangStringEntry<llvm::StringRef>::~StringEntry() 30affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{ 31affc150dc44fab1911775a49636d0ce85333b634Zonr Chang if (!m_Value.empty()) 32affc150dc44fab1911775a49636d0ce85333b634Zonr Chang free(const_cast<char*>(m_Value.data())); 33affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} 34affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 35affc150dc44fab1911775a49636d0ce85333b634Zonr Changvoid StringEntry<llvm::StringRef>::setValue(llvm::StringRef& pVal) 36affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{ 37affc150dc44fab1911775a49636d0ce85333b634Zonr Chang char* data = (char*)malloc(pVal.size()+1); 38affc150dc44fab1911775a49636d0ce85333b634Zonr Chang strcpy(data, pVal.data()); 39affc150dc44fab1911775a49636d0ce85333b634Zonr Chang m_Value = llvm::StringRef(data, pVal.size()); 40affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} 41affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 42affc150dc44fab1911775a49636d0ce85333b634Zonr Changvoid StringEntry<llvm::StringRef>::setValue(const char* pVal) 43affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{ 44affc150dc44fab1911775a49636d0ce85333b634Zonr Chang size_t length = strlen(pVal); 45affc150dc44fab1911775a49636d0ce85333b634Zonr Chang char* data = (char*)malloc(length+1); 46affc150dc44fab1911775a49636d0ce85333b634Zonr Chang strcpy(data, pVal); 47affc150dc44fab1911775a49636d0ce85333b634Zonr Chang m_Value = llvm::StringRef(data, length); 48affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} 49affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 50