1f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===- StrToken.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/StrToken.h> 10f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include <mcld/Support/GCFactory.h> 11f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include <llvm/Support/ManagedStatic.h> 12f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 13f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesusing namespace mcld; 14f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 15f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinestypedef GCFactory<StrToken, MCLD_SYMBOLS_PER_INPUT> StrTokenFactory; 16f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesstatic llvm::ManagedStatic<StrTokenFactory> g_StrTokenFactory; 17f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 18f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===// 19f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// StrToken 20f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===// 21f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen HinesStrToken::StrToken() 22f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines : m_Kind(Unknown) 23f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 24f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 25f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 26f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen HinesStrToken::StrToken(Kind pKind, const std::string& pString) 27f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines : m_Kind(pKind), m_Name(pString) 28f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 29f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 30f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 31f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen HinesStrToken::~StrToken() 32f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 33f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 34f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 35f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen HinesStrToken* StrToken::create(const std::string& pString) 36f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 37f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines StrToken* result = g_StrTokenFactory->allocate(); 38f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines new (result) StrToken(String, pString); 39f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines return result; 40f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 41f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 42f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesvoid StrToken::destroy(StrToken*& pStrToken) 43f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 44f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines g_StrTokenFactory->destroy(pStrToken); 45f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines g_StrTokenFactory->deallocate(pStrToken); 46f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines pStrToken = NULL; 47f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 48f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 49f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesvoid StrToken::clear() 50f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 51f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines g_StrTokenFactory->clear(); 52f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 53