StringList.cpp revision f33f6de54db174aa679a4b6d1e040d37e95541c0
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