1f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===- StringList.cpp ----------------------------------------------------===// 2f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// 3f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// The MCLinker Project 4f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// 5f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// This file is distributed under the University of Illinois Open Source 6f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// License. See LICENSE.TXT for details. 7f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// 8f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===// 9f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include <mcld/Script/StringList.h> 10f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include <mcld/Script/StrToken.h> 11f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include <mcld/Support/raw_ostream.h> 12f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include <mcld/Support/GCFactory.h> 13f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include <llvm/Support/ManagedStatic.h> 14f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 15f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesusing namespace mcld; 16f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 17f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinestypedef GCFactory<StringList, MCLD_SYMBOLS_PER_INPUT> StringListFactory; 18f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesstatic llvm::ManagedStatic<StringListFactory> g_StringListFactory; 19f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 20f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===// 21f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// StringList 22f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===// 23f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen HinesStringList::StringList() 24f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 25f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 26f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 27f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen HinesStringList::~StringList() 28f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 29f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 30f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 31f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesvoid StringList::push_back(StrToken* pToken) 32f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 33f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines m_Tokens.push_back(pToken); 34f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 35f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 36f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesvoid StringList::dump() const 37f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 38f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines for (const_iterator it = begin(), ie = end(); it != ie; ++it) 39f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines mcld::outs() << (*it)->name() << "\t"; 40f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines mcld::outs() << "\n"; 41f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 42f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 43f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen HinesStringList* StringList::create() 44f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 45f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines StringList* result = g_StringListFactory->allocate(); 46f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines new (result) StringList(); 47f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines return result; 48f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 49f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 50f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesvoid StringList::destroy(StringList*& pStringList) 51f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 52f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines g_StringListFactory->destroy(pStringList); 53f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines g_StringListFactory->deallocate(pStringList); 54f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines pStringList = NULL; 55f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 56f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 57f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesvoid StringList::clear() 58f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 59f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines g_StringListFactory->clear(); 60f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 61