FileToken.cpp revision 37b74a387bb3993387029859c2d9d051c41c724e
1//===- 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//===----------------------------------------------------------------------===//
9#include "mcld/Script/FileToken.h"
10
11#include "mcld/Support/GCFactory.h"
12
13#include <llvm/Support/ManagedStatic.h>
14
15namespace mcld {
16
17typedef GCFactory<FileToken, MCLD_SYMBOLS_PER_INPUT> FileTokenFactory;
18static llvm::ManagedStatic<FileTokenFactory> g_FileTokenFactory;
19
20//===----------------------------------------------------------------------===//
21// FileToken
22//===----------------------------------------------------------------------===//
23FileToken::FileToken() {
24}
25
26FileToken::FileToken(const std::string& pName, bool pAsNeeded)
27    : InputToken(InputToken::File, pName, pAsNeeded) {
28}
29
30FileToken::~FileToken() {
31}
32
33FileToken* FileToken::create(const std::string& pName, bool pAsNeeded) {
34  FileToken* result = g_FileTokenFactory->allocate();
35  new (result) FileToken(pName, pAsNeeded);
36  return result;
37}
38
39void FileToken::destroy(FileToken*& pFileToken) {
40  g_FileTokenFactory->destroy(pFileToken);
41  g_FileTokenFactory->deallocate(pFileToken);
42  pFileToken = NULL;
43}
44
45void FileToken::clear() {
46  g_FileTokenFactory->clear();
47}
48
49}  // namespace mcld
50