mod attribute;
mod authoring;
mod capture;
mod clips;
mod collection;
mod collection_expr;
mod composition;
mod connections;
mod diff;
mod editor;
mod flatten;
mod interp;
mod model_api;
mod prim;
mod prim_definition;
mod prim_type_info;
mod relationship;
mod resolve_info;
mod schema;
mod schema_decl;
mod schema_registry;
mod sink;
pub(crate) mod stage;
mod timecode;
pub use attribute::{Attribute, AttributeBuilder, AttributeQuery};
pub use authoring::{PrimEdit, StageEdit};
pub use capture::{ReplayStage, UndoStage};
pub use collection::{MembershipQuery, PathExpansionRuleMap, PathRule, apply_collection, compute_included_paths};
pub use collection_expr::{CollectionEvaluator, CollectionSearcher, resolve_complete_membership_expression};
pub use connections::ConnectionGraph;
pub use core_schemas::{
ClipsAPI, ClipsAPISchema, CollectionAPI, CollectionMode, ColorSpaceAPI, ColorSpaceDefinitionAPI, ExpansionRule,
ModelAPI, ModelAPISchema, SCHEMAS, tokens,
};
pub use diff::{ApplyMode, Diff, Edit, FieldValue};
pub use editor::{NamespaceEditError, NamespaceEditor};
pub use interp::InterpolationType;
pub use model_api::KindValidation;
pub use prim::{Prim, PrimIndexRef, VariantSets};
pub use prim_definition::{DefProperty, PrimDefinition};
pub use prim_type_info::{PrimTypeId, PrimTypeInfo};
pub use relationship::{Relationship, RelationshipBuilder};
pub use resolve_info::{ResolveInfo, ResolveInfoSource};
pub use schema::{APISchemaBase, SchemaBase, SchemaKind, Typed};
pub use schema_decl::{
Field, InstanceRestriction, MetadataDecl, MetadataTargets, PropertyDecl, SchemaDecl, SchemaFamily,
};
pub use schema_registry::{
ApplyApiError, FamilySource, MetadataField, SchemaInfo, SchemaRegistry, SchemaRegistryBuilder, SchemaRegistryError,
Schematics, VersionFilter,
};
pub use sink::{CommittedChange, PendingChange, Provenance, StageSink, StageSinkId};
pub use stage::{
EditContext, EditTarget, EditTargetArc, InitialLoadSet, LoadPolicy, PrimPredicate, PrimStatus, Stage,
StageAuthoringError, StageBuilder, TypeConflict, WeakStage,
};
mod core_schemas {
include!("core_schemas.rs");
}
pub use crate::pcp::PopulationMask as StagePopulationMask;
pub use crate::pcp::PopulationMaskError as StagePopulationMaskError;
pub use crate::pcp::SpecSiteRecord as SpecSite;
pub use timecode::TimeCode;
use crate::Result;
use crate::sdf;
pub(crate) fn decode_value<T, E>(value: Option<sdf::Value>) -> Result<Option<T>, E>
where
T: TryFrom<sdf::Value>,
T::Error: Into<E>,
{
value.map(T::try_from).transpose().map_err(Into::into)
}
pub(crate) fn decode_accepted<T>(value: Option<sdf::Value>) -> Result<Option<T>>
where
T: sdf::FromValue,
T::Error: Into<crate::Error>,
{
decode_value(value.filter(|value| T::accepts_kind(sdf::ValueKind::from(value))))
}