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