mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-28 16:11:29 +00:00
Support: Add a raw_ostream::write_zeros() function. NFCI.
This will eventually replace MCObjectWriter::WriteZeros. Part of PR37466. Differential Revision: https://reviews.llvm.org/D47033 llvm-svn: 332675
This commit is contained in:
parent
c6526176cf
commit
070777dbdd
@ -1372,8 +1372,7 @@ void CoverageMappingModuleGen::emit() {
|
||||
// and coverage mappings is a multiple of 8.
|
||||
if (size_t Rem = OS.str().size() % 8) {
|
||||
CoverageMappingSize += 8 - Rem;
|
||||
for (size_t I = 0, S = 8 - Rem; I < S; ++I)
|
||||
OS << '\0';
|
||||
OS.write_zeros(8 - Rem);
|
||||
}
|
||||
auto *FilenamesAndMappingsVal =
|
||||
llvm::ConstantDataArray::getString(Ctx, OS.str(), false);
|
||||
|
@ -242,6 +242,9 @@ public:
|
||||
/// indent - Insert 'NumSpaces' spaces.
|
||||
raw_ostream &indent(unsigned NumSpaces);
|
||||
|
||||
/// write_zeros - Insert 'NumZeros' nulls.
|
||||
raw_ostream &write_zeros(unsigned NumZeros);
|
||||
|
||||
/// Changes the foreground color of text that will be output from this point
|
||||
/// forward.
|
||||
/// @param Color ANSI color to use, the special SAVEDCOLOR can be used to
|
||||
|
@ -455,23 +455,35 @@ raw_ostream &raw_ostream::operator<<(const FormattedBytes &FB) {
|
||||
return *this;
|
||||
}
|
||||
|
||||
/// indent - Insert 'NumSpaces' spaces.
|
||||
raw_ostream &raw_ostream::indent(unsigned NumSpaces) {
|
||||
static const char Spaces[] = " "
|
||||
" "
|
||||
" ";
|
||||
template <char C>
|
||||
static raw_ostream &write_padding(raw_ostream &OS, unsigned NumChars) {
|
||||
static const char Chars[] = {C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C,
|
||||
C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C,
|
||||
C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C,
|
||||
C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C,
|
||||
C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C};
|
||||
|
||||
// Usually the indentation is small, handle it with a fastpath.
|
||||
if (NumSpaces < array_lengthof(Spaces))
|
||||
return write(Spaces, NumSpaces);
|
||||
if (NumChars < array_lengthof(Chars))
|
||||
return OS.write(Chars, NumChars);
|
||||
|
||||
while (NumSpaces) {
|
||||
unsigned NumToWrite = std::min(NumSpaces,
|
||||
(unsigned)array_lengthof(Spaces)-1);
|
||||
write(Spaces, NumToWrite);
|
||||
NumSpaces -= NumToWrite;
|
||||
while (NumChars) {
|
||||
unsigned NumToWrite = std::min(NumChars,
|
||||
(unsigned)array_lengthof(Chars)-1);
|
||||
OS.write(Chars, NumToWrite);
|
||||
NumChars -= NumToWrite;
|
||||
}
|
||||
return *this;
|
||||
return OS;
|
||||
}
|
||||
|
||||
/// indent - Insert 'NumSpaces' spaces.
|
||||
raw_ostream &raw_ostream::indent(unsigned NumSpaces) {
|
||||
return write_padding<' '>(*this, NumSpaces);
|
||||
}
|
||||
|
||||
/// write_zeros - Insert 'NumZeros' nulls.
|
||||
raw_ostream &raw_ostream::write_zeros(unsigned NumZeros) {
|
||||
return write_padding<'\0'>(*this, NumZeros);
|
||||
}
|
||||
|
||||
void raw_ostream::anchor() {}
|
||||
|
Loading…
Reference in New Issue
Block a user