blob: 29e154443389c1c5c1904a2cf9864084fe22cbe6 [file] [log] [blame]
Stephen Hinesf33f6de2014-02-14 18:00:16 -08001//===- FileToken.cpp ------------------------------------------------------===//
2//
3// The MCLinker Project
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
Stephen Hines37b74a32014-11-26 18:48:20 -08009#include "mcld/Script/FileToken.h"
10
11#include "mcld/Support/GCFactory.h"
12
Stephen Hinesf33f6de2014-02-14 18:00:16 -080013#include <llvm/Support/ManagedStatic.h>
14
Stephen Hines37b74a32014-11-26 18:48:20 -080015namespace mcld {
Stephen Hinesf33f6de2014-02-14 18:00:16 -080016
17typedef GCFactory<FileToken, MCLD_SYMBOLS_PER_INPUT> FileTokenFactory;
18static llvm::ManagedStatic<FileTokenFactory> g_FileTokenFactory;
19
20//===----------------------------------------------------------------------===//
21// FileToken
22//===----------------------------------------------------------------------===//
Stephen Hines37b74a32014-11-26 18:48:20 -080023FileToken::FileToken() {
Stephen Hinesf33f6de2014-02-14 18:00:16 -080024}
25
26FileToken::FileToken(const std::string& pName, bool pAsNeeded)
Stephen Hines37b74a32014-11-26 18:48:20 -080027 : InputToken(InputToken::File, pName, pAsNeeded) {
Stephen Hinesf33f6de2014-02-14 18:00:16 -080028}
29
Stephen Hines37b74a32014-11-26 18:48:20 -080030FileToken::~FileToken() {
Stephen Hinesf33f6de2014-02-14 18:00:16 -080031}
32
Stephen Hines37b74a32014-11-26 18:48:20 -080033FileToken* FileToken::create(const std::string& pName, bool pAsNeeded) {
Stephen Hinesf33f6de2014-02-14 18:00:16 -080034 FileToken* result = g_FileTokenFactory->allocate();
35 new (result) FileToken(pName, pAsNeeded);
36 return result;
37}
38
Stephen Hines37b74a32014-11-26 18:48:20 -080039void FileToken::destroy(FileToken*& pFileToken) {
Stephen Hinesf33f6de2014-02-14 18:00:16 -080040 g_FileTokenFactory->destroy(pFileToken);
41 g_FileTokenFactory->deallocate(pFileToken);
42 pFileToken = NULL;
43}
44
Stephen Hines37b74a32014-11-26 18:48:20 -080045void FileToken::clear() {
Stephen Hinesf33f6de2014-02-14 18:00:16 -080046 g_FileTokenFactory->clear();
47}
Stephen Hines37b74a32014-11-26 18:48:20 -080048
49} // namespace mcld