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> 15affc150dc44fab1911775a49636d0ce85333b634Zonr ChangStringEntry<llvm::StringRef>::StringEntry() 16affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{ 17affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} 18affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 19affc150dc44fab1911775a49636d0ce85333b634Zonr ChangStringEntry<llvm::StringRef>::StringEntry(const StringEntry::key_type& pKey) 20affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{ 21affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} 22affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 23affc150dc44fab1911775a49636d0ce85333b634Zonr ChangStringEntry<llvm::StringRef>::StringEntry(const StringEntry<llvm::StringRef>& pCopy) 24affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{ 25affc150dc44fab1911775a49636d0ce85333b634Zonr Chang assert("Copy constructor of StringEntry should not be called!"); 26affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} 27affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 28affc150dc44fab1911775a49636d0ce85333b634Zonr ChangStringEntry<llvm::StringRef>::~StringEntry() 29affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{ 30affc150dc44fab1911775a49636d0ce85333b634Zonr Chang if (!m_Value.empty()) 31affc150dc44fab1911775a49636d0ce85333b634Zonr Chang free(const_cast<char*>(m_Value.data())); 32affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} 33affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 34affc150dc44fab1911775a49636d0ce85333b634Zonr Changvoid StringEntry<llvm::StringRef>::setValue(llvm::StringRef& pVal) 35affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{ 36affc150dc44fab1911775a49636d0ce85333b634Zonr Chang char* data = (char*)malloc(pVal.size()+1); 37affc150dc44fab1911775a49636d0ce85333b634Zonr Chang strcpy(data, pVal.data()); 38affc150dc44fab1911775a49636d0ce85333b634Zonr Chang m_Value = llvm::StringRef(data, pVal.size()); 39affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} 40affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 41affc150dc44fab1911775a49636d0ce85333b634Zonr Changvoid StringEntry<llvm::StringRef>::setValue(const char* pVal) 42affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{ 43affc150dc44fab1911775a49636d0ce85333b634Zonr Chang size_t length = strlen(pVal); 44affc150dc44fab1911775a49636d0ce85333b634Zonr Chang char* data = (char*)malloc(length+1); 45affc150dc44fab1911775a49636d0ce85333b634Zonr Chang strcpy(data, pVal); 46affc150dc44fab1911775a49636d0ce85333b634Zonr Chang m_Value = llvm::StringRef(data, length); 47affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} 48affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 49