本文整理汇总了C++中FilePath::getAbsolutePath方法的典型用法代码示例。如果您正苦于以下问题:C++ FilePath::getAbsolutePath方法的具体用法?C++ FilePath::getAbsolutePath怎么用?C++ FilePath::getAbsolutePath使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FilePath
的用法示例。
在下文中一共展示了FilePath::getAbsolutePath方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: updateConnections
void ComponentGraph::updateConnections(const ComponentTypesFile &compFile,
const ComponentDrawOptions &options)
{
BuildPackages buildPkgs(true);
std::vector<Package> packages = buildPkgs.getPackages();
mConnections.clear();
OovStringVec compPaths;
for(size_t i=0; i<mNodes.size(); i++)
{
if(mNodes[i].getComponentNodeType() == ComponentNode::CNT_Component)
{
std::string incPath;
incPath = compFile.getComponentAbsolutePath(mNodes[i].getName());
compPaths.push_back(incPath);
}
}
// This is slow - look to improve?
for(size_t consumerIndex=0; consumerIndex<mNodes.size(); consumerIndex++)
{
if(mNodes[consumerIndex].getComponentNodeType() == ComponentNode::CNT_Component)
{
OovStringVec srcFiles = compFile.getComponentFiles(
ComponentTypesFile::CFT_CppSource, mNodes[consumerIndex].getName());
for(auto const &srcFile : srcFiles)
{
FilePath fp;
fp.getAbsolutePath(srcFile, FP_File);
OovStringVec incDirs =
mIncludeMap->getNestedIncludeDirsUsedBySourceFile(fp);
for(auto const &incDir : incDirs)
{
size_t supplierIndex = getComponentIndex(compPaths, incDir);
if(supplierIndex != NO_INDEX && consumerIndex != supplierIndex)
mConnections.insert(ComponentConnection(consumerIndex, supplierIndex));
}
}
}
}
for(size_t supplierIndex=0; supplierIndex<mNodes.size(); supplierIndex++)
{
if(mNodes[supplierIndex].getComponentNodeType() == ComponentNode::CNT_ExternalPackage)
{
OovString const &nodeName = mNodes[supplierIndex].getName();
auto const &supplierIt = std::find_if(packages.begin(), packages.end(),
[nodeName](Package const &pkg) -> bool
{ return(pkg.getPkgName().compare(nodeName) == 0); });
if(supplierIt != packages.end())
{
for(size_t consumerIndex=0; consumerIndex<mNodes.size(); consumerIndex++)
{
if(mNodes[consumerIndex].getComponentNodeType() == ComponentNode::CNT_Component)
{
OovStringVec incRoots = (*supplierIt).getIncludeDirs();
if(mIncludeMap->anyRootDirsMatch(incRoots, compPaths[consumerIndex]))
{
mConnections.insert(ComponentConnection(consumerIndex, supplierIndex));
}
}
}
}
}
}
if(!options.drawImplicitRelations)
pruneConnections();
}
示例2: getRelativePathTo
//! Get the relative filename, relative to the given directory
FilePath FilePath::getRelativePathTo( const FilePath& directory ) const
{
if ( toString().empty() || directory.toString().empty() )
return *this;
FilePath path1, file, ext;
getAbsolutePath().splitToDirPathExt( &path1, &file, &ext );
FilePath path2(directory.getAbsolutePath());
StringArray list1, list2;
list1 = StringHelper::split( path1.toString(), "/\\", 2);
list2 = StringHelper::split( path2.toString(), "/\\", 2);
unsigned int i=0;
unsigned int it1=0;
unsigned int it2=0;
#if defined (_WIN32)
char partition1 = 0, partition2 = 0;
FilePath prefix1, prefix2;
if ( it1 > 0 )
prefix1 = list1[ it1 ];
if ( it2 > 0 )
prefix2 = list2[ it2 ];
if ( prefix1.toString().size() > 1 && prefix1.toString()[1] == ':' )
{
partition1 = StringHelper::localeLower( prefix1.toString()[0] );
}
if ( prefix2.toString().size() > 1 && prefix2.toString()[1] == ':' )
{
partition2 = StringHelper::localeLower( prefix2.toString()[0] );
}
// must have the same prefix or we can't resolve it to a relative filename
if ( partition1 != partition2 )
{
return *this;
}
#endif
for (; i<list1.size() && i<list2.size()
#if defined (_WIN32)
&& ( StringHelper::isEquale( list1[ it1 ], list2[ it2 ], StringHelper::equaleIgnoreCase ) )
#else
&& ( list1[ it1 ]== list2[ it2 ] )
#endif
; ++i)
{
++it1;
++it2;
}
path1="";
for (; i<list2.size(); ++i)
{
path1 = path1.toString() + "../";
}
while( it1 != list1.size() )
{
path1 = path1.toString() + list1[ it1 ] + "/";
it1++;
}
path1 = path1.toString() + file.toString();
if( ext.toString().size() )
{
path1 = path1.toString() + "." + ext.toString();
}
return path1;
}
示例3: viewFile
void EditFiles::viewFile(OovStringRef const fn, int lineNum)
{
FilePath fp;
fp.getAbsolutePath(fn, FP_File);
auto iter = std::find_if(mFileViews.begin(), mFileViews.end(),
[fp](std::unique_ptr<ScrolledFileView> const &fv) -> bool
{ return fv->mFilename.comparePaths(fp) == 0; });
if(iter == mFileViews.end())
{
GtkNotebook *book = nullptr;
if(putInMainWindow(fn))
book = mSourceBook;
else
book = mHeaderBook;
if(book)
{
GtkWidget *scrolled = gtk_scrolled_window_new(nullptr, nullptr);
GtkWidget *editView = gtk_text_view_new();
/// @todo - use make_unique when supported.
ScrolledFileView *scrolledView = new ScrolledFileView(mDebugger);
scrolledView->mFileView.init(GTK_TEXT_VIEW(editView), this);
OovStatus status = scrolledView->mFileView.openTextFile(fp);
if(status.needReport())
{
OovString err = "Unable to open file ";
err += fp;
status.report(ET_Error, err);
}
scrolledView->mScrolled = GTK_SCROLLED_WINDOW(scrolled);
scrolledView->mFilename = fp;
gtk_container_add(GTK_CONTAINER(scrolled), editView);
Gui::appendPage(book, scrolled,
newTabLabel(fp.getName(), scrolledView->getViewTopParent()));
gtk_widget_show_all(scrolled);
scrolledView->mLeftMargin.setupMargin(GTK_TEXT_VIEW(editView));
// Set up the windows to draw the line numbers in the left margin.
// GTK has changed, and different setups are required for different
// versions of GTK.
// This is not allowed for a text view
// gtk_widget_set_app_paintable(editView, true);
#if(USE_DRAW_LAYER)
overrideDrawLayer(editView);
// If the left window is not created, errors display, "Attempt to
// convert text buffer coordinates to coordinates for a nonexistent
// buffer or private child window of GtkTextView". So create a
// window that is only one pixel wide, and draw the line numbers
// on the main text view window.
gtk_text_view_set_border_window_size(GTK_TEXT_VIEW(editView),
GTK_TEXT_WINDOW_LEFT, 1);
gtk_text_view_set_left_margin(GTK_TEXT_VIEW(editView),
scrolledView->mLeftMargin.getMarginWidth());
#else
// The margin is drawn on the border window.
gtk_text_view_set_border_window_size(GTK_TEXT_VIEW(editView),
GTK_TEXT_WINDOW_LEFT, scrolledView->mLeftMargin.getMarginWidth());
g_signal_connect(editView, "draw", G_CALLBACK(onTextViewDraw), scrolledView);
#endif
g_signal_connect(editView, "focus_in_event",
G_CALLBACK(on_EditFiles_focus_in_event), NULL);
g_signal_connect(editView, "key_press_event",
G_CALLBACK(on_EditFiles_key_press_event), NULL);
g_signal_connect(editView, "button_press_event",
G_CALLBACK(on_EditFiles_button_press_event), NULL);
mFileViews.push_back(std::unique_ptr<ScrolledFileView>(scrolledView));
#if(DBG_EDITF)
sDbgFile.printflush("viewFile count %d, line %d\n", mFileViews.size(), lineNum);
#endif
iter = mFileViews.end()-1;
}
}
GtkNotebook *notebook = (*iter)->getBook();
if(notebook)
{
int pageIndex = getPageNumber(notebook, (*iter)->getTextView());
Gui::setCurrentPage(notebook, pageIndex);
// focus is set after the screen is displayed by onIdle
// gtk_widget_grab_focus(GTK_WIDGET((*iter).getTextView()));
#if(DBG_EDITF)
sDbgFile.printflush("viewFile %d\n", pageIndex);
#endif
if(lineNum > 1)
{
(*iter)->mDesiredLine = lineNum;
}
}
}
示例4: getCompLibrariesAndIncs
OovStringVec CMaker::getCompLibrariesAndIncs(OovStringRef const compName,
OovStringVec &extraIncDirs)
{
OovStringVec libs;
/*
OovStringVec projectLibFileNames;
mObjSymbols.appendOrderedLibFileNames("ProjLibs", getSymbolBasePath(),
projectLibFileNames);
*/
/// @todo - this does not order the libraries.
OovStringVec srcFiles = mCompTypes.getComponentSources(compName);
OovStringSet projLibs;
OovStringSet extraIncDirsSet;
OovStringVec compNames = mCompTypes.getComponentNames(true);
for(auto const &srcFile : srcFiles)
{
FilePath fp;
fp.getAbsolutePath(srcFile, FP_File);
OovStringVec incDirs =
mIncMap.getNestedIncludeDirsUsedBySourceFile(fp);
for(auto const &supplierCompName : compNames)
{
ComponentTypesFile::eCompTypes compType =
mCompTypes.getComponentType(supplierCompName);
if(compType == ComponentTypesFile::CT_StaticLib ||
compType == ComponentTypesFile::CT_Unknown)
{
std::string compDir = mCompTypes.getComponentAbsolutePath(
supplierCompName);
for(auto const &incDir : incDirs)
{
if(compDir.compare(incDir) == 0)
{
if(supplierCompName.compare(compName) != 0)
{
if(compType == ComponentTypesFile::CT_StaticLib)
{
projLibs.insert(makeComponentNameFromDir(
supplierCompName));
}
else
{
/// @todo - this could check for include files in the dir
extraIncDirsSet.insert(makeRelativeComponentNameFromDir(
compName, supplierCompName));
}
break;
}
}
}
}
}
}
std::copy(projLibs.begin(), projLibs.end(), std::back_inserter(libs));
std::copy(extraIncDirsSet.begin(), extraIncDirsSet.end(),
std::back_inserter(extraIncDirs));
for(auto const &pkg : mBuildPkgs.getPackages())
{
OovString compDir = mCompTypes.getComponentAbsolutePath(compName);
OovStringVec incRoots = pkg.getIncludeDirs();
if(mIncMap.anyRootDirsMatch(incRoots, compDir))
{
if(pkg.getPkgName().compare(compName) != 0)
{
OovString pkgRef = "${";
OovString pkgDefName;
makeDefineName(pkg.getPkgName(), pkgDefName);
pkgRef += pkgDefName + "_LIBRARIES}";
libs.push_back(pkgRef);
}
}
}
return libs;
}