本文整理汇总了C++中IndexedString::str方法的典型用法代码示例。如果您正苦于以下问题:C++ IndexedString::str方法的具体用法?C++ IndexedString::str怎么用?C++ IndexedString::str使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IndexedString
的用法示例。
在下文中一共展示了IndexedString::str方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: execute
void AdaptSignatureAction::execute()
{
ENSURE_CHAIN_NOT_LOCKED
DUChainReadLocker lock;
IndexedString url = m_otherSideTopContext->url();
lock.unlock();
m_otherSideTopContext = DUChain::self()->waitForUpdate(url, TopDUContext::AllDeclarationsContextsAndUses);
if (!m_otherSideTopContext) {
clangDebug() << "failed to update" << url.str();
return;
}
lock.lock();
Declaration* otherSide = m_otherSideId.getDeclaration(m_otherSideTopContext.data());
if (!otherSide) {
clangDebug() << "could not find definition";
return;
}
DUContext* functionContext = DUChainUtils::getFunctionContext(otherSide);
if (!functionContext) {
clangDebug() << "no function context";
return;
}
if (!functionContext || functionContext->type() != DUContext::Function) {
clangDebug() << "no correct function context";
return;
}
DocumentChangeSet changes;
KTextEditor::Range parameterRange = ClangIntegration::DUChainUtils::functionSignatureRange(otherSide);
QString newText = CodegenHelper::makeSignatureString(otherSide, m_newSignature, !m_editingDefinition);
if (!m_editingDefinition) {
// append a newline after the method signature in case the method definition follows
newText += QLatin1Char('\n');
}
DocumentChange changeParameters(functionContext->url(), parameterRange, QString(), newText);
lock.unlock();
changeParameters.m_ignoreOldText = true;
changes.addChange(changeParameters);
changes.setReplacementPolicy(DocumentChangeSet::WarnOnFailedChange);
DocumentChangeSet::ChangeResult result = changes.applyAllChanges();
if (!result) {
KMessageBox::error(nullptr, i18n("Failed to apply changes: %1", result.m_failureReason));
}
emit executed(this);
foreach(RenameAction * renAct, m_renameActions) {
renAct->execute();
}
}
示例2: constructedPath
//Return the representation for the given URL if it exists, or an empty pointer otherwise
static QExplicitlySharedDataPointer<ArtificialStringData> representationForPath(const IndexedString& path)
{
if(artificialStrings.contains(path))
return artificialStrings[path];
else
{
IndexedString constructedPath(CodeRepresentation::artificialPath(path.str()));
if(artificialStrings.contains(constructedPath))
return artificialStrings[constructedPath];
else
return QExplicitlySharedDataPointer<ArtificialStringData>();
}
}
示例3: constructedUrl
//Return the representation for the given URL if it exists, or an empty pointer otherwise
KSharedPtr<ArtificialStringData> representationForUrl(const IndexedString& url)
{
if(artificialStrings.contains(url))
return artificialStrings[url];
else
{
IndexedString constructedUrl(CodeRepresentation::artificialUrl(url.str()));
if(artificialStrings.contains(constructedUrl))
return artificialStrings[constructedUrl];
else
return KSharedPtr<ArtificialStringData>();
}
}
示例4: translationUnitForUrl
IndexedString ClangIndex::translationUnitForUrl(const IndexedString& url)
{
{ // try explicit pin data first
QMutexLocker lock(&m_mappingMutex);
auto tu = m_tuForUrl.find(url);
if (tu != m_tuForUrl.end()) {
if (!QFile::exists(tu.value().str())) {
// TU doesn't exist, unpin
m_tuForUrl.erase(tu);
return url;
}
return tu.value();
}
}
// if no explicit pin data is available, follow back the duchain import chain
{
DUChainReadLocker lock;
TopDUContext* top = DUChain::self()->chainForDocument(url);
if (top) {
TopDUContext* tuTop = top;
QSet<TopDUContext*> visited;
while(true) {
visited.insert(tuTop);
TopDUContext* next = nullptr;
auto importers = tuTop->indexedImporters();
foreach(IndexedDUContext ctx, importers) {
if (ctx.data()) {
next = ctx.data()->topContext();
break;
}
}
if (!next || visited.contains(next)) {
break;
}
tuTop = next;
}
if (tuTop != top) {
return tuTop->url();
}
}
}
// otherwise, fallback to a simple buddy search for headers
if (ClangHelpers::isHeader(url.str())) {
foreach(const QUrl& buddy, DocumentFinderHelpers::getPotentialBuddies(url.toUrl(), false)) {
const QString buddyPath = buddy.toLocalFile();
if (QFile::exists(buddyPath)) {
return IndexedString(buddyPath);
}
}
}
示例5: addDocuments
void ApplyChangesWidget::addDocuments(const IndexedString & original)
{
int idx=d->m_files.indexOf(original);
if(idx<0) {
QWidget * w = new QWidget;
d->m_documentTabs->addTab(w, original.str());
d->m_documentTabs->setCurrentWidget(w);
d->m_files.insert(d->m_index, original);
d->createEditPart(original);
} else {
d->m_index=idx;
}
}
示例6: visitUnaryExpression
void UseBuilder::visitUnaryExpression( UnaryExpressionAst* node )
{
IndexedString includeFile = getIncludeFileForNode(node, m_editor);
if ( !includeFile.isEmpty() ) {
QualifiedIdentifier identifier(includeFile.str());
DUChainWriteLocker lock(DUChain::lock());
foreach ( Declaration* dec, currentContext()->topContext()->findDeclarations(identifier) ) {
if ( dec->kind() == Declaration::Import ) {
newUse(node->includeExpression, DeclarationPointer(dec));
return;
}
}
}
示例7: IndexedString
InsertArtificialCodeRepresentation::InsertArtificialCodeRepresentation(const IndexedString& file,
const QString& text)
: m_file(file)
{
if(m_file.toUrl().isRelative())
{
m_file = IndexedString(CodeRepresentation::artificialUrl(file.str()));
int idx = 0;
while(artificialStrings.contains(m_file))
{
++idx;
m_file = IndexedString(CodeRepresentation::artificialUrl(QString("%1_%2").arg(idx).arg(file.str())));
}
}
Q_ASSERT(!artificialStrings.contains(m_file));
artificialStrings.insert(m_file, KSharedPtr<ArtificialStringData>(new ArtificialStringData(text)));
}
示例8: IndexedString
InsertArtificialCodeRepresentation::InsertArtificialCodeRepresentation(const IndexedString& file,
const QString& text)
: m_file(file)
{
// make it simpler to use this by converting relative strings into artificial paths
if(QUrl(m_file.str()).isRelative())
{
m_file = IndexedString(CodeRepresentation::artificialPath(file.str()));
int idx = 0;
while(artificialStrings.contains(m_file))
{
++idx;
m_file = IndexedString(CodeRepresentation::artificialPath(QStringLiteral("%1_%2").arg(idx).arg(file.str())));
}
}
Q_ASSERT(!artificialStrings.contains(m_file));
artificialStrings.insert(m_file, QExplicitlySharedDataPointer<ArtificialStringData>(new ArtificialStringData(text)));
}
示例9: translationUnitForUrl
IndexedString ClangIndex::translationUnitForUrl(const IndexedString& url)
{
{ // try explicit pin data first
QMutexLocker lock(&m_mappingMutex);
auto tu = m_tuForUrl.find(url);
if (tu != m_tuForUrl.end()) {
if (!QFile::exists(tu.value().str())) {
// TU doesn't exist, unpin
m_tuForUrl.erase(tu);
return url;
}
return tu.value();
}
}
// otherwise, fallback to a simple buddy search for headers
if (ClangHelpers::isHeader(url.str())) {
foreach(const QUrl& buddy, DocumentFinderHelpers::getPotentialBuddies(url.toUrl(), false)) {
const QString buddyPath = buddy.toLocalFile();
if (QFile::exists(buddyPath)) {
return IndexedString(buddyPath);
}
}
}