1 //===- lib/TextAPI/SymbolSet.cpp - TAPI Symbol Set ------------*- C++-*----===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 #include "llvm/TextAPI/SymbolSet.h"
12 using namespace llvm::MachO
;
14 Symbol
*SymbolSet::addGlobalImpl(SymbolKind Kind
, StringRef Name
,
16 Name
= copyString(Name
);
17 auto Result
= Symbols
.try_emplace(SymbolsMapKey
{Kind
, Name
}, nullptr);
19 Result
.first
->second
=
20 new (Allocator
) Symbol
{Kind
, Name
, TargetList(), Flags
};
21 return Result
.first
->second
;
24 Symbol
*SymbolSet::addGlobal(SymbolKind Kind
, StringRef Name
, SymbolFlags Flags
,
26 auto *Sym
= addGlobalImpl(Kind
, Name
, Flags
);
31 const Symbol
*SymbolSet::findSymbol(SymbolKind Kind
, StringRef Name
) const {
32 return Symbols
.lookup({Kind
, Name
});