@itwin/ecschema-metadata
Version:
ECObjects core concepts in typescript
275 lines • 10.8 kB
TypeScript
import { AnyClass, AnyECType } from "./Interfaces";
import { StructClass } from "./Metadata/Class";
import { Constant } from "./Metadata/Constant";
import { CustomAttributeContainerProps } from "./Metadata/CustomAttribute";
import { CustomAttributeClass } from "./Metadata/CustomAttributeClass";
import { EntityClass } from "./Metadata/EntityClass";
import { Enumeration } from "./Metadata/Enumeration";
import { Format } from "./Metadata/Format";
import { InvertedUnit } from "./Metadata/InvertedUnit";
import { KindOfQuantity } from "./Metadata/KindOfQuantity";
import { Mixin } from "./Metadata/Mixin";
import { Phenomenon } from "./Metadata/Phenomenon";
import { AnyProperty } from "./Metadata/Property";
import { PropertyCategory } from "./Metadata/PropertyCategory";
import { RelationshipClass, RelationshipConstraint } from "./Metadata/RelationshipClass";
import { Schema } from "./Metadata/Schema";
import { SchemaItem } from "./Metadata/SchemaItem";
import { Unit } from "./Metadata/Unit";
import { UnitSystem } from "./Metadata/UnitSystem";
/**
* Interface to allow schema traversal/deserialization workflows to visit
* each part, item, class, etc. that exists in a given schema.
* @public @preview
*/
export interface ISchemaPartVisitor {
/**
* Called for a partially loaded schema. During deserialization, this would
* be after a schema and all its references are deserialized, but _before_
* any of its items or custom attributes have been deserialized.
* @param schema A partially-loaded Schema.
*/
visitEmptySchema?: (schema: Schema) => Promise<void>;
/**
* Called for a partially loaded schema. During deserialization, this would
* be after a schema and all its references are deserialized, but _before_
* any of its items or custom attributes have been deserialized.
* @param schema A partially-loaded Schema.
*/
visitEmptySchemaSync?: (schema: Schema) => void;
/**
* Called for a fully loaded schema.
* @param schema A fully-loaded Schema.
*/
visitFullSchema?: (schema: Schema) => Promise<void>;
/**
* Called for a fully loaded schema.
* @param schema A fully-loaded Schema.
*/
visitFullSchemaSync?: (schema: Schema) => void;
/**
* Called for each [[SchemaItem]] instance.
* @param schemaItem a SchemaItem object.
*/
visitSchemaItem?: (schemaItem: SchemaItem) => Promise<void>;
/**
* Called for each [[SchemaItem]] instance.
* @param schemaItem a SchemaItem object.
*/
visitSchemaItemSync?: (schemaItem: SchemaItem) => void;
/**
* Called for each [[AnyClass]] instance.
* @param ecClass an ECClass object.
*/
visitClass?: (ecClass: AnyClass) => Promise<void>;
/**
* Called for each [[AnyClass]] instance.
* @param ecClass an ECClass object.
*/
visitClassSync?: (ecClass: AnyClass) => void;
/**
* Called for each [[AnyProperty]] instance of an ECClass.
* @param property an AnyProperty object.
*/
visitProperty?: (property: AnyProperty) => Promise<void>;
/**
* Called for each [[AnyProperty]] instance of an ECClass.
* @param property an AnyProperty object.
*/
visitPropertySync?: (property: AnyProperty) => void;
/**
* Called for each [[EntityClass]] instance.
* @param entityClass an EntityClass object.
*/
visitEntityClass?: (entityClass: EntityClass) => Promise<void>;
/**
* Called for each [[EntityClass]] instance.
* @param entityClass an EntityClass object.
*/
visitEntityClassSync?: (entityClass: EntityClass) => void;
/**
* Called for each [[StructClass]] instance.
* @param structClass a StructClass object.
*/
visitStructClass?: (structClass: StructClass) => Promise<void>;
/**
* Called for each [[StructClass]] instance.
* @param structClass a StructClass object.
*/
visitStructClassSync?: (structClass: StructClass) => void;
/**
* Called for each [[Mixin]] instance.
* @param mixin a Mixin object.
*/
visitMixin?: (mixin: Mixin) => Promise<void>;
/**
* Called for each [[Mixin]] instance.
* @param mixin a Mixin object.
*/
visitMixinSync?: (mixin: Mixin) => void;
/**
* Called for each [[RelationshipClass]] instance.
* @param relationshipClass a RelationshipClass object.
*/
visitRelationshipClass?: (relationshipClass: RelationshipClass) => Promise<void>;
/**
* Called for each [[RelationshipClass]] instance.
* @param relationshipClass a RelationshipClass object.
*/
visitRelationshipClassSync?: (relationshipClass: RelationshipClass) => void;
/**
* Called for each [[RelationshipConstraint]] of each RelationshipClass.
* @param relationshipConstraint a RelationshipConstraint object.
*/
visitRelationshipConstraint?: (relationshipConstraint: RelationshipConstraint) => Promise<void>;
/**
* Called for each [[RelationshipConstraint]] of each RelationshipClass.
* @param relationshipConstraint a RelationshipConstraint object.
*/
visitRelationshipConstraintSync?: (relationshipConstraint: RelationshipConstraint) => void;
/**
* Called for each [[CustomAttributeClass]] instance.
* @param customAttributeClass a CustomAttributeClass object.
*/
visitCustomAttributeClass?: (customAttributeClass: CustomAttributeClass) => Promise<void>;
/**
* Called for each [[CustomAttributeClass]] instance.
* @param customAttributeClass a CustomAttributeClass object.
*/
visitCustomAttributeClassSync?: (customAttributeClass: CustomAttributeClass) => void;
/**
* Called for each CustomAttribute container in the schema.
* @param customAttributeContainer a CustomAttributeContainerProps object.
*/
visitCustomAttributeContainer?: (customAttributeContainer: CustomAttributeContainerProps) => Promise<void>;
/**
* Called for each CustomAttribute container in the schema.
* @param customAttributeContainer a CustomAttributeContainerProps object.
*/
visitCustomAttributeContainerSync?: (customAttributeContainer: CustomAttributeContainerProps) => void;
/**
* Called for each [[Enumeration]] instance.
* @param enumeration an Enumeration object.
*/
visitEnumeration?: (enumeration: Enumeration) => Promise<void>;
/**
* Called for each [[Enumeration]] instance.
* @param enumeration an Enumeration object.
*/
visitEnumerationSync?: (enumeration: Enumeration) => void;
/**
* Called for each [[KindOfQuantity]] instance.
* @param koq a KindOfQuantity object.
*/
visitKindOfQuantity?: (koq: KindOfQuantity) => Promise<void>;
/**
* Called for each [[KindOfQuantity]] instance.
* @param koq a KindOfQuantity object.
*/
visitKindOfQuantitySync?: (koq: KindOfQuantity) => void;
/**
* Called for each [[PropertyCategory]] instance.
* @param category a PropertyCategory object.
*/
visitPropertyCategory?: (category: PropertyCategory) => Promise<void>;
/**
* Called for each [[PropertyCategory]] instance.
* @param category a PropertyCategory object.
*/
visitPropertyCategorySync?: (category: PropertyCategory) => void;
/**
* Called for each [[Format]] instance.
* @param format a Format object.
*/
visitFormat?: (format: Format) => Promise<void>;
/**
* Called for each [[Format]] instance.
* @param format a Format object.
*/
visitFormatSync?: (format: Format) => void;
/**
* Called for each [[Unit]] instance.
* @param unit a Unit object.
*/
visitUnit?: (unit: Unit) => Promise<void>;
/**
* Called for each [[Unit]] instance.
* @param unit a Unit object.
*/
visitUnitSync?: (unit: Unit) => void;
/**
* Called for each [[InvertedUnit]] instance.
* @param invertedUnit an InvertedUnit object.
*/
visitInvertedUnit?: (invertedUnit: InvertedUnit) => Promise<void>;
/**
* Called for each [[InvertedUnit]] instance.
* @param invertedUnit an InvertedUnit object.
*/
visitInvertedUnitSync?: (invertedUnit: InvertedUnit) => void;
/**
* Called for each [[UnitSystem]] instance.
* @param unitSystem a UnitSystem object.
*/
visitUnitSystem?: (unitSystem: UnitSystem) => Promise<void>;
/**
* Called for each [[UnitSystem]] instance.
* @param unitSystem a UnitSystem object.
*/
visitUnitSystemSync?: (unitSystem: UnitSystem) => void;
/**
* Called for each [[Phenomenon]] instance.
* @param phenomena a Phenomenon object.
*/
visitPhenomenon?: (phenomena: Phenomenon) => Promise<void>;
/**
* Called for each [[Phenomenon]] instance.
* @param phenomena a Phenomenon object.
*/
visitPhenomenonSync?: (phenomena: Phenomenon) => void;
/**
* Called for each [[Constant]] instance.
* @param constant a Constant object.
*/
visitConstant?: (constant: Constant) => Promise<void>;
/**
* Called for each [[Constant]] instance.
* @param constant a Constant object.
*/
visitConstantSync?: (constant: Constant) => void;
}
/**
* A helper class to call methods on the provided [[ISchemaPartVisitor]].
* @public @preview
*/
export declare class SchemaPartVisitorDelegate {
private _visitor;
constructor(visitor: ISchemaPartVisitor);
/**
* Calls (async) visitEmptySchema or visitFullSchema on the configured [[ISchemaPartVisitor]].
* @param schema The schema to pass to the visitor.
* @param fullSchema Indicates if the schema is partially or fully-loaded.
*/
visitSchema(schema: Schema, fullSchema?: boolean): Promise<void>;
/**
* Calls (synchronously) visitEmptySchema or visitFullSchema on the configured [[ISchemaPartVisitor]].
* @param schema The schema to pass to the visitor.
* @param fullSchema Indicates if the schema is partially or fully-loaded.
*/
visitSchemaSync(schema: Schema, fullSchema?: boolean): void;
/**
* Calls (async) the appropriate visit methods on the configured [[ISchemaPartVisitor]]
* based on the type of the part specified.
* @param schemaPart The schema part to pass to the visitor methods.
*/
visitSchemaPart(schemaPart: AnyECType): Promise<void>;
/**
* Calls (synchronously) the appropriate visit methods on the configured [[ISchemaPartVisitor]]
* based on the type of the part specified.
* @param schemaPart The schema part to pass to the visitor methods.
*/
visitSchemaPartSync(schemaPart: AnyECType): void;
private visitSchemaItem;
private visitSchemaItemSync;
}
//# sourceMappingURL=SchemaPartVisitorDelegate.d.ts.map