HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SdfFileFormat Class Referenceabstract

#include <fileFormat.h>

+ Inheritance diagram for SdfFileFormat:

Public Types

typedef std::map< std::string,
std::string
FileFormatArguments
 
- Public Types inherited from TfRefBase
typedef void(* UniqueChangedFuncPtr )(TfRefBase const *, bool)
 

Public Member Functions

 SdfFileFormat (const SdfFileFormat &)=delete
 
SdfFileFormatoperator= (const SdfFileFormat &)=delete
 
SDF_API const SdfSchemaBaseGetSchema () const
 Returns the schema for this format. More...
 
SDF_API const TfTokenGetFormatId () const
 Returns the format identifier. More...
 
SDF_API const TfTokenGetTarget () const
 Returns the target for this file format. More...
 
SDF_API const std::stringGetFileCookie () const
 Returns the cookie to be used when writing files with this format. More...
 
SDF_API const TfTokenGetVersionString () const
 Returns the current version of this file format. More...
 
SDF_API bool IsPrimaryFormatForExtensions () const
 
SDF_API const std::vector
< std::string > & 
GetFileExtensions () const
 Returns a list of extensions that this format supports. More...
 
SDF_API const std::stringGetPrimaryFileExtension () const
 
SDF_API bool IsSupportedExtension (const std::string &extension) const
 
virtual SDF_API bool IsPackage () const
 
virtual SDF_API std::string GetPackageRootLayerPath (const std::string &resolvedPath) const
 
virtual SDF_API FileFormatArguments GetDefaultFileFormatArguments () const
 
virtual SDF_API
SdfAbstractDataRefPtr 
InitData (const FileFormatArguments &args) const
 
SDF_API SdfAbstractDataRefPtr InitDetachedData (const FileFormatArguments &args) const
 
SDF_API SdfLayerRefPtr NewLayer (const SdfFileFormatConstPtr &fileFormat, const std::string &identifier, const std::string &realPath, const ArAssetInfo &assetInfo, const FileFormatArguments &args) const
 Instantiate a layer. More...
 
SDF_API bool ShouldSkipAnonymousReload () const
 
SDF_API bool ShouldReadAnonymousLayers () const
 
virtual SDF_API bool CanRead (const std::string &file) const =0
 Returns true if file can be read by this format. More...
 
virtual SDF_API bool Read (SdfLayer *layer, const std::string &resolvedPath, bool metadataOnly) const =0
 
SDF_API bool ReadDetached (SdfLayer *layer, const std::string &resolvedPath, bool metadataOnly) const
 
virtual SDF_API bool WriteToFile (const SdfLayer &layer, const std::string &filePath, const std::string &comment=std::string(), const FileFormatArguments &args=FileFormatArguments()) const
 
virtual SDF_API bool ReadFromString (SdfLayer *layer, const std::string &str) const
 
virtual SDF_API bool WriteToStream (const SdfSpecHandle &spec, std::ostream &out, size_t indent) const
 Write the provided spec to out indented indent levels. More...
 
virtual SDF_API bool WriteToString (const SdfLayer &layer, std::string *str, const std::string &comment=std::string()) const
 
virtual SDF_API std::set
< std::string
GetExternalAssetDependencies (const SdfLayer &layer) const
 
SDF_API bool SupportsReading () const
 
SDF_API bool SupportsWriting () const
 
SDF_API bool SupportsEditing () const
 
- Public Member Functions inherited from TfRefBase
 TfRefBase ()
 
size_t GetCurrentCount () const
 Return the current reference count of this object. More...
 
bool IsUnique () const
 Return true if only one TfRefPtr points to this object. More...
 
const TfRefCountGetRefCount () const
 
void SetShouldInvokeUniqueChangedListener (bool shouldCall)
 
- Public Member Functions inherited from TfWeakBase
 TfWeakBase ()
 
 TfWeakBase (const TfWeakBase &)
 
const TfWeakBase__GetTfWeakBase__ () const
 
const TfWeakBaseoperator= (const TfWeakBase &)
 
void EnableNotification2 () const
 
TF_API void constGetUniqueIdentifier () const
 

Static Public Member Functions

static SDF_API std::string GetFileExtension (const std::string &s)
 
static SDF_API std::set
< std::string
FindAllFileFormatExtensions ()
 
static SDF_API std::set
< std::string
FindAllDerivedFileFormatExtensions (const TfType &baseType)
 
static SDF_API bool FormatSupportsReading (const std::string &extension, const std::string &target=std::string())
 
static SDF_API bool FormatSupportsWriting (const std::string &extension, const std::string &target=std::string())
 
static SDF_API bool FormatSupportsEditing (const std::string &extension, const std::string &target=std::string())
 
static SDF_API
SdfFileFormatConstPtr 
FindById (const TfToken &formatId)
 
static SDF_API
SdfFileFormatConstPtr 
FindByExtension (const std::string &path, const std::string &target=std::string())
 
static SDF_API
SdfFileFormatConstPtr 
FindByExtension (const std::string &path, const FileFormatArguments &args)
 
- Static Public Member Functions inherited from TfRefBase
static TF_API void SetUniqueChangedListener (UniqueChangedListener listener)
 

Protected Member Functions

SDF_API SdfFileFormat (const TfToken &formatId, const TfToken &versionString, const TfToken &target, const std::string &extension)
 Constructor. More...
 
SDF_API SdfFileFormat (const TfToken &formatId, const TfToken &versionString, const TfToken &target, const std::string &extension, const SdfSchemaBase &schema)
 
 SdfFileFormat (const TfToken &formatId, const TfToken &versionString, const TfToken &target, const std::string &extension, const SdfSchemaBase &&schema)=delete
 Disallow temporary SdfSchemaBase objects being passed to the c'tor. More...
 
SDF_API SdfFileFormat (const TfToken &formatId, const TfToken &versionString, const TfToken &target, const std::vector< std::string > &extensions)
 Constructor. More...
 
SDF_API SdfFileFormat (const TfToken &formatId, const TfToken &versionString, const TfToken &target, const std::vector< std::string > &extensions, const SdfSchemaBase &schema)
 
 SdfFileFormat (const TfToken &formatId, const TfToken &versionString, const TfToken &target, const std::vector< std::string > &extensions, const SdfSchemaBase &&schema)=delete
 Disallow temporary SdfSchemaBase objects being passed to the c'tor. More...
 
virtual SDF_API ~SdfFileFormat ()
 Destructor. More...
 
SDF_API bool _ReadAndCopyLayerDataToMemory (SdfLayer *layer, const std::string &resolvedPath, bool metadataOnly, bool *didCopyData=nullptr) const
 
virtual SDF_API SdfLayer_InstantiateNewLayer (const SdfFileFormatConstPtr &fileFormat, const std::string &identifier, const std::string &realPath, const ArAssetInfo &assetInfo, const FileFormatArguments &args) const
 
virtual SDF_API bool _ShouldSkipAnonymousReload () const
 
virtual SDF_API bool _ShouldReadAnonymousLayers () const
 
virtual SDF_API
SdfAbstractDataRefPtr 
_InitDetachedData (const FileFormatArguments &args) const
 
virtual SDF_API bool _ReadDetached (SdfLayer *layer, const std::string &resolvedPath, bool metadataOnly) const
 
- Protected Member Functions inherited from TfRefBase
virtual TF_API ~TfRefBase ()
 
- Protected Member Functions inherited from TfWeakBase
 ~TfWeakBase ()
 
TfRefPtr< Tf_Remnant_Register () const
 
template<class T >
TfRefPtr< Tf_Remnant_Register (T *tempRmnt) const
 
bool _HasRemnant () const
 

Static Protected Member Functions

static SDF_API void _SetLayerData (SdfLayer *layer, SdfAbstractDataRefPtr &data)
 
static SDF_API void _SetLayerData (SdfLayer *layer, SdfAbstractDataRefPtr &data, SdfLayerHints hints)
 
static SDF_API
SdfAbstractDataConstPtr 
_GetLayerData (const SdfLayer &layer)
 Get the internal data for layer. More...
 

Detailed Description

Base class for file format implementations.

Definition at line 64 of file fileFormat.h.

Member Typedef Documentation

Type for specifying additional file format-specific arguments to the various API below.

Definition at line 119 of file fileFormat.h.

Constructor & Destructor Documentation

SdfFileFormat::SdfFileFormat ( const SdfFileFormat )
delete
SDF_API SdfFileFormat::SdfFileFormat ( const TfToken formatId,
const TfToken versionString,
const TfToken target,
const std::string extension 
)
protected

Constructor.

SDF_API SdfFileFormat::SdfFileFormat ( const TfToken formatId,
const TfToken versionString,
const TfToken target,
const std::string extension,
const SdfSchemaBase schema 
)
protected

Constructor. schema must remain valid for the lifetime of this file format.

SdfFileFormat::SdfFileFormat ( const TfToken formatId,
const TfToken versionString,
const TfToken target,
const std::string extension,
const SdfSchemaBase &&  schema 
)
protecteddelete

Disallow temporary SdfSchemaBase objects being passed to the c'tor.

SDF_API SdfFileFormat::SdfFileFormat ( const TfToken formatId,
const TfToken versionString,
const TfToken target,
const std::vector< std::string > &  extensions 
)
protected

Constructor.

SDF_API SdfFileFormat::SdfFileFormat ( const TfToken formatId,
const TfToken versionString,
const TfToken target,
const std::vector< std::string > &  extensions,
const SdfSchemaBase schema 
)
protected

Constructor. schema must remain valid for the lifetime of this file format.

SdfFileFormat::SdfFileFormat ( const TfToken formatId,
const TfToken versionString,
const TfToken target,
const std::vector< std::string > &  extensions,
const SdfSchemaBase &&  schema 
)
protecteddelete

Disallow temporary SdfSchemaBase objects being passed to the c'tor.

virtual SDF_API SdfFileFormat::~SdfFileFormat ( )
protectedvirtual

Destructor.

Member Function Documentation

static SDF_API SdfAbstractDataConstPtr SdfFileFormat::_GetLayerData ( const SdfLayer layer)
staticprotected

Get the internal data for layer.

virtual SDF_API SdfAbstractDataRefPtr SdfFileFormat::_InitDetachedData ( const FileFormatArguments args) const
protectedvirtual
See Also
InitDetachedData

This function must return a new SdfAbstractData object that is detached, i.e. SdfAbstractData::IsDetached returns false.

The default implementation returns an SdfData object.

Reimplemented in UsdUsdFileFormat.

virtual SDF_API SdfLayer* SdfFileFormat::_InstantiateNewLayer ( const SdfFileFormatConstPtr &  fileFormat,
const std::string identifier,
const std::string realPath,
const ArAssetInfo assetInfo,
const FileFormatArguments args 
) const
protectedvirtual
SDF_API bool SdfFileFormat::_ReadAndCopyLayerDataToMemory ( SdfLayer layer,
const std::string resolvedPath,
bool  metadataOnly,
bool *  didCopyData = nullptr 
) const
protected

Helper function for _ReadDetached.

Calls Read with the given parameters. If successful and layer is not detached (i.e., SdfLayer::IsDetached returns false) copies the layer data into an SdfData object and set that into layer. If this copy occurs and didCopyData is given, it will be set to true.

Note that the copying process is a simple spec-by-spec, field-by-field value copy. This process may not produce detached layers if the data object used by layer after the initial call to Read returns VtValues that are not detached. One example is a VtValue holding a VtArray backed by a foreign data source attached to a memory mapping.

Returns true if Read was successful, false otherwise.

virtual SDF_API bool SdfFileFormat::_ReadDetached ( SdfLayer layer,
const std::string resolvedPath,
bool  metadataOnly 
) const
protectedvirtual
See Also
ReadDetached

Upon completion, layer must have an SdfAbstractData object set that is detached, i.e. SdfAbstractData::IsDetached returns false.

The default implementation calls _ReadAndCopyLayerDataToMemory to read the specified layer and copy its data into an SdfData object if it is not detached. If data is copied, a warning will be issued since this may be an expensive operation. If the above behavior is desired, subclasses can just call _ReadAndCopyLayerDataToMemory to do the same thing but without the warning.

Reimplemented in UsdUsdFileFormat, and UsdUsdzFileFormat.

static SDF_API void SdfFileFormat::_SetLayerData ( SdfLayer layer,
SdfAbstractDataRefPtr &  data 
)
staticprotected

Set the internal data for layer to data, possibly transferring ownership of data.

Existing layer hints are reset to the default hints.

static SDF_API void SdfFileFormat::_SetLayerData ( SdfLayer layer,
SdfAbstractDataRefPtr &  data,
SdfLayerHints  hints 
)
staticprotected

Set the internal data for layer to data, possibly transferring ownership of data.

Existing layer hints are replaced with hints.

virtual SDF_API bool SdfFileFormat::_ShouldReadAnonymousLayers ( ) const
protectedvirtual

File format subclasses may override this to specify whether Read should be called when creating, opening, or reloading an anonymous layer of this format. Default implementation returns false.

virtual SDF_API bool SdfFileFormat::_ShouldSkipAnonymousReload ( ) const
protectedvirtual
virtual SDF_API bool SdfFileFormat::CanRead ( const std::string file) const
pure virtual

Returns true if file can be read by this format.

Implemented in UsdUsdFileFormat, UsdUsdzFileFormat, SdfTextFileFormat, and UsdUsdcFileFormat.

static SDF_API std::set<std::string> SdfFileFormat::FindAllDerivedFileFormatExtensions ( const TfType baseType)
static

Returns a set containing the extension(s) corresponding to all registered file formats that derive from baseType.

baseType must derive from SdfFileFormat.

static SDF_API std::set<std::string> SdfFileFormat::FindAllFileFormatExtensions ( )
static

Returns a set containing the extension(s) corresponding to all registered file formats.

static SDF_API SdfFileFormatConstPtr SdfFileFormat::FindByExtension ( const std::string path,
const std::string target = std::string() 
)
static

Returns the file format instance that supports the extension for path. If a format with a matching extension is not found, this returns a null file format pointer.

An extension may be handled by multiple file formats, but each with a different target. In such cases, if no target is specified, the file format that is registered as the primary plugin will be returned. Otherwise, the file format whose target matches target will be returned.

static SDF_API SdfFileFormatConstPtr SdfFileFormat::FindByExtension ( const std::string path,
const FileFormatArguments args 
)
static

Returns a file format instance that supports the extension for path and whose target matches one of those specified by the given args. If the args specify no target, then the file format that is registered as the primary plugin will be returned. If a format with a matching extension is not found, this returns a null file format pointer.

static SDF_API SdfFileFormatConstPtr SdfFileFormat::FindById ( const TfToken formatId)
static

Returns the file format instance with the specified formatId identifier. If a format with a matching identifier is not found, this returns a null file format pointer.

static SDF_API bool SdfFileFormat::FormatSupportsEditing ( const std::string extension,
const std::string target = std::string() 
)
static

Returns true if the file format for the supplied extension and target pair supports editing. This method will not load the plugin that provides the specified file format. If the extension and target pair is invalid, this method will return false.

See Also
FormatSupportsReading
FormatSupportsWriting
static SDF_API bool SdfFileFormat::FormatSupportsReading ( const std::string extension,
const std::string target = std::string() 
)
static

Returns true if the file format for the supplied extension and target pair supports reading. This method will not load the plugin that provides the specified file format. If the extension and target pair is invalid, this method will return false.

See Also
FormatSupportsWriting
FormatSupportsEditing
static SDF_API bool SdfFileFormat::FormatSupportsWriting ( const std::string extension,
const std::string target = std::string() 
)
static

Returns true if the file format for the supplied extension and target pair supports writing. This method will not load the plugin that provides the specified file format. If the extension and target pair is invalid, this method will return false.

See Also
FormatSupportsReading
FormatSupportsEditing
virtual SDF_API FileFormatArguments SdfFileFormat::GetDefaultFileFormatArguments ( ) const
virtual

Returns the FileFormatArguments that correspond to the default behavior of this file format when no FileFormatArguments are passed to NewLayer or InitData.

virtual SDF_API std::set<std::string> SdfFileFormat::GetExternalAssetDependencies ( const SdfLayer layer) const
virtual

Returns the set of resolved paths to external asset file dependencies for the given layer. These are additional dependencies, specific to the file format, that are needed when generating the layer's contents and would not otherwise be discoverable through composition dependencies (i.e. sublayers, references, and payloads).

The default implementation returns an empty set. Derived file formats that depend on external assets to read and generate layer content should implement this function to return the external asset paths.

See Also
SdfLayer::GetExternalAssetDependencies
SdfLayer::Reload
SDF_API const std::string& SdfFileFormat::GetFileCookie ( ) const

Returns the cookie to be used when writing files with this format.

static SDF_API std::string SdfFileFormat::GetFileExtension ( const std::string s)
static

Returns the file extension for path or file name s, without the leading dot character.

SDF_API const std::vector<std::string>& SdfFileFormat::GetFileExtensions ( ) const

Returns a list of extensions that this format supports.

SDF_API const TfToken& SdfFileFormat::GetFormatId ( ) const

Returns the format identifier.

virtual SDF_API std::string SdfFileFormat::GetPackageRootLayerPath ( const std::string resolvedPath) const
virtual

Returns the path of the "root" layer contained in the package layer at resolvedPath produced by this file format. If this file format is not a package, returns the empty string.

The package root layer is the layer in the package layer that is used when that package is opened via SdfLayer.

Reimplemented in UsdUsdzFileFormat.

SDF_API const std::string& SdfFileFormat::GetPrimaryFileExtension ( ) const

Returns the primary file extension for this format. This is the extension that is reported for layers using this file format.

SDF_API const SdfSchemaBase& SdfFileFormat::GetSchema ( ) const

Returns the schema for this format.

SDF_API const TfToken& SdfFileFormat::GetTarget ( ) const

Returns the target for this file format.

SDF_API const TfToken& SdfFileFormat::GetVersionString ( ) const

Returns the current version of this file format.

virtual SDF_API SdfAbstractDataRefPtr SdfFileFormat::InitData ( const FileFormatArguments args) const
virtual

This method allows the file format to bind to whatever data container is appropriate.

Returns a shared pointer to an SdfAbstractData implementation.

Reimplemented in UsdUsdFileFormat, UsdUsdzFileFormat, and UsdUsdcFileFormat.

SDF_API SdfAbstractDataRefPtr SdfFileFormat::InitDetachedData ( const FileFormatArguments args) const

Returns a new SdfAbstractData providing access to the layer's data. This data object is detached from any underlying storage.

virtual SDF_API bool SdfFileFormat::IsPackage ( ) const
virtual

Returns true if this file format is a package containing other assets.

Reimplemented in UsdUsdzFileFormat.

SDF_API bool SdfFileFormat::IsPrimaryFormatForExtensions ( ) const

Returns true if this file format is the primary format for the extensions it handles.

SDF_API bool SdfFileFormat::IsSupportedExtension ( const std::string extension) const

Returns true if extension matches one of the extensions returned by GetFileExtensions.

SDF_API SdfLayerRefPtr SdfFileFormat::NewLayer ( const SdfFileFormatConstPtr &  fileFormat,
const std::string identifier,
const std::string realPath,
const ArAssetInfo assetInfo,
const FileFormatArguments args 
) const

Instantiate a layer.

SdfFileFormat& SdfFileFormat::operator= ( const SdfFileFormat )
delete
virtual SDF_API bool SdfFileFormat::Read ( SdfLayer layer,
const std::string resolvedPath,
bool  metadataOnly 
) const
pure virtual

Reads scene description from the asset specified by resolvedPath into the layer layer.

metadataOnly is a flag that asks for only the layer metadata to be read in, which can be much faster if that is all that is required. Note that this is just a hint: some FileFormat readers may disregard this flag and still fully populate the layer contents.

Returns true if the asset is successfully read into layer, false otherwise.

Implemented in UsdUsdFileFormat, UsdUsdzFileFormat, SdfTextFileFormat, and UsdUsdcFileFormat.

SDF_API bool SdfFileFormat::ReadDetached ( SdfLayer layer,
const std::string resolvedPath,
bool  metadataOnly 
) const

Reads scene description from the asset specified by resolvedPath into the detached layer layer. After reading is completed, layer must be detached from any underlying storage.

metadataOnly is a flag that asks for only the layer metadata to be read in, which can be much faster if that is all that is required. Note that this is just a hint: some FileFormat readers may disregard this flag and still fully populate the layer contents.

Returns true if the asset is successfully read into layer, false if the the asset could not be read or if the resulting layer is not detached.

virtual SDF_API bool SdfFileFormat::ReadFromString ( SdfLayer layer,
const std::string str 
) const
virtual

Reads data in the string str into the layer layer. If the file is successfully read, this method returns true. Otherwise, false is returned and errors are posted.

Reimplemented in UsdUsdFileFormat, UsdUsdzFileFormat, SdfTextFileFormat, and UsdUsdcFileFormat.

SDF_API bool SdfFileFormat::ShouldReadAnonymousLayers ( ) const

Returns true if anonymous layer identifiers should be passed to Read when a layer is opened or reloaded.

Anonymous layers will not have an asset backing and thus for most file formats there is nothing that can be read for an anonymous layer. However, there are file formats that use Read to generate dynamic layer content without reading any data from the resolved asset associated with the layer's identifier.

For these types of file formats it is useful to be able to open anonymous layers and allow Read to populate them to avoid requiring a placeholder asset to exist just so Read can populate the layer.

SDF_API bool SdfFileFormat::ShouldSkipAnonymousReload ( ) const

Return true if this file format prefers to skip reloading anonymous layers.

SDF_API bool SdfFileFormat::SupportsEditing ( ) const

This is a convenience method for invoking FormatSupportsEditing with this format's extension and target

SDF_API bool SdfFileFormat::SupportsReading ( ) const

Returns true if this file format supports reading. This is a convenience method for invoking FormatSupportsReading with this format's extension and target

SDF_API bool SdfFileFormat::SupportsWriting ( ) const

This is a convenience method for invoking FormatSupportsWriting with this format's extension and target

virtual SDF_API bool SdfFileFormat::WriteToFile ( const SdfLayer layer,
const std::string filePath,
const std::string comment = std::string(),
const FileFormatArguments args = FileFormatArguments() 
) const
virtual

Writes the content in layer into the file at filePath. If the content is successfully written, this method returns true. Otherwise, false is returned and errors are posted. The default implementation returns false.

Reimplemented in UsdUsdFileFormat, UsdUsdzFileFormat, SdfTextFileFormat, and UsdUsdcFileFormat.

virtual SDF_API bool SdfFileFormat::WriteToStream ( const SdfSpecHandle &  spec,
std::ostream &  out,
size_t  indent 
) const
virtual

Write the provided spec to out indented indent levels.

Reimplemented in UsdUsdFileFormat, UsdUsdzFileFormat, SdfTextFileFormat, and UsdUsdcFileFormat.

virtual SDF_API bool SdfFileFormat::WriteToString ( const SdfLayer layer,
std::string str,
const std::string comment = std::string() 
) const
virtual

Writes the content in layer to the string str. This function should write a textual representation of layer to the stream that can be read back in via ReadFromString.

Reimplemented in UsdUsdFileFormat, UsdUsdzFileFormat, SdfTextFileFormat, and UsdUsdcFileFormat.


The documentation for this class was generated from the following file: