本文整理汇总了C++中boost::filesystem::path::has_parent_path方法的典型用法代码示例。如果您正苦于以下问题:C++ path::has_parent_path方法的具体用法?C++ path::has_parent_path怎么用?C++ path::has_parent_path使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类boost::filesystem::path
的用法示例。
在下文中一共展示了path::has_parent_path方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: findRepository
bool RLogMill::findRepository(boost::filesystem::path& dir, std::string& log_format) {
dir = absolute(dir);
//fprintf(stderr, "find repository from initial path: %s\n", dir.string().c_str());
while(is_directory(dir)) {
if(is_directory(dir / ".git")) log_format = "git";
else if(is_directory(dir / ".hg")) log_format = "hg";
else if(is_directory(dir / ".bzr")) log_format = "bzr";
else if(is_directory(dir / ".svn")) log_format = "svn";
if(!log_format.empty()) {
//fprintf(stderr, "found '%s' repository at: %s\n", log_format.c_str(), dir.string().c_str());
return true;
}
if(!dir.has_parent_path()) return false;
dir = dir.parent_path();
}
return false;
}
示例2: toUserLibHeader
boost::optional<fs::path> HeaderTagger::toUserLibHeader(const fs::path& path) const {
static const boost::optional<fs::path> fail;
if(userIncludeDirs.empty()) { return fail; }
if(contains(userIncludeDirs, fs::canonical(path))) { return fs::path(); }
if(!path.has_parent_path()) { return fail; }
// if it is within the user-added-include directory, build relative path
auto res = toUserLibHeader(path.parent_path());
return (res) ? (*res / path.filename()) : fail;
}
示例3: path
/**
* A utility function cutting down std-lib header files.
*/
boost::optional<fs::path> HeaderTagger::toStdLibHeader(const fs::path& path) const {
static const boost::optional<fs::path> fail;
if(stdLibDirs.empty()) { return fail; }
if(contains(stdLibDirs, fs::canonical(path))) { // very expensive, keep low use
return fs::path();
}
if(!path.has_parent_path()) { return fail; }
// if it is within the std-lib directory, build relative path
auto res = toStdLibHeader(path.parent_path());
return (res) ? (*res / path.filename()) : fail;
}
示例4: path_init
void path_init( const std::string &repo )
{
path_repo = repo;
while ( true )
{
if ( boost::filesystem::exists( path_repo / path_bak ) )
break;
if ( path_repo.has_parent_path( ) )
path_repo = path_repo.parent_path( );
else
break;
}
}
示例5: IsInside
bool IsInside(const fs::path& path, const fs::path& directory) {
const fs::path target = fs::canonical(directory);
if (!path.has_parent_path()) {
return false;
}
fs::path cur = path.parent_path();
while (cur.has_parent_path()) {
if (cur == target) {
return true;
} else {
cur = cur.parent_path();
}
}
return false;
}
示例6: mkdir
static bool Path::mkdir(const boost::filesystem::path& path, bool recurse)
try {
if (recurse) {
if (path.has_parent_path()) {
boost::filesystem::path parent = path.parent_path();
if (!boost::filesystem::exists(parent)) {
mkdir(parent, recurse);
}
}
if (boost::filesystem::is_directory(path)) {
return true;
}
}
return boost::filesystem::create_directory(path);
} catch (boost::filesystem::basic_filesystem_error<boost::filesystem::path>& e) {
return false;
}
示例7: FindLocalRelativeDirs
/** Find local sub directories of \p path. */
std::vector<std::string> FindLocalRelativeDirs(const fs::path& path) {
std::vector<std::string> dirs;
if (path.has_parent_path() && path.parent_path() != path) {
dirs.push_back("..");
}
fs::directory_iterator end_it;
for (fs::directory_iterator it(path); it != end_it; ++it) {
if (fs::is_directory(it->path())) {
fs::path last_bit_of_path = it->path().filename();
std::string utf8_dir_name = PathToString(last_bit_of_path);
DebugLogger() << "SaveFileDialog::FindLocalRelativeDirs name: " << utf8_dir_name
<< " valid UTF-8: " << IsValidUTF8(utf8_dir_name);
dirs.push_back(utf8_dir_name);
}
}
return dirs;
}
示例8: system_complete
static boost::filesystem::path system_absolute(
const boost::filesystem::path path)
{
if (path.empty())
return path;
if (path.is_absolute())
return path;
if (path.has_parent_path())
return bfs::system_complete(path);
if (!bfs::exists(path) || bfs::is_directory(path))
{
std::string envPath = qi::os::getenv("PATH");
size_t begin = 0;
#ifndef _WIN32
static const char SEPARATOR = ':';
#else
static const char SEPARATOR = ';';
#endif
for (size_t end = envPath.find(SEPARATOR, begin);
end != std::string::npos;
begin = end + 1, end = envPath.find(SEPARATOR, begin))
{
std::string realPath = envPath.substr(begin, end - begin);
bfs::path p(realPath);
p /= path;
p = boost::filesystem::system_complete(p);
if (boost::filesystem::exists(p) &&
!boost::filesystem::is_directory(p))
return p.string(qi::unicodeFacet());
}
}
// fallback to something
return bfs::system_complete(path);
}
示例9: detect
auto detect_file_or_url( const fs::path & file, const fs::path & saveTo, double k ) {
auto isExists = fs::exists( file );
auto isUrl = is_url( file );
if ( !isExists && !isUrl ) {
std::cout << "File or directory " << file << " not is exists" << std::endl;
return -1;
}
auto outDir = saveTo.empty() ? ( file.has_parent_path() ? file.parent_path() : "./" ) : saveTo;
if ( !isUrl ) {
outDir /= file.stem();
}
if ( !fs::exists( outDir ) && !fs::create_directories( outDir ) ) {
std::cout << "Unable to create directory " << outDir << std::endl;
return -1;
}
std::cout << "Begin. k = " << k << "." << std::endl;
std::cout << "Input " << ( isUrl ? "url" : "file" ) << " is " << file << std::endl;
std::cout << "Files save to " << outDir << std::endl;
return detect( file.string(), outDir.string(), k );
}
示例10: read
// Read parameter from spec file.
// Return true if read succeeded.
bool XMLSpecReaderImpl::read(const std::string& filePath)
{
// Read XML file.
boost::property_tree::ptree root;
boost::property_tree::read_xml(filePath, root);
// Set current directory.
const boost::filesystem::path oldPath = boost::filesystem::current_path();
const boost::filesystem::path currentPath = boost::filesystem::path(filePath);
if(currentPath.has_parent_path())
boost::filesystem::current_path(currentPath.parent_path());
// Read fields.
// name
if( boost::optional<std::string> value = root.get_optional<std::string>("animation.<xmlattr>.name") )
{
_name = value.get();
}
// loops
if( boost::optional<unsigned int> value = root.get_optional<unsigned int>("animation.<xmlattr>.loops") )
{
_loops = value.get();
}
// skip_first
if( boost::optional<bool> value = root.get_optional<bool>("animation.<xmlattr>.skip_first") )
{
_skipFirst = value.get();
}
// delay
Delay defaultDelay = { DEFAULT_FRAME_NUMERATOR, DEFAULT_FRAME_DENOMINATOR };
if( boost::optional<std::string> value = root.get_optional<std::string>("animation.<xmlattr>.default_delay") )
{
if( !str2delay(value.get(), &defaultDelay) )
{
defaultDelay.num = DEFAULT_FRAME_NUMERATOR;
defaultDelay.den = DEFAULT_FRAME_DENOMINATOR;
}
}
// frames
if( boost::optional<boost::property_tree::ptree&> child = root.get_child_optional("animation") )
{
BOOST_FOREACH(const boost::property_tree::ptree::value_type& current, child.get())
{
std::string file;
Delay delay;
const boost::property_tree::ptree& frame = current.second;
// filepath
if( boost::optional<std::string> value = frame.get_optional<std::string>("<xmlattr>.src") )
{
file = value.get();
}
if(file.empty())
continue;
// delay
if( boost::optional<std::string> value = frame.get_optional<std::string>("<xmlattr>.delay") )
{
if( !str2delay(value.get(), &delay) )
delay = defaultDelay;
}
else
{
delay = defaultDelay;
}
// Add frame informations.
const FrameInfo frameInfo = { boost::filesystem::absolute(file).string(), delay };
_frameInfos.push_back(frameInfo);
}
}