IKindRegistry

Git Source

Interface for managing and registering object kinds

Functions

kindRegister

Registers a new kind

function kindRegister(bytes32 code, bytes32 data, ElementType[] memory elemSpec, uint64[] memory rels)
    external
    returns (uint64 id, Descriptor memory desc);

Parameters

NameTypeDescription
codebytes32Code hash of the kind
databytes32Data hash of the kind
elemSpecElementType[]Element type layout for objects of this kind
relsuint64[]Supported relation IDs

Returns

NameTypeDescription
iduint64New kind ID
descDescriptorDescriptor after registration

kindUpdate

Updates code and/or data of an existing kind

function kindUpdate(uint64 id, bytes32 code, bytes32 data) external returns (Descriptor memory desc);

Parameters

NameTypeDescription
iduint64Kind ID
codebytes32New code hash (0 = skip)
databytes32New data hash (0 = skip)

Returns

NameTypeDescription
descDescriptorUpdated descriptor

kindUpdate

Updates supported relations of an existing kind

function kindUpdate(uint64 id, uint64[] memory rels) external returns (Descriptor memory desc);

Parameters

NameTypeDescription
iduint64Kind ID
relsuint64[]Updated relation list

Returns

NameTypeDescription
descDescriptorUpdated descriptor

kindUpdate

Updates code, data, and relations of an existing kind

function kindUpdate(uint64 id, bytes32 code, bytes32 data, uint64[] memory rels)
    external
    returns (Descriptor memory desc);

Parameters

NameTypeDescription
iduint64Kind ID
codebytes32New code hash (0 = skip)
databytes32New data hash (0 = skip)
relsuint64[]Updated relation list

Returns

NameTypeDescription
descDescriptorUpdated descriptor

kindUpgrade

Upgrades kind/set revision of an existing kind

function kindUpgrade(uint64 id, uint32 kindRev, uint32 setRev) external returns (Descriptor memory desc);

Parameters

NameTypeDescription
iduint64Kind ID
kindRevuint32New kind revision (0 = skip)
setRevuint32New set revision (0 = skip)

Returns

NameTypeDescription
descDescriptorDescriptor after upgrade

kindTouch

Touches a kind (bumps revision with no content changes)

function kindTouch(uint64 id) external returns (Descriptor memory desc);

Parameters

NameTypeDescription
iduint64Kind ID

Returns

NameTypeDescription
descDescriptorDescriptor after touch

kindTransfer

Transfers ownership of a kind

function kindTransfer(uint64 id, address to) external returns (address from);

Parameters

NameTypeDescription
iduint64Kind ID
toaddressNew owner address

Returns

NameTypeDescription
fromaddressPrevious owner address

kindRevision

Resolves and validates a specific revision

function kindRevision(uint64 id, uint32 rev0) external view returns (uint32 rev);

Parameters

NameTypeDescription
iduint64Kind ID
rev0uint32Revision to check (0 = latest)

Returns

NameTypeDescription
revuint32Valid revision number (0 if not found)

kindDescriptor

Returns the descriptor at a given revision

function kindDescriptor(uint64 id, uint32 rev0) external view returns (Descriptor memory desc);

Parameters

NameTypeDescription
iduint64Kind ID
rev0uint32Revision to query (0 = latest)

Returns

NameTypeDescription
descDescriptorDescriptor at that revision

kindSnapshot

Returns descriptor and elements at a specific revision

function kindSnapshot(uint64 id, uint32 rev0) external view returns (Descriptor memory desc, bytes32[] memory elems);

Parameters

NameTypeDescription
iduint64Kind ID
rev0uint32Revision to query (0 = latest)

Returns

NameTypeDescription
descDescriptorDescriptor at the revision
elemsbytes32[]Element hashes of the kind at the revision

kindOwner

Returns the current owner of a kind

function kindOwner(uint64 id) external view returns (address owner);

Parameters

NameTypeDescription
iduint64Kind ID

Returns

NameTypeDescription
owneraddressOwner address

kindSota

Returns the latest descriptor and current owner of a kind

function kindSota(uint64 id) external view returns (Descriptor memory desc, address owner);

Parameters

NameTypeDescription
iduint64Kind ID

Returns

NameTypeDescription
descDescriptorLatest descriptor
owneraddressCurrent owner address

kindStatus

Checks whether all specified kinds are active (rev > 0)

function kindStatus(uint64[] memory ids) external view returns (bool active);

Parameters

NameTypeDescription
idsuint64[]List of kind IDs

Returns

NameTypeDescription
activeboolTrue if all specified kinds exist and are active

kindAdmit

Checks whether a kind at a given revision admits a specific relation

function kindAdmit(uint64 kind, uint32 rev, uint64 rel) external view returns (bool admit, uint32 relRev);

Parameters

NameTypeDescription
kinduint64Kind ID
revuint32Kind revision (0 = latest)
reluint64Relation ID to check

Returns

NameTypeDescription
admitboolWhether the relation is admitted
relRevuint32Specific relation revision admitted (0 = latest)

Events

KindRegistered

Emitted when a new kind is registered

event KindRegistered(
    uint64 id, Descriptor desc, bytes32 code, bytes32 data, ElementType[] elemSpec, uint64[] rels, address owner
);

Parameters

NameTypeDescription
iduint64Kind ID
descDescriptorDescriptor after registration
codebytes32Code hash associated with the kind
databytes32Data hash associated with the kind
elemSpecElementType[]Element type layout for objects of this kind
relsuint64[]Supported relation IDs
owneraddressOwner address of the kind

KindUpdated

Emitted when a kind is updated

event KindUpdated(uint64 id, Descriptor desc, bytes32 code, bytes32 data, uint64[] rels);

Parameters

NameTypeDescription
iduint64Kind ID
descDescriptorUpdated descriptor
codebytes32Updated code hash
databytes32Updated data hash
relsuint64[]Updated supported relations

KindUpgraded

Emitted when a kind is upgraded

event KindUpgraded(uint64 id, Descriptor desc);

Parameters

NameTypeDescription
iduint64Kind ID
descDescriptorDescriptor after upgrade

KindTouched

Emitted when a kind is touched (revision bump only)

event KindTouched(uint64 id, Descriptor desc);

Parameters

NameTypeDescription
iduint64Kind ID
descDescriptorDescriptor after touch

KindTransferred

Emitted when kind ownership is transferred

event KindTransferred(uint64 id, address from, address to);

Parameters

NameTypeDescription
iduint64Kind ID
fromaddressPrevious owner
toaddressNew owner