All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
collectionAPI.h
Go to the documentation of this file.
1 //
2 // Copyright 2016 Pixar
3 //
4 // Licensed under the Apache License, Version 2.0 (the "Apache License")
5 // with the following modification; you may not use this file except in
6 // compliance with the Apache License and the following modification to it:
7 // Section 6. Trademarks. is deleted and replaced with:
8 //
9 // 6. Trademarks. This License does not grant permission to use the trade
10 // names, trademarks, service marks, or product names of the Licensor
11 // and its affiliates, except as required to comply with Section 4(c) of
12 // the License and to reproduce the content of the NOTICE file.
13 //
14 // You may obtain a copy of the Apache License at
15 //
16 // http://www.apache.org/licenses/LICENSE-2.0
17 //
18 // Unless required by applicable law or agreed to in writing, software
19 // distributed under the Apache License with the above modification is
20 // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21 // KIND, either express or implied. See the Apache License for the specific
22 // language governing permissions and limitations under the Apache License.
23 //
24 #ifndef USD_GENERATED_COLLECTIONAPI_H
25 #define USD_GENERATED_COLLECTIONAPI_H
26 
28 
29 #include "pxr/pxr.h"
30 #include "pxr/usd/usd/api.h"
31 #include "pxr/usd/usd/apiSchemaBase.h"
32 #include "pxr/usd/usd/prim.h"
33 #include "pxr/usd/usd/stage.h"
34 #include "pxr/usd/usd/tokens.h"
35 
36 #include "pxr/usd/usd/collectionMembershipQuery.h"
37 #include "pxr/usd/usd/primFlags.h"
38 #include "pxr/usd/usd/tokens.h"
39 
40 
41 #include "pxr/base/vt/value.h"
42 
43 #include "pxr/base/gf/vec3d.h"
44 #include "pxr/base/gf/vec3f.h"
45 #include "pxr/base/gf/matrix4d.h"
46 
47 #include "pxr/base/tf/token.h"
48 #include "pxr/base/tf/type.h"
49 
50 PXR_NAMESPACE_OPEN_SCOPE
51 
52 class SdfAssetPath;
53 
54 // -------------------------------------------------------------------------- //
55 // COLLECTIONAPI //
56 // -------------------------------------------------------------------------- //
57 
153 {
154 public:
159 
170  const UsdPrim& prim=UsdPrim(), const TfToken &name=TfToken())
171  : UsdAPISchemaBase(prim, /*instanceName*/ name)
172  { }
173 
179  const UsdSchemaBase& schemaObj, const TfToken &name)
180  : UsdAPISchemaBase(schemaObj, /*instanceName*/ name)
181  { }
182 
184  USD_API
185  virtual ~UsdCollectionAPI();
186 
192  USD_API
193  static const TfTokenVector &
195  bool includeInherited=true, const TfToken instanceName=TfToken());
196 
198  TfToken GetName() const {
199  return _GetInstanceName();
200  }
201 
216  USD_API
217  static UsdCollectionAPI
218  Get(const UsdStagePtr &stage, const SdfPath &path);
219 
222  USD_API
223  static UsdCollectionAPI
224  Get(const UsdPrim &prim, const TfToken &name);
225 
228  USD_API
229  static bool
230  IsSchemaPropertyBaseName(const TfToken &baseName);
231 
235  USD_API
236  static bool
237  IsCollectionAPIPath(const SdfPath &path, TfToken *name);
238 private:
239 
256  static UsdCollectionAPI
257  _Apply(const UsdPrim &prim, const TfToken &name);
258 
259 protected:
263  USD_API
264  UsdSchemaType _GetSchemaType() const override;
265 
266 private:
267  // needs to invoke _GetStaticTfType.
268  friend class UsdSchemaRegistry;
269  USD_API
270  static const TfType &_GetStaticTfType();
271 
272  static bool _IsTypedSchema();
273 
274  // override SchemaBase virtuals.
275  USD_API
276  const TfType &_GetTfType() const override;
277 
278 public:
279  // --------------------------------------------------------------------- //
280  // EXPANSIONRULE
281  // --------------------------------------------------------------------- //
290  USD_API
292 
298  USD_API
299  UsdAttribute CreateExpansionRuleAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const;
300 
301 public:
302  // --------------------------------------------------------------------- //
303  // INCLUDEROOT
304  // --------------------------------------------------------------------- //
314  USD_API
316 
322  USD_API
323  UsdAttribute CreateIncludeRootAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const;
324 
325 public:
326  // --------------------------------------------------------------------- //
327  // INCLUDES
328  // --------------------------------------------------------------------- //
335  USD_API
337 
340  USD_API
342 
343 public:
344  // --------------------------------------------------------------------- //
345  // EXCLUDES
346  // --------------------------------------------------------------------- //
360  USD_API
362 
365  USD_API
367 
368 public:
369  // ===================================================================== //
370  // Feel free to add custom code below this line, it will be preserved by
371  // the code generator.
372  //
373  // Just remember to:
374  // - Close the class declaration with };
375  // - Close the namespace with PXR_NAMESPACE_CLOSE_SCOPE
376  // - Close the include guard with #endif
377  // ===================================================================== //
378  // --(BEGIN CUSTOM CODE)--
379 
380 public:
392  USD_API
394  const UsdPrim& prim,
395  const TfToken &name,
396  const TfToken &expansionRule=UsdTokens->expandPrims);
397 
400  USD_API
401  static UsdCollectionAPI GetCollection(const UsdStagePtr &stage,
402  const SdfPath &collectionPath);
403 
406  USD_API
407  static UsdCollectionAPI GetCollection(const UsdPrim &prim,
408  const TfToken &name);
409 
411  USD_API
412  static std::vector<UsdCollectionAPI> GetAllCollections(const UsdPrim &prim);
413 
420  USD_API
421  SdfPath GetCollectionPath() const;
422 
427  USD_API
429  const UsdPrim &prim,
430  const TfToken &collectionName);
431 
432  // Convenient alias for UsdCollectionMembershipQuery object
433  using MembershipQuery = UsdCollectionMembershipQuery;
434 
437  USD_API
439 
442  USD_API
444 
452  USD_API
453  bool HasNoIncludedPaths() const;
454 
460  USD_API
461  static std::set<UsdObject> ComputeIncludedObjects(
462  const UsdCollectionMembershipQuery &query,
463  const UsdStageWeakPtr &stage,
464  const Usd_PrimFlagsPredicate &pred=UsdPrimDefaultPredicate);
465 
471  USD_API
472  static SdfPathSet ComputeIncludedPaths(
473  const UsdCollectionMembershipQuery &query,
474  const UsdStageWeakPtr &stage,
475  const Usd_PrimFlagsPredicate &pred=UsdPrimDefaultPredicate);
476 
478 
486 
497  USD_API
498  bool IncludePath(const SdfPath &pathToInclude) const;
499 
512  USD_API
513  bool ExcludePath(const SdfPath &pathToExclude) const;
514 
516 
524  USD_API
525  bool Validate(std::string *reason) const;
526 
532  USD_API
533  bool ResetCollection() const;
534 
540  USD_API
541  bool BlockCollection() const;
542 
543 private:
544 
545  // Returns the name of the property belonging to this collection, given the
546  // base name of the attribute. Eg, if baseName is 'includes', this
547  // returns 'collection:<name>:includes'.
548  TfToken _GetCollectionPropertyName(const TfToken &baseName=TfToken()) const;
549 
550  // Helper method for computing the UsdCollectionMembershipQuery object for
551  // a collection.
552  // This makes recursive calls if the collection includes other collections.
553  // \p chainedCollectionPaths is used to pass in the set of all seen and
554  // included collections in the dependency chain and is used to detect
555  // circular dependencies.
556  // If \p foundCircularDependency is not nullptr, it is set to true if a
557  // circular dependency is detected amongst the included collections.
558  // If it is nullptr, a warning is issued when a circular dependency is
559  // detected.
560  void _ComputeMembershipQueryImpl(
562  const SdfPathSet &chainedCollectionPaths,
563  bool *foundCircularDependency=nullptr) const;
564 };
565 
566 PXR_NAMESPACE_CLOSE_SCOPE
567 
568 #endif
static USD_API UsdCollectionAPI GetCollection(const UsdStagePtr &stage, const SdfPath &collectionPath)
Returns the collection represented by the given collection path, collectionPath on the given USD stag...
USD_API bool Validate(std::string *reason) const
Validates the collection by checking the following rules:
USD_API bool IncludePath(const SdfPath &pathToInclude) const
Includes or adds the given path, pathToInclude in the collection.
unspecified UsdPrimDefaultPredicate
The default predicate used for prim traversals in methods like UsdPrim::GetChildren, UsdStage::Traverse, and by UsdPrimRange.
TfToken GetName() const
Returns the name of this multiple-apply schema instance.
USD_API UsdSchemaType _GetSchemaType() const override
Returns the type of schema this class belongs to.
static const UsdSchemaType schemaType
Compile time constant representing what kind of schema this class is.
Represents a flattened view of a collection.
USD_API UsdAttribute GetExpansionRuleAttr() const
Specifies how the paths that are included in the collection must be expanded to determine its members...
The base class for all API schemas.
Scenegraph object for authoring and retrieving numeric, string, and array valued data, sampled over time.
Definition: attribute.h:176
USD_API UsdRelationship GetExcludesRel() const
Specifies a list of targets that are excluded below the included paths in this collection.
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:89
USD_API UsdAttribute CreateIncludeRootAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
See GetIncludeRootAttr(), and also Create vs Get Property Methods for when to use Get vs Create...
UsdCollectionAPI(const UsdPrim &prim=UsdPrim(), const TfToken &name=TfToken())
Construct a UsdCollectionAPI on UsdPrim prim with name name .
This is a general purpose API schema, used to describe a collection of heterogeneous objects within t...
Multiple Apply API Schema.
USD_API bool BlockCollection() const
Blocks the targets of the includes and excludes relationships of the collection, making it &lt;* empty i...
static USD_API std::vector< UsdCollectionAPI > GetAllCollections(const UsdPrim &prim)
Returns all the named collections on the given USD prim.
USD_API UsdRelationship CreateIncludesRel() const
See GetIncludesRel(), and also Create vs Get Property Methods for when to use Get vs Create...
static USD_API UsdCollectionAPI Get(const UsdStagePtr &stage, const SdfPath &path)
Return a UsdCollectionAPI holding the prim adhering to this schema at path on stage.
UsdSchemaType
An enum representing which type of schema a given schema class belongs to.
Definition: common.h:149
UsdPrim is the sole persistent scenegraph object on a UsdStage, and is the embodiment of a &quot;Prim&quot; as ...
Definition: prim.h:131
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:438
A path value used to locate objects in layers or scenegraphs.
Definition: path.h:287
static USD_API SdfPath GetNamedCollectionPath(const UsdPrim &prim, const TfToken &collectionName)
Returns the canonical path to the collection named, name on the given prim, prim. ...
static USD_API UsdCollectionAPI ApplyCollection(const UsdPrim &prim, const TfToken &name, const TfToken &expansionRule=UsdTokens->expandPrims)
Adds a new collection named name on the given prim, prim with the specified expansion-rule, expansionRule.
static USD_API const TfTokenVector & GetSchemaAttributeNames(bool includeInherited=true, const TfToken instanceName=TfToken())
Return a vector of names of all pre-declared attributes for this schema class and all its ancestor cl...
static USD_API bool IsSchemaPropertyBaseName(const TfToken &baseName)
Checks if the given name baseName is the base name of a property of CollectionAPI.
A UsdRelationship creates dependencies between scenegraph objects by allowing a prim to target other ...
Definition: relationship.h:128
Contains an asset path and an optional resolved path.
Definition: assetPath.h:43
static USD_API SdfPathSet ComputeIncludedPaths(const UsdCollectionMembershipQuery &query, const UsdStageWeakPtr &stage, const Usd_PrimFlagsPredicate &pred=UsdPrimDefaultPredicate)
Returns all the paths that satisfy the predicate, pred in the collection represented by the UsdCollec...
USD_API UsdCollectionMembershipQuery ComputeMembershipQuery() const
Computes and returns a UsdCollectionMembershipQuery object which can be used to query inclusion or ex...
static USD_API std::set< UsdObject > ComputeIncludedObjects(const UsdCollectionMembershipQuery &query, const UsdStageWeakPtr &stage, const Usd_PrimFlagsPredicate &pred=UsdPrimDefaultPredicate)
Returns all the usd objects that satisfy the predicate, pred in the collection represented by the Usd...
USD_API bool ExcludePath(const SdfPath &pathToExclude) const
Excludes or removes the given path, pathToExclude from the collection.
UsdCollectionAPI(const UsdSchemaBase &schemaObj, const TfToken &name)
Construct a UsdCollectionAPI on the prim held by schemaObj with name name.
USD_API bool ResetCollection() const
Resets the collection by clearing both the includes and excludes targets of the collection in the cur...
USD_API UsdRelationship CreateExcludesRel() const
See GetExcludesRel(), and also Create vs Get Property Methods for when to use Get vs Create...
TfType represents a dynamic runtime type.
Definition: type.h:70
Singleton registry that provides access to prim and property definition information for registered Us...
virtual USD_API ~UsdCollectionAPI()
Destructor.
USD_API SdfPath GetCollectionPath() const
Returns the canonical path that represents this collection.
USD_API UsdRelationship GetIncludesRel() const
Specifies a list of targets that are included in the collection.
The base class for all schema types in Usd.
Definition: schemaBase.h:56
static USD_API bool IsCollectionAPIPath(const SdfPath &path, TfToken *name)
Checks if the given path path is of an API schema of type CollectionAPI.
USD_API UsdAttribute CreateExpansionRuleAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
See GetExpansionRuleAttr(), and also Create vs Get Property Methods for when to use Get vs Create...
USD_API bool HasNoIncludedPaths() const
Returns true if the collection has nothing included in it.
USD_API UsdAttribute GetIncludeRootAttr() const
Boolean attribute indicating whether the pseudo-root path &lt;/&gt; should be counted as one of the include...
Provides a container which may hold any type, and provides introspection and iteration over array typ...
Definition: value.h:182
const TfToken & _GetInstanceName() const
Returns the instance name of the API schema object belonging to a multiple-apply API schema...