137b74a387bb3993387029859c2d9d051c41c724eStephen Hines//===- HashEntryFactory.h -------------------------------------------------===//
222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//
322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//                     The MCLinker Project
422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//
522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// This file is distributed under the University of Illinois Open Source
622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// License. See LICENSE.TXT for details.
722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//
822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#ifndef MCLD_ADT_HASHENTRYFACTORY_H_
1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#define MCLD_ADT_HASHENTRYFACTORY_H_
1122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
1222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaonamespace mcld {
1322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
1422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao/** \class HashEntryFactory
1522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao *  \brief HashEntryFactoy is a factory wrapper for those entries who have
1622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao *  factory methods.
1722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao */
1837b74a387bb3993387029859c2d9d051c41c724eStephen Hinestemplate <typename HashEntryTy>
1937b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass HashEntryFactory {
2037b74a387bb3993387029859c2d9d051c41c724eStephen Hines public:
2137b74a387bb3993387029859c2d9d051c41c724eStephen Hines  typedef HashEntryTy entry_type;
2222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  typedef typename HashEntryTy::key_type key_type;
2322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
2437b74a387bb3993387029859c2d9d051c41c724eStephen Hines public:
2537b74a387bb3993387029859c2d9d051c41c724eStephen Hines  entry_type* produce(const key_type& pKey) {
2637b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return HashEntryTy::Create(pKey);
2737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
2822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
2937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  void destroy(entry_type*& pEntry) { HashEntryTy::Destroy(pEntry); }
3022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao};
3122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
3237b74a387bb3993387029859c2d9d051c41c724eStephen Hines}  // namespace mcld
3322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
3437b74a387bb3993387029859c2d9d051c41c724eStephen Hines#endif  // MCLD_ADT_HASHENTRYFACTORY_H_
35