LLVM  7.0.0svn
Public Types | Public Member Functions | List of all members
llvm::StringTableBuilder Class Reference

Utility for building string tables with deduplicated suffixes. More...

#include "llvm/MC/StringTableBuilder.h"

Public Types

enum  Kind {
  ELF, WinCOFF, MachO, RAW,
  DWARF
}
 

Public Member Functions

 StringTableBuilder (Kind K, unsigned Alignment=1)
 
 ~StringTableBuilder ()
 
size_t add (CachedHashStringRef S)
 Add a string to the builder. More...
 
size_t add (StringRef S)
 
void finalize ()
 Analyze the strings and build the final table. More...
 
void finalizeInOrder ()
 Finalize the string table without reording it. More...
 
size_t getOffset (CachedHashStringRef S) const
 Get the offest of a string in the string table. More...
 
size_t getOffset (StringRef S) const
 
size_t getSize () const
 
void clear ()
 
void write (raw_ostream &OS) const
 
void write (uint8_t *Buf) const
 

Detailed Description

Utility for building string tables with deduplicated suffixes.

Definition at line 24 of file StringTableBuilder.h.

Member Enumeration Documentation

◆ Kind

Enumerator
ELF 
WinCOFF 
MachO 
RAW 
DWARF 

Definition at line 26 of file StringTableBuilder.h.

Constructor & Destructor Documentation

◆ StringTableBuilder()

StringTableBuilder::StringTableBuilder ( Kind  K,
unsigned  Alignment = 1 
)

Definition at line 49 of file StringTableBuilder.cpp.

◆ ~StringTableBuilder()

StringTableBuilder::~StringTableBuilder ( )
default

Member Function Documentation

◆ add() [1/2]

size_t StringTableBuilder::add ( CachedHashStringRef  S)

Add a string to the builder.

Returns the position of S in the table. The position will be changed if finalize is used. Can only be used before the table is finalized.

Definition at line 177 of file StringTableBuilder.cpp.

References llvm::alignTo(), assert(), llvm::COFF::NameSize, P, RAW, llvm::CachedHashStringRef::size(), and WinCOFF.

Referenced by llvm::MachObjectWriter::computeSymbolTable(), llvm::MCDwarfLineStr::emitRef(), getEncodedUnnamedAddr(), llvm::WriteIndexToFile(), writeTypeIdSummaryRecord(), and writeWholeProgramDevirtResolution().

◆ add() [2/2]

size_t llvm::StringTableBuilder::add ( StringRef  S)
inline

Definition at line 46 of file StringTableBuilder.h.

References add(), finalize(), finalizeInOrder(), and getOffset().

Referenced by add().

◆ clear()

void StringTableBuilder::clear ( )

Definition at line 165 of file StringTableBuilder.cpp.

Referenced by getSize(), and llvm::MachObjectWriter::reset().

◆ finalize()

void StringTableBuilder::finalize ( )

Analyze the strings and build the final table.

No more strings can be added after this point.

Definition at line 119 of file StringTableBuilder.cpp.

References assert(), and DWARF.

Referenced by add(), and llvm::MachObjectWriter::computeSymbolTable().

◆ finalizeInOrder()

void StringTableBuilder::finalizeInOrder ( )

Finalize the string table without reording it.

In this mode, offsets returned by add will still be valid.

Definition at line 124 of file StringTableBuilder.cpp.

References llvm::alignTo(), llvm::StringRef::endswith(), MachO, multikeySort(), P, RAW, and llvm::StringRef::size().

Referenced by add(), llvm::MCDwarfLineStr::emitSection(), and llvm::BitcodeWriter::writeStrtab().

◆ getOffset() [1/2]

size_t StringTableBuilder::getOffset ( CachedHashStringRef  S) const

Get the offest of a string in the string table.

Can only be used after the table is finalized.

Definition at line 170 of file StringTableBuilder.cpp.

References assert(), and I.

Referenced by add(), llvm::MachObjectWriter::computeSymbolTable(), and getOffset().

◆ getOffset() [2/2]

size_t llvm::StringTableBuilder::getOffset ( StringRef  S) const
inline

Definition at line 59 of file StringTableBuilder.h.

References getOffset().

◆ getSize()

size_t llvm::StringTableBuilder::getSize ( ) const
inline

◆ write() [1/2]

void StringTableBuilder::write ( raw_ostream OS) const

◆ write() [2/2]

void StringTableBuilder::write ( uint8_t *  Buf) const

The documentation for this class was generated from the following files: