Repository Identifier Data Structures

Meta Data Services Programming

Meta Data Services Programming

Repository Identifier Data Structures

The following data structures describe object identifiers, object-version identifiers, internal identifiers, and internal object-version identifiers.

If you are querying the database by building a query against the repository tables, you need to know about internal identifier data structures to form the query. Information in this topic about object identifier and object-version identifier data structures is provided for completeness. Only internal identifiers and internal object-version identifiers are used to build queries.

Internal Identifier
struct INTID {
ULONG  iSiteID;
ULONG  iLocalID;
};
typedef const INTID &REFINTID;

An INTID or a REFINTID variable is an internal identifier for a specific repository object that uniquely identifies the object within a particular repository database. An internal identifier is not unique across all repositories. Note that an internal identifier is not the same thing as the interface identifier for an interface, or the class identifier that is used to create an instance of a class.

The internal identifier is composed of an internal site identifier (iSiteID) and an internal local identifier (iLocalID).

Internal Object-Version Identifier
struct VERSIONID {
INTID  sIntID;
BRANCHID  iBranchID;
VERSIONNUM  iVersionStart;
};
typedef const VERSIONID &REFVERSIONID;

A VERSIONID or a REFVERSIONID variable is an internal identifier for a specific repository object version that uniquely identifies the object version within a particular repository database. It is not unique across all repositories.

The internal identifier is composed of an internal identifier (sIntID), a branch identifier (iBranchID), and a version-within-branch identifier (iVersionStart).

Object Identifiers and Object-Version Identifiers
typedef const OBJECTID OBJID;
typedef const OBJID &REFOBJID;

An OBJID or a REFOBJID variable can be used in either of two ways:

  • It can be an object identifier for a specific repository object in a particular repository database. An object identifier is unique across all repositories.

  • It can be an object-version identifier for a specific version of a repository object in a particular repository database. An object-version identifier is unique across all repositories.

An OBJID or a REFOBJID variable is composed of a global unique identifier (GUID) and a 4-byte local identifier appended to the GUID. The GUID portion of the variable specifies where the identifier was created, and the local identifier has a value that is unique within the repository database. When you use an OBJID or a REFOBJID variable to contain an object-version identifier, the 4-byte local identifier is not the branch identifier or the version-within-branch identifier of the object version.

See Also

Branches in the Version Graph

Object Identifiers and Internal Identifiers

Object-Version Identifiers and Internal Object-Version Identifiers

Repository Identifiers

Version Graph