ResolveInfo.cpp revision 5460a1f25d9ddecb5c70667267d66d51af177a99
15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- ResolveInfo.cpp ----------------------------------------------------===//
25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//                     The MCLinker Project
45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source
65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details.
75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===//
95460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "mcld/LD/ResolveInfo.h"
105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <cstring>
115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcld;
135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//==========================
155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// ResolveInfo
165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoResolveInfo::ResolveInfo()
175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  : m_Size(0), m_BitField(0) {
185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  m_Ptr.sym_ptr = 0;
195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoResolveInfo::~ResolveInfo()
225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid ResolveInfo::override(const ResolveInfo& pFrom)
265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  m_Size = pFrom.m_Size;
285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  overrideAttributes(pFrom);
295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  overrideVisibility(pFrom);
305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid ResolveInfo::overrideAttributes(const ResolveInfo& pFrom)
335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  m_BitField &= ~RESOLVE_MASK;
355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  m_BitField |= (pFrom.m_BitField & RESOLVE_MASK);
365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao/// overrideVisibility - override the visibility
395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao///   always use the most strict visibility
405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid ResolveInfo::overrideVisibility(const ResolveInfo& pFrom)
415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  // Reference: Google gold linker: resolve.cc
435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  //
445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  // The rule for combining visibility is that we always choose the
455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  // most constrained visibility.  In order of increasing constraint,
465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  // visibility goes PROTECTED, HIDDEN, INTERNAL.  This is the reverse
475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  // of the numeric values, so the effect is that we always want the
485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  // smallest non-zero value.
495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  //
505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  // enum {
515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  //   STV_DEFAULT = 0,
525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  //   STV_INTERNAL = 1,
535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  //   STV_HIDDEN = 2,
545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  //   STV_PROTECTED = 3
555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  // };
565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  Visibility from_vis = pFrom.visibility();
585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  Visibility cur_vis = visibility();
595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  if (0 != from_vis ) {
605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    if (0 == cur_vis)
615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao      setVisibility(from_vis);
625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    else if (cur_vis > from_vis)
635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao      setVisibility(from_vis);
645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid ResolveInfo::setRegular()
685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  m_BitField &= (~dynamic_flag);
705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid ResolveInfo::setDynamic()
735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  m_BitField |= dynamic_flag;
755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid ResolveInfo::setSource(bool pIsDyn)
785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  if (pIsDyn)
805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    m_BitField |= dynamic_flag;
815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  else
825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    m_BitField &= (~dynamic_flag);
835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid ResolveInfo::setType(uint32_t pType)
865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  m_BitField &= ~TYPE_MASK;
885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  m_BitField |= ((pType << TYPE_OFFSET) & TYPE_MASK);
895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid ResolveInfo::setDesc(uint32_t pDesc)
925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  m_BitField &= ~DESC_MASK;
945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  m_BitField |= ((pDesc << DESC_OFFSET) & DESC_MASK);
955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid ResolveInfo::setBinding(uint32_t pBinding)
985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  m_BitField &= ~BINDING_MASK;
1005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  if (pBinding == Local || pBinding == Absolute)
1015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    m_BitField |= local_flag;
1025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  if (pBinding == Weak || pBinding == Absolute)
1035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    m_BitField |= weak_flag;
1045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid ResolveInfo::setReserved(uint32_t pReserved)
1075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  m_BitField &= ~RESERVED_MASK;
1095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  m_BitField |= ((pReserved << RESERVED_OFFSET) & RESERVED_MASK);
1105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid ResolveInfo::setOther(uint32_t pOther)
1135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  setVisibility(static_cast<ResolveInfo::Visibility>(pOther & 0x3));
1155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid ResolveInfo::setVisibility(ResolveInfo::Visibility pVisibility)
1185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  m_BitField &= ~VISIBILITY_MASK;
1205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  m_BitField |= pVisibility << VISIBILITY_OFFSET;
1215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid ResolveInfo::setIsSymbol(bool pIsSymbol)
1245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  if (pIsSymbol)
1265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    m_BitField |= symbol_flag;
1275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  else
1285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    m_BitField &= ~symbol_flag;
1295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaobool ResolveInfo::isDyn() const
1325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return (dynamic_flag == (m_BitField & DYN_MASK));
1345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaobool ResolveInfo::isUndef() const
1375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return (undefine_flag == (m_BitField & DESC_MASK));
1395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaobool ResolveInfo::isDefine() const
1425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return (define_flag == (m_BitField & DESC_MASK));
1445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaobool ResolveInfo::isCommon() const
1475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return (common_flag == (m_BitField & DESC_MASK));
1495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaobool ResolveInfo::isIndirect() const
1525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return (indirect_flag == (m_BitField & DESC_MASK));
1545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// isGlobal - [L,W] == [0, 0]
1575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaobool ResolveInfo::isGlobal() const
1585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return (global_flag == (m_BitField & BINDING_MASK));
1605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// isWeak - [L,W] == [0, 1]
1635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaobool ResolveInfo::isWeak() const
1645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return (weak_flag == (m_BitField & BINDING_MASK));
1665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// isLocal - [L,W] == [1, 0]
1695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaobool ResolveInfo::isLocal() const
1705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return (local_flag == (m_BitField & BINDING_MASK));
1725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// isAbsolute - [L,W] == [1, 1]
1755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaobool ResolveInfo::isAbsolute() const
1765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return (absolute_flag == (m_BitField & BINDING_MASK));
1785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaobool ResolveInfo::isSymbol() const
1815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return (symbol_flag == (m_BitField & SYMBOL_MASK));
1835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaobool ResolveInfo::isString() const
1865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return (string_flag == (m_BitField & SYMBOL_MASK));
1885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaouint32_t ResolveInfo::type() const
1915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return (m_BitField & TYPE_MASK) >> TYPE_OFFSET;
1935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaouint32_t ResolveInfo::desc() const
1965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
1975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return (m_BitField & DESC_MASK) >> DESC_OFFSET;
1985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
1995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaouint32_t ResolveInfo::binding() const
2015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
2025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  if (m_BitField & LOCAL_MASK) {
2035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    if (m_BitField & GLOBAL_MASK) {
2045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao      return ResolveInfo::Absolute;
2055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    }
2065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return ResolveInfo::Local;
2075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return m_BitField & GLOBAL_MASK;
2095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
2105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaouint32_t ResolveInfo::reserved() const
2125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
2135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return (m_BitField & RESERVED_MASK) >> RESERVED_OFFSET;
2145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
2155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoResolveInfo::Visibility ResolveInfo::visibility() const
2175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
2185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return static_cast<ResolveInfo::Visibility>((m_BitField & VISIBILITY_MASK) >> VISIBILITY_OFFSET);
2195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
2205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaobool ResolveInfo::compare(const ResolveInfo::key_type& pKey)
2225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
2235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  size_t length = nameSize();
2245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  if (length != pKey.size())
2255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return false;
2265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  return (0 == std::memcmp(m_Name, pKey.data(), length));
2275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
2285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
229