本文整理汇总了C++中Twine类的典型用法代码示例。如果您正苦于以下问题:C++ Twine类的具体用法?C++ Twine怎么用?C++ Twine使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Twine类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: native
void native(const Twine &path, SmallVectorImpl<char> &result, Style style) {
assert((!path.isSingleStringRef() ||
path.getSingleStringRef().data() != result.data()) &&
"path and result are not allowed to overlap!");
// Clear result.
result.clear();
path.toVector(result);
native(result, style);
}
开发者ID:Leedehai,项目名称:llvm,代码行数:9,代码来源:Path.cpp
示例2: setName
void Value::setName(const Twine &NewName) {
assert(SubclassID != MDStringVal &&
"Cannot set the name of MDString with this method!");
// Fast path for common IRBuilder case of setName("") when there is no name.
if (NewName.isTriviallyEmpty() && !hasName())
return;
SmallString<256> NameData;
StringRef NameRef = NewName.toStringRef(NameData);
// Name isn't changing?
if (getName() == NameRef)
return;
assert(!getType()->isVoidTy() && "Cannot assign a name to void values!");
// Get the symbol table to update for this object.
ValueSymbolTable *ST;
if (getSymTab(this, ST))
return; // Cannot set a name on this value (e.g. constant).
if (!ST) { // No symbol table to update? Just do the change.
if (NameRef.empty()) {
// Free the name for this value.
Name->Destroy();
Name = 0;
return;
}
if (Name)
Name->Destroy();
// NOTE: Could optimize for the case the name is shrinking to not deallocate
// then reallocated.
// Create the new name.
Name = ValueName::Create(NameRef.begin(), NameRef.end());
Name->setValue(this);
return;
}
// NOTE: Could optimize for the case the name is shrinking to not deallocate
// then reallocated.
if (hasName()) {
// Remove old name.
ST->removeValueName(Name);
Name->Destroy();
Name = 0;
if (NameRef.empty())
return;
}
// Name is changing to something new.
Name = ST->createValueName(NameRef, this);
}
开发者ID:Abocer,项目名称:android-4.2_r1,代码行数:57,代码来源:Value.cpp
示例3: Data
/// \brief Construct a triple from string representations of the architecture,
/// vendor, and OS.
///
/// This joins each argument into a canonical string representation and parses
/// them into enum members. It leaves the environment unknown and omits it from
/// the string representation.
Triple::Triple(const Twine &ArchStr, const Twine &VendorStr, const Twine &OSStr)
: Data((ArchStr + Twine('-') + VendorStr + Twine('-') + OSStr).str()),
Arch(parseArch(ArchStr.str())),
SubArch(parseSubArch(ArchStr.str())),
Vendor(parseVendor(VendorStr.str())),
OS(parseOS(OSStr.str())),
Environment(), ObjectFormat(Triple::UnknownObjectFormat) {
ObjectFormat = getDefaultFormat(*this);
}
开发者ID:eiselekd,项目名称:hw,代码行数:15,代码来源:Triple.cpp
示例4: addComment
void Attributes::addComment(const Twine &Comment) {
if (!Comment.isTriviallyEmpty()) {
if (Comments.empty())
Comments = " // ";
else
Comments += ", ";
Comments += Comment.str();
}
}
开发者ID:jamboree,项目名称:llvm,代码行数:9,代码来源:ModuleSummaryIndex.cpp
示例5: Data
/// \brief Construct a triple from string representations of the architecture,
/// vendor, OS, and environment.
///
/// This joins each argument into a canonical string representation and parses
/// them into enum members.
Triple::Triple(const Twine &ArchStr, const Twine &VendorStr, const Twine &OSStr,
const Twine &EnvironmentStr)
: Data((ArchStr + Twine('-') + VendorStr + Twine('-') + OSStr + Twine('-') +
EnvironmentStr).str()),
Arch(parseArch(ArchStr.str())),
Vendor(parseVendor(VendorStr.str())),
OS(parseOS(OSStr.str())),
Environment(parseEnvironment(EnvironmentStr.str())) {
}
开发者ID:C0deZLee,项目名称:IntFlow,代码行数:14,代码来源:Triple.cpp
示例6: add
void Attributes::add(const Twine &Name, const Twine &Value,
const Twine &Comment) {
std::string A = Name.str();
A += "=\"";
A += Value.str();
A += "\"";
Attrs.push_back(A);
addComment(Comment);
}
开发者ID:jamboree,项目名称:llvm,代码行数:9,代码来源:ModuleSummaryIndex.cpp
示例7: setNameImpl
void Value::setNameImpl(const Twine &NewName) {
// Fast-path: LLVMContext can be set to strip out non-GlobalValue names
if (getContext().shouldDiscardValueNames() && !isa<GlobalValue>(this))
return;
// Fast path for common IRBuilder case of setName("") when there is no name.
if (NewName.isTriviallyEmpty() && !hasName())
return;
SmallString<256> NameData;
StringRef NameRef = NewName.toStringRef(NameData);
assert(NameRef.find_first_of(0) == StringRef::npos &&
"Null bytes are not allowed in names");
// Name isn't changing?
if (getName() == NameRef)
return;
assert(!getType()->isVoidTy() && "Cannot assign a name to void values!");
// Get the symbol table to update for this object.
ValueSymbolTable *ST;
if (getSymTab(this, ST))
return; // Cannot set a name on this value (e.g. constant).
if (!ST) { // No symbol table to update? Just do the change.
if (NameRef.empty()) {
// Free the name for this value.
destroyValueName();
return;
}
// NOTE: Could optimize for the case the name is shrinking to not deallocate
// then reallocated.
destroyValueName();
// Create the new name.
setValueName(ValueName::Create(NameRef));
getValueName()->setValue(this);
return;
}
// NOTE: Could optimize for the case the name is shrinking to not deallocate
// then reallocated.
if (hasName()) {
// Remove old name.
ST->removeValueName(getValueName());
destroyValueName();
if (NameRef.empty())
return;
}
// Name is changing to something new.
setValueName(ST->createValueName(NameRef, this));
}
开发者ID:bugsnag,项目名称:llvm,代码行数:56,代码来源:Value.cpp
示例8: add
void Attributes::add(const Twine &Name, const Twine &Value,
const Twine &Comment) {
std::string A = Name.str();
A += "=\"";
A += Value.str();
A += "\"";
Attrs.push_back(A);
if (!Comment.isTriviallyEmpty()) {
if (Comments.empty())
Comments = " // ";
else
Comments += ", ";
Comments += Comment.str();
}
}
开发者ID:bgabor666,项目名称:llvm,代码行数:15,代码来源:ModuleSummaryIndex.cpp
示例9: runToolOnCodeWithArgs
bool runToolOnCodeWithArgs(clang::FrontendAction *ToolAction, const Twine &Code,
const std::vector<std::string> &Args,
const Twine &FileName) {
SmallString<16> FileNameStorage;
StringRef FileNameRef = FileName.toNullTerminatedStringRef(FileNameStorage);
llvm::IntrusiveRefCntPtr<FileManager> Files(
new FileManager(FileSystemOptions()));
ToolInvocation Invocation(getSyntaxOnlyToolArgs(Args, FileNameRef), ToolAction,
Files.getPtr());
SmallString<1024> CodeStorage;
Invocation.mapVirtualFile(FileNameRef,
Code.toNullTerminatedStringRef(CodeStorage));
return Invocation.run();
}
开发者ID:pkesist,项目名称:clang,代码行数:15,代码来源:Tooling.cpp
示例10: report
bool FileRemapper::report(const Twine &err, DiagnosticsEngine &Diag) {
SmallString<128> buf;
unsigned ID = Diag.getDiagnosticIDs()->getCustomDiagID(DiagnosticIDs::Error,
err.toStringRef(buf));
Diag.Report(ID);
return true;
}
开发者ID:bholt,项目名称:clang,代码行数:7,代码来源:FileRemapper.cpp
示例11: saveBuffer
// This is for use when debugging LTO.
static void saveBuffer(StringRef Buffer, const Twine &Path) {
std::error_code EC;
raw_fd_ostream OS(Path.str(), EC, sys::fs::OpenFlags::F_None);
if (EC)
error(EC, "cannot create " + Path);
OS << Buffer;
}
开发者ID:cms-externals,项目名称:lld,代码行数:8,代码来源:LTO.cpp
示例12: GetName
static std::string GetName(Value *V) {
static unsigned Id = 0;
if (!Ids.count(V))
Ids[V] = Id++;
Twine Name;
if (V->hasName()) {
if (isa<Instruction>(V) || isa<Argument>(V))
Name = V->getName();
else
Name = "__SRA_SYM_UNKNOWN_" + V->getName() + "__";
} else {
Name = "__SRA_SYM_UNAMED__";
}
return Name.str() + "." + std::to_string(Ids[V]);
}
开发者ID:lisqu,项目名称:selective-page-migration-ccnuma,代码行数:16,代码来源:Expr.cpp
示例13: getNameWithPrefix
/// getNameWithPrefix - Fill OutName with the name of the appropriate prefix
/// and the specified name as the global variable name. GVName must not be
/// empty.
void Mangler::getNameWithPrefix(SmallVectorImpl<char> &OutName,
const Twine &GVName, ManglerPrefixTy PrefixTy) {
SmallString<256> TmpData;
StringRef Name = GVName.toStringRef(TmpData);
assert(!Name.empty() && "getNameWithPrefix requires non-empty name");
// If the global name is not led with \1, add the appropriate prefixes.
if (Name[0] == '\1') {
Name = Name.substr(1);
} else {
if (PrefixTy == Mangler::Private) {
const char *Prefix = DL->getPrivateGlobalPrefix();
OutName.append(Prefix, Prefix+strlen(Prefix));
} else if (PrefixTy == Mangler::LinkerPrivate) {
const char *Prefix = DL->getLinkerPrivateGlobalPrefix();
OutName.append(Prefix, Prefix+strlen(Prefix));
}
char Prefix = DL->getGlobalPrefix();
if (Prefix != '\0')
OutName.push_back(Prefix);
}
// If this is a simple string that doesn't need escaping, just append it.
OutName.append(Name.begin(), Name.end());
}
开发者ID:royqin,项目名称:llvm,代码行数:29,代码来源:Mangler.cpp
示例14: dumpObjectFile
static bool dumpObjectFile(ObjectFile &Obj, DWARFContext &DICtx, Twine Filename,
raw_ostream &OS) {
logAllUnhandledErrors(DICtx.loadRegisterInfo(Obj), errs(),
Filename.str() + ": ");
// The UUID dump already contains all the same information.
if (!(DumpType & DIDT_UUID) || DumpType == DIDT_All)
OS << Filename << ":\tfile format " << Obj.getFileFormatName() << '\n';
// Handle the --lookup option.
if (Lookup)
return lookup(DICtx, Lookup, OS);
// Handle the --name option.
if (!Name.empty()) {
StringSet<> Names;
for (auto name : Name)
Names.insert((IgnoreCase && !UseRegex) ? StringRef(name).lower() : name);
filterByName(Names, DICtx.compile_units(), OS);
filterByName(Names, DICtx.dwo_compile_units(), OS);
return true;
}
// Handle the --find option and lower it to --debug-info=<offset>.
if (!Find.empty()) {
filterByAccelName(Find, DICtx, OS);
return true;
}
// Dump the complete DWARF structure.
DICtx.dump(OS, getDumpOpts(), DumpOffsets);
return true;
}
开发者ID:crabtw,项目名称:llvm,代码行数:33,代码来源:llvm-dwarfdump.cpp
示例15: report_fatal_error
void llvm::report_fatal_error(const Twine &Reason, bool GenCrashDiag) {
llvm::fatal_error_handler_t handler = nullptr;
void* handlerData = nullptr;
{
// Only acquire the mutex while reading the handler, so as not to invoke a
// user-supplied callback under a lock.
#if LLVM_ENABLE_THREADS == 1
std::lock_guard<std::mutex> Lock(ErrorHandlerMutex);
#endif
handler = ErrorHandler;
handlerData = ErrorHandlerUserData;
}
if (handler) {
handler(handlerData, Reason.str(), GenCrashDiag);
} else {
// Blast the result out to stderr. We don't try hard to make sure this
// succeeds (e.g. handling EINTR) and we can't use errs() here because
// raw ostreams can call report_fatal_error.
SmallVector<char, 64> Buffer;
raw_svector_ostream OS(Buffer);
OS << "LLVM ERROR: " << Reason << "\n";
StringRef MessageStr = OS.str();
ssize_t written = ::write(2, MessageStr.data(), MessageStr.size());
(void)written; // If something went wrong, we deliberately just give up.
}
// If we reached here, we are failing ungracefully. Run the interrupt handlers
// to make sure any special cleanups get done, in particular that we remove
// files registered with RemoveFileOnSignal.
sys::RunInterruptHandlers();
exit(1);
}
开发者ID:2trill2spill,项目名称:freebsd,代码行数:34,代码来源:ErrorHandling.cpp
示例16: getNameWithPrefixx
static void getNameWithPrefixx(raw_ostream &OS, const Twine &GVName,
Mangler::ManglerPrefixTy PrefixTy,
const DataLayout &DL, char Prefix) {
SmallString<256> TmpData;
StringRef Name = GVName.toStringRef(TmpData);
assert(!Name.empty() && "getNameWithPrefix requires non-empty name");
// No need to do anything special if the global has the special "do not
// mangle" flag in the name.
if (Name[0] == '\1') {
OS << Name.substr(1);
return;
}
if (PrefixTy == Mangler::Private)
OS << DL.getPrivateGlobalPrefix();
else if (PrefixTy == Mangler::LinkerPrivate)
OS << DL.getLinkerPrivateGlobalPrefix();
if (Prefix != '\0')
OS << Prefix;
// If this is a simple string that doesn't need escaping, just append it.
OS << Name;
}
开发者ID:0x00evil,项目名称:llvm,代码行数:25,代码来源:Mangler.cpp
示例17: ExportDFFToFile
void cFontLoader::
ExportDFFToFile(tDistanceFontHandle font, const Twine& in_path /*= ""*/)
{
auto& dff = DistanceFont(font);
size_t face_size = cSerialization::SerializedSize(dff.Face());
cDFFFile pair(dff, face_size);
AlignedBuffer<16> buffer;
cSerialization::SerializeLZMA(pair,buffer);
cStringRef file_data(buffer.ptr<char>(), buffer.size());
try{
if (sys::path::has_filename(in_path))
{
WriteFileToDisk(file_data, in_path);
}
else
{
cSmallVector<char, 256> path_buf;
cStringRef temp_path = in_path.toNullTerminatedStringRef(path_buf);
sys::path::append(path_buf, in_path, dff.FontName() + ".dff");
cStringRef full_path(path_buf.data(), path_buf.size());
WriteFileToDisk(file_data, full_path);
}
}
catch (const Exception& e)
{
Log::Warn("Swallowed exception while trying to write dff file: %s",
e.what());
}
}
开发者ID:ProframFiles,项目名称:FancyDraw,代码行数:30,代码来源:akjFontLoader.cpp
示例18: Data
/// \brief Construct a triple from the string representation provided.
///
/// This stores the string representation and parses the various pieces into
/// enum members.
Triple::Triple(const Twine &Str)
: Data(Str.str()),
Arch(parseArch(getArchName())),
Vendor(parseVendor(getVendorName())),
OS(parseOS(getOSName())),
Environment(parseEnvironment(getEnvironmentName())) {
}
开发者ID:TristanSchmelcher,项目名称:llvm-andersen,代码行数:11,代码来源:Triple.cpp
示例19: getBuffer
error_code RealFile::getBuffer(const Twine &Name,
std::unique_ptr<MemoryBuffer> &Result,
int64_t FileSize, bool RequiresNullTerminator) {
assert(FD != -1 && "cannot get buffer for closed file");
return MemoryBuffer::getOpenFile(FD, Name.str().c_str(), Result, FileSize,
RequiresNullTerminator);
}
开发者ID:VanirLLVM,项目名称:toolchain_clang,代码行数:7,代码来源:VirtualFileSystem.cpp
示例20: alignTo
std::unique_ptr<MemoryBuffer>
MemoryBuffer::getNewUninitMemBuffer(size_t Size, const Twine &BufferName) {
// Allocate space for the MemoryBuffer, the data and the name. It is important
// that MemoryBuffer and data are aligned so PointerIntPair works with them.
// TODO: Is 16-byte alignment enough? We copy small object files with large
// alignment expectations into this buffer.
SmallString<256> NameBuf;
StringRef NameRef = BufferName.toStringRef(NameBuf);
size_t AlignedStringLen =
alignTo(sizeof(MemoryBufferMem) + NameRef.size() + 1, 16);
size_t RealLen = AlignedStringLen + Size + 1;
char *Mem = static_cast<char*>(operator new(RealLen, std::nothrow));
if (!Mem)
return nullptr;
// The name is stored after the class itself.
CopyStringRef(Mem + sizeof(MemoryBufferMem), NameRef);
// The buffer begins after the name and must be aligned.
char *Buf = Mem + AlignedStringLen;
Buf[Size] = 0; // Null terminate buffer.
auto *Ret = new (Mem) MemoryBufferMem(StringRef(Buf, Size), true);
return std::unique_ptr<MemoryBuffer>(Ret);
}
开发者ID:rendering-io,项目名称:LLVM,代码行数:25,代码来源:MemoryBuffer.cpp
注:本文中的Twine类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论