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//===----------------------------------------------------------------------===// 937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Script/StrToken.h" 1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines 1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Support/GCFactory.h" 1237b74a387bb3993387029859c2d9d051c41c724eStephen Hines 13f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include <llvm/Support/ManagedStatic.h> 14f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 1537b74a387bb3993387029859c2d9d051c41c724eStephen Hinesnamespace mcld { 16f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 17f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinestypedef GCFactory<StrToken, MCLD_SYMBOLS_PER_INPUT> StrTokenFactory; 18f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesstatic llvm::ManagedStatic<StrTokenFactory> g_StrTokenFactory; 19f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 20f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===// 21f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// StrToken 22f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===// 2337b74a387bb3993387029859c2d9d051c41c724eStephen HinesStrToken::StrToken() : m_Kind(Unknown) { 24f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 25f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 26f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen HinesStrToken::StrToken(Kind pKind, const std::string& pString) 2737b74a387bb3993387029859c2d9d051c41c724eStephen Hines : m_Kind(pKind), m_Name(pString) { 28f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 29f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 3037b74a387bb3993387029859c2d9d051c41c724eStephen HinesStrToken::~StrToken() { 31f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 32f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 3337b74a387bb3993387029859c2d9d051c41c724eStephen HinesStrToken* StrToken::create(const std::string& pString) { 34f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines StrToken* result = g_StrTokenFactory->allocate(); 35f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines new (result) StrToken(String, pString); 36f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines return result; 37f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 38f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 3937b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid StrToken::destroy(StrToken*& pStrToken) { 40f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines g_StrTokenFactory->destroy(pStrToken); 41f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines g_StrTokenFactory->deallocate(pStrToken); 42f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines pStrToken = NULL; 43f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 44f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 4537b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid StrToken::clear() { 46f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines g_StrTokenFactory->clear(); 47f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} 4837b74a387bb3993387029859c2d9d051c41c724eStephen Hines 4937b74a387bb3993387029859c2d9d051c41c724eStephen Hines} // namespace mcld 50