This document is for a version of USD that is under development. See this page for the current release.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
packageUtils.h File Reference

Utility functions for working with package assets. More...

+ Include dependency graph for packageUtils.h:

Go to the source code of this file.

Functions

Package Relative Paths

Assets within package assets can be addressed via "package-relative" paths. For example, given a hypothetical package "Model.package", the asset "Geom.file", can be referred to using the path "Model.package[Geom.file]".

A package-relative path consists of two parts:

  • The outer "package" path is the path to the containing package asset. This path can be whatever is appropriate to the client's asset system.
  • The inner "packaged" path is the path to an asset contained within the package asset. This path must be a relative path delimited by forward slashes '/', with no leading slashes or drive or device letters. Note that packaged paths may themselves be package-relative paths, since package assets may be nested.

Examples:

  • /path/to/Model.package[a/b/Geom.file]
  • /path/to/Model.package[a/b/Sub.package[c/d/Geom.file]]
AR_API bool ArIsPackageRelativePath (const std::string &path)
 Return true if path is a package-relative path, false otherwise.
 
AR_API std::string ArJoinPackageRelativePath (const std::vector< std::string > &paths)
 Combines the given paths into a single package-relative path, nesting paths as necessary.
 
AR_API std::string ArJoinPackageRelativePath (const std::pair< std::string, std::string > &paths)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
AR_API std::string ArJoinPackageRelativePath (const std::string &packagePath, const std::string &packagedPath)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
AR_API std::pair< std::string, std::string > ArSplitPackageRelativePathOuter (const std::string &path)
 Split package-relative path path into a (package path, packaged path) pair.
 
AR_API std::pair< std::string, std::string > ArSplitPackageRelativePathInner (const std::string &path)
 Split package-relative path path into a (package path, packaged path) pair.
 

Detailed Description

Utility functions for working with package assets.

Definition in file packageUtils.h.

Function Documentation

◆ ArIsPackageRelativePath()

AR_API bool ArIsPackageRelativePath ( const std::string &  path)

Return true if path is a package-relative path, false otherwise.

◆ ArJoinPackageRelativePath() [1/3]

AR_API std::string ArJoinPackageRelativePath ( const std::pair< std::string, std::string > &  paths)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ ArJoinPackageRelativePath() [2/3]

AR_API std::string ArJoinPackageRelativePath ( const std::string &  packagePath,
const std::string &  packagedPath 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ ArJoinPackageRelativePath() [3/3]

AR_API std::string ArJoinPackageRelativePath ( const std::vector< std::string > &  paths)

Combines the given paths into a single package-relative path, nesting paths as necessary.

ArJoinPackageRelativePath(["a.pack", "b.pack"])
=> "a.pack[b.pack]"
ArJoinPackageRelativePath(["a.pack", "b.pack", "c.pack"])
=> "a.pack[b.pack[c.pack]]"
ArJoinPackageRelativePath(["a.pack[b.pack]", "c.pack"])
=> "a.pack[b.pack[c.pack]]"
AR_API std::string ArJoinPackageRelativePath(const std::vector< std::string > &paths)
Combines the given paths into a single package-relative path, nesting paths as necessary.

◆ ArSplitPackageRelativePathInner()

AR_API std::pair< std::string, std::string > ArSplitPackageRelativePathInner ( const std::string &  path)

Split package-relative path path into a (package path, packaged path) pair.

If packageRelativePath contains nested package-relative paths the package path will be the outermost package-relative path, and the packaged path will be the innermost packaged path.

=> ("a.pack", "b.pack")
ArSplitPackageRelativePathInner("a.pack[b.pack[c.pack]]")
=> ("a.pack[b.pack]", "c.pack")
AR_API std::pair< std::string, std::string > ArSplitPackageRelativePathInner(const std::string &path)
Split package-relative path path into a (package path, packaged path) pair.

◆ ArSplitPackageRelativePathOuter()

AR_API std::pair< std::string, std::string > ArSplitPackageRelativePathOuter ( const std::string &  path)

Split package-relative path path into a (package path, packaged path) pair.

If packageRelativePath contains nested package-relative paths the package path will be the outermost package path, and the packaged path will be the inner package-relative path.

=> ("a.pack", "b.pack")
ArSplitPackageRelativePathOuter("a.pack[b.pack[c.pack]]")
=> ("a.pack", "b.pack[c.pack]")
AR_API std::pair< std::string, std::string > ArSplitPackageRelativePathOuter(const std::string &path)
Split package-relative path path into a (package path, packaged path) pair.