1 //===- SymbolTableFactory.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/LD/SymbolTableFactory.h" 10 11 using namespace mcld; 12 13 //========================== 14 // SymbolTableFactory 15 16 SymbolTableFactory::SymbolTableFactory(size_t pNumOfSymbolTables, 17 StrSymPool& pStrSymPool) 18 : m_StrSymPool(pStrSymPool), 19 m_InputFactory(pNumOfSymbolTables), 20 m_OutputFactory(pNumOfSymbolTables) 21 { 22 } 23 24 SymbolTableFactory::~SymbolTableFactory() 25 { 26 } 27 28 SymbolTableIF *SymbolTableFactory:: 29 createInputTable(StringTable &pEntireStringTable, 30 StringTable &pDynamicStringTable, 31 size_t pReserve) 32 { 33 InputSymbolTable *inputSymTab = m_InputFactory.allocate(); 34 new (inputSymTab) InputSymbolTable(m_StrSymPool, 35 pReserve, 36 pEntireStringTable, 37 pDynamicStringTable); 38 return inputSymTab; 39 } 40 41 SymbolTableIF *SymbolTableFactory:: 42 createOutputTable(StringTable &pEntireStringTable, 43 StringTable &pDynamicStringTable, 44 size_t pReserve) 45 { 46 OutputSymbolTable *outputSymTab = m_OutputFactory.allocate(); 47 new (outputSymTab) OutputSymbolTable(m_StrSymPool, 48 pReserve, 49 pEntireStringTable, 50 pDynamicStringTable); 51 return outputSymTab; 52 } 53